Focus lost when interacting with keyboard

I was created the flutter widget with focus node and handle the keyboard(up, down, right, left arrow) interaction. but framework removes the focus when outside the widget have any interactional widget(button).
Eg., In the below sample have the custom widget for handle focus through keyboard and it is not working well in desktop platform
Steps to Reproduce

Run the sample with below added code
Tap to request the focus to widget
Press multiple(3 to 4) times right arrow and press 2 times down arrow
Press up arrow to reproduce the issue

code sample

void main() {
  return runApp(
      MaterialApp(
    home: Scaffold(
      appBar: AppBar(
        title: Text('Demo'),
        leading: RawMaterialButton(
          child: Text('DemoButton'),
          onPressed: () {
            print('Pressed1');
          },
        ),
      ),
      body: CustomContainer(),
    ),
  )
      );
}

class CustomContainer extends StatefulWidget {
  @override
  _CustomContainerState createState() => _CustomContainerState();
}

class _CustomContainerState extends State<CustomContainer> {
  FocusNode _focusNode;
  int _selectedIndex = -1;

  @override
  void initState() {
    _focusNode = FocusNode();
    _selectedIndex = -1;
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Container(
        child: GestureDetector(
            onTap: () {
              _focusNode.requestFocus();
            },
            child: RawKeyboardListener(
                focusNode: _focusNode,
                onKey: (RawKeyEvent event) {
                  if (event.runtimeType != RawKeyDownEvent) {
                    return;
                  }

                  if (_selectedIndex == -1) {
                    setState(() {
                      _selectedIndex = 0;
                    });
                  } else if (event.logicalKey ==
                      LogicalKeyboardKey.arrowRight) {
                    if ((_selectedIndex + 1) % 10 == 0) {
                      return;
                    }

                    setState(() {
                      _selectedIndex = _selectedIndex + 1;
                    });
                  } else if (event.logicalKey == LogicalKeyboardKey.arrowLeft) {
                    if (_selectedIndex % 10 == 0) {
                      return;
                    }

                    setState(() {
                      _selectedIndex = _selectedIndex - 1;
                    });
                  } else if (event.logicalKey == LogicalKeyboardKey.arrowUp) {
                    if (_selectedIndex - 10 < 0) {
                      return;
                    }

                    setState(() {
                      _selectedIndex = _selectedIndex - 10;
                    });
                  } else if (event.logicalKey == LogicalKeyboardKey.arrowDown) {
                    if (_selectedIndex + 10 >= 50) {
                      return;
                    }

                    setState(() {
                      _selectedIndex = _selectedIndex + 10;
                    });
                  }
                },
                child: GridView.count(
                  crossAxisCount: 10,
                  children: List.generate(50, (index) {
                    return Container(
                      height: 20,
                      color: _selectedIndex == index ? Colors.red : null,
                      child: Text(
                        'Item $index',
                        style: Theme.of(context).textTheme.headline5,
                      ),
                    );
                  }),
                ))));
  }
}

Expected results:

Widget focus not removed

Actual results:

Widget focus removed

Note: This issue only occurred on desktop platforms(Mac Os, windows)
Issue Replication Video:
Mac OS with app bar leading button issue replication:
https://user-images.githubusercontent.com/44917578/110765743-7ece4380-827a-11eb-8c87-de524ba9fa5c.mov
Mac OS with out app bar leading button working fine:
https://user-images.githubusercontent.com/44917578/110765871-9dccd580-827a-11eb-9609-c747c7afc957.mov
Web with app bar leading button working fine
https://user-images.githubusercontent.com/44917578/110765983-b5a45980-827a-11eb-890a-8cf4b6ad58ac.mov

Flutter doctor
[✓] Flutter (Channel beta, 2.0.1, on Mac OS X 10.15.3 19D76 darwin-x64, locale en-US)                                                                                [!] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
    ✗ 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 11.3.1 out of date (12.0.1 is recommended).
      Download the latest version or update via the Mac App Store.
    ✗ Xcode requires additional components to be installed in order to run.
      Launch Xcode and install additional required components when prompted or run:
        sudo xcodebuild -runFirstLaunch
    ! CocoaPods 1.9.3 out of date (1.10.0 is recommended).
        CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your plugin usage on the Dart side.
        Without CocoaPods, plugins will not work on iOS or macOS.
        For more info, see https://flutter.dev/platform-plugins
      To upgrade see https://guides.cocoapods.org/using/getting-started.html#installation for instructions.
[✓] Chrome - develop for the web
[✓] Android Studio (version 3.6)
[✓] VS Code (version 1.52.0)
[✓] Connected device (2 available)

I was able to reproduce this issue.
Can you share how you get the expected behavior?

flutter doctor -v
[✓] Flutter (Channel master, 2.1.0-11.0.pre.205, on macOS 11.2.2 20D80 darwin-x64, locale en-AO)
    • Flutter version 2.1.0-11.0.pre.205 at /Users/pedromassango/Code/flutter_master
    • Framework revision 267f66a7dc (2 hours ago), 2021-03-10 23:15:03 -0500
    • Engine revision 1b68503bc8
    • Dart version 2.13.0 (build 2.13.0-125.0.dev)

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
    • Android SDK at /Users/pedromassango/Library/Android/sdk
    • Platform android-30, build-tools 30.0.2
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
    • All Android licenses accepted.

[!] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.4, Build version 12D4e
    ! CocoaPods 1.9.3 out of date (1.10.0 is recommended).
        CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your plugin usage on the Dart side.
        Without CocoaPods, plugins will not work on iOS or macOS.
        For more info, see https://flutter.dev/platform-plugins
      To upgrade see https://guides.cocoapods.org/using/getting-started.html#installation for instructions.

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

[✓] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)

[✓] IntelliJ IDEA Community Edition (version 2020.3.2)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 54.0.3
    • Dart plugin version 203.7759

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

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-x64     • macOS 11.2.2 20D80 darwin-x64
    • Chrome (web)    • chrome • web-javascript • Google Chrome 88.0.4324.192

! Doctor found issues in 1 category.

[✓] Flutter (Channel stable, 2.0.1, on macOS 11.2.2 20D80 darwin-x64, locale en-AO)
    • Flutter version 2.0.1 at /Users/pedromassango/Code/flutter_stable
    • Framework revision c5a4b4029c (7 days ago), 2021-03-04 09:47:48 -0800
    • Engine revision 40441def69
    • Dart version 2.12.0

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
    • Android SDK at /Users/pedromassango/Library/Android/sdk
    • Platform android-30, build-tools 30.0.2
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)
    • All Android licenses accepted.

[!] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.4, Build version 12D4e
    ! CocoaPods 1.9.3 out of date (1.10.0 is recommended).
        CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that responds to your plugin usage on the Dart side.
        Without CocoaPods, plugins will not work on iOS or macOS.
        For more info, see https://flutter.dev/platform-plugins
      To upgrade see https://guides.cocoapods.org/using/getting-started.html#installation for instructions.

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

[✓] Android Studio (version 4.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_242-release-1644-b3-6915495)

[✓] IntelliJ IDEA Community Edition (version 2020.3.2)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 54.0.3
    • Dart plugin version 203.7759

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

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-x64     • macOS 11.2.2 20D80 darwin-x64
    • Chrome (web)    • chrome • web-javascript • Google Chrome 88.0.4324.192

! Doctor found issues in 1 category.

@pedromassangocode ,
The above widget working fine when we remove the all the interactional widgets(buttons) from sample. In the above sample, interaction working fine as expected when we remove the appbar leading button widget.
Issue raised on sample have custom widget with any interactional widgets(buttons)

If the interactional widgets(buttons) placed below the custom widget then pressing down arrow key removes the focus
Else if the interactional widgets(buttons) placed above the custom widget then pressing up arrow key removes the focus
Else if the interactional widgets(buttons) placed right the custom widget then pressing right arrow key removes the focus
Else if the interactional widgets(buttons) placed left the custom widget then pressing left arrow key removes the focus

You can solve this by using FocusScope.
In your sample code, the reason focus was moved from the GestureDetector to RawMaterialButton because the scope is global. Meaning, if there is a potential focus node in the direction of key press, focus is shifted there, else it stays in the same widget.

Working code

import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

void main() {
  return runApp(MaterialApp(
    home: Scaffold(
      appBar: AppBar(
        title: Text('Demo'),
        leading: RawMaterialButton(
          child: Text('DemoButton'),
          onPressed: () {
            print('Pressed1');
          },
        ),
      ),
      body: CustomContainer(),
    ),
  ));
}

class CustomContainer extends StatefulWidget {
  @override
  _CustomContainerState createState() => _CustomContainerState();
}

class _CustomContainerState extends State {
  int _selectedIndex = -1;

  @override
  void initState() {
    _selectedIndex = -1;
    super.initState();
  }

  KeyEventResult onKey(FocusNode node, RawKeyEvent event) {
    if (event.runtimeType != RawKeyDownEvent) {
      return KeyEventResult.ignored;
    }

    if (_selectedIndex == -1) {
      setState(() {
        _selectedIndex = 0;
      });
    } else if (event.logicalKey == LogicalKeyboardKey.arrowRight) {
      if ((_selectedIndex + 1) % 10 == 0) {
        return KeyEventResult.handled;
      }

      setState(() {
        _selectedIndex = _selectedIndex + 1;
      });
    } else if (event.logicalKey == LogicalKeyboardKey.arrowLeft) {
      if (_selectedIndex % 10 == 0) {
        return KeyEventResult.handled;
      }

      setState(() {
        _selectedIndex = _selectedIndex - 1;
      });
    } else if (event.logicalKey == LogicalKeyboardKey.arrowUp) {
      if (_selectedIndex - 10 < 0) {
        return KeyEventResult.handled;
      }

      setState(() {
        _selectedIndex = _selectedIndex - 10;
      });
    } else if (event.logicalKey == LogicalKeyboardKey.arrowDown) {
      if (_selectedIndex + 10 >= 50) {
        return KeyEventResult.handled;
      }

      setState(() {
        _selectedIndex = _selectedIndex + 10;
      });
    }
    return KeyEventResult.ignored;
  }

  @override
  Widget build(BuildContext context) {
    return Container(
      child: FocusScope(
        onKey: onKey,
        child: GridView.count(
          crossAxisCount: 10,
          children: List.generate(50, (index) {
            return Container(
              height: 20,
              color: _selectedIndex == index ? Colors.red : null,
              child: Text(
                'Item $index',
                style: Theme.of(context).textTheme.headline5,
              ),
            );
          }),
        ),
      ),
    );
  }
}

@werainkhatri,
Thank you for your suggestion.
If we specify the focus scope then the focus does not moved to buttons after the grid view(by pressing tab). Above specified sample was simplified sample for reproducing issue.

Have the same issue on a smart tv device. are there any news / fixes for that issue?

I am able to reproduce this issue on the latest stable and master channels on macOS. Works fine on Chrome Web.

code sample

import 'package:flutter/material.dart';
import 'package:flutter/cupertino.dart';
import 'package:flutter/services.dart';

void main() {
  return runApp(
      MaterialApp(
        home: Scaffold(
          appBar: AppBar(
            title: Text('Demo'),
            leading: RawMaterialButton(
              child: Text('DemoButton'),
              onPressed: () {
                print('Pressed1');
              },
            ),
          ),
          body: CustomContainer(),
        ),
      )
  );
}

class CustomContainer extends StatefulWidget {
  @override
  _CustomContainerState createState() => _CustomContainerState();
}

class _CustomContainerState extends State<CustomContainer> {
 late FocusNode _focusNode;
  int _selectedIndex = -1;

  @override
  void initState() {
    _focusNode = FocusNode();
    _selectedIndex = -1;
    super.initState();
  }

  @override
  Widget build(BuildContext context) {
    return Container(
        child: GestureDetector(
            onTap: () {
              _focusNode.requestFocus();
            },
            child: RawKeyboardListener(
                focusNode: _focusNode,
                onKey: (RawKeyEvent event) {
                  if (event.runtimeType != RawKeyDownEvent) {
                    return;
                  }

                  if (_selectedIndex == -1) {
                    setState(() {
                      _selectedIndex = 0;
                    });
                  } else if (event.logicalKey ==
                      LogicalKeyboardKey.arrowRight) {
                    if ((_selectedIndex + 1) % 10 == 0) {
                      return;
                    }

                    setState(() {
                      _selectedIndex = _selectedIndex + 1;
                    });
                  } else if (event.logicalKey == LogicalKeyboardKey.arrowLeft) {
                    if (_selectedIndex % 10 == 0) {
                      return;
                    }

                    setState(() {
                      _selectedIndex = _selectedIndex - 1;
                    });
                  } else if (event.logicalKey == LogicalKeyboardKey.arrowUp) {
                    if (_selectedIndex - 10 < 0) {
                      return;
                    }

                    setState(() {
                      _selectedIndex = _selectedIndex - 10;
                    });
                  } else if (event.logicalKey == LogicalKeyboardKey.arrowDown) {
                    if (_selectedIndex + 10 >= 50) {
                      return;
                    }

                    setState(() {
                      _selectedIndex = _selectedIndex + 10;
                    });
                  }
                },
                child: GridView.count(
                  crossAxisCount: 10,
                  children: List.generate(50, (index) {
                    return Container(
                      height: 20,
                      color: _selectedIndex == index ? Colors.red : null,
                      child: Text(
                        'Item $index',
                        style: Theme.of(context).textTheme.headline5,
                      ),
                    );
                  }),
                ))));
  }
}

  flutter doctor -v
[✓] Flutter (Channel master, 3.11.0-2.0.pre.55, on macOS 13.3 22E252 darwin-arm64, locale en-NG)
    • Flutter version 3.11.0-2.0.pre.55 on channel master at /Users/dammya/fvm/versions/master
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 835b892d7f (2 days ago), 2023-05-07 01:30:22 +0530
    • Engine revision 23f730efbf
    • Dart version 3.1.0 (build 3.1.0-83.0.dev)
    • DevTools version 2.23.1

[✓] Android toolchain - develop for Android devices (Android SDK version 32.1.0-rc1)
    • Android SDK at /Users/dammya/Library/Android/sdk
    • Platform android-33, build-tools 32.1.0-rc1
    • ANDROID_HOME = /Users/dammya/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)
    • All Android licenses accepted.

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

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

[✓] Android Studio (version 2021.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
    • Java version OpenJDK Runtime Environment (build 11.0.12+0-b1504.28-7817840)

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

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

[✓] VS Code (version 1.78.0)
    • VS Code at /Users/dammya/.Trash/Visual Studio Code 20.07.05.app/Contents
    • Flutter extension version 3.50.0

[✓] Connected device (4 available)
    • sdk gphone arm64 (mobile)  • emulator-5554                        • android-arm64  • Android 11 (API 30) (emulator)
    • iPhone 14 Pro Max (mobile) • D7F3302D-D66F-4B89-B8CF-DBEE1CDB5449 • ios            • com.apple.CoreSimulator.SimRuntime.iOS-16-4 (simulator)
    • macOS (desktop)            • macos                                • darwin-arm64   • macOS 13.3 22E252 darwin-arm64
    • Chrome (web)               • chrome                               • web-javascript • Google Chrome 112.0.5615.137

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

• No issues found!

[✓] Flutter (Channel stable, 3.7.12, on macOS 13.3 22E252 darwin-arm64, locale
    en-NG)
    • Flutter version 3.7.12 on channel stable at /Users/dammya/sdks/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 4d9e56e694 (3 weeks ago), 2023-04-17 21:47:46 -0400
    • Engine revision 1a65d409c7
    • Dart version 2.19.6
    • DevTools version 2.20.1

[✓] Android toolchain - develop for Android devices (Android SDK version
    32.1.0-rc1)
    • Android SDK at /Users/dammya/Library/Android/sdk
    • Platform android-33, build-tools 32.1.0-rc1
    • ANDROID_HOME = /Users/dammya/Library/Android/sdk
    • Java binary at: /Applications/Android
      Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build
      11.0.12+0-b1504.28-7817840)
    • All Android licenses accepted.

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

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

[✓] Android Studio (version 2021.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
    • Java version OpenJDK Runtime Environment (build
      11.0.12+0-b1504.28-7817840)

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

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

[✓] VS Code (version 1.78.0)
    • VS Code at /Users/dammya/.Trash/Visual Studio Code 20.07.05.app/Contents
    • Flutter extension version 3.50.0

[✓] Connected device (4 available)
    • sdk gphone arm64 (mobile)  • emulator-5554                        •
      android-arm64  • Android 11 (API 30) (emulator)
    • iPhone 14 Pro Max (mobile) • D7F3302D-D66F-4B89-B8CF-DBEE1CDB5449 • ios
      • com.apple.CoreSimulator.SimRuntime.iOS-16-4 (simulator)
    • macOS (desktop)            • macos                                •
      darwin-arm64   • macOS 13.3 22E252 darwin-arm64
    • Chrome (web)               • chrome                               •
      web-javascript • Google Chrome 112.0.5615.137

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

• No issues found!


Error Connecting to VSCode

I'm currently running MATLAB 2024a on MacOS Sonoma 14.2.1, with 1.2.1 MATLAB VSCode extension.
Each time I open VSCode the MATLAB Language Server shows
(01:23:48) matlabls: Launching MATLAB...
(01:23:48) matlabls: MATLAB process (session 1) terminated
(01:23:48) matlabls: Shutting down MATLAB session 1
and I've met the same problem on MATLAB 2023b so I believe it's not a version bug. Also, it should not be my path setting problem since it seems to successfully start MATLAB process but immediately shut down.

In the matlabLog.txt, it shows
/Applications/MATLAB_R2024a.app/bin/matlab: line 397: awk: command not found
/Applications/MATLAB_R2024a.app/bin/matlab: line 413: expr: command not found
Could this be a matlab problem?

(11:01:50) matlabls: Log Directory: /var/folders/yb/bv4x7p390pz0hydvmmn1xmjw0000gp/T/matlabls_7719
(11:01:50) matlabls: Launching MATLAB...
(11:01:50) matlabls: MATLAB process (session 1) terminated
(11:01:50) matlabls: Shutting down MATLAB session 1

/Applications/MATLAB_R2024a.app

M1 Mac.

maca version. maca64 folder is inside.

The terminal successfully starts MATLAB.

I am getting the exact same errors as @Oatu4396. I am on RedHatEnterprise 8.9. MATLAB extensions 1.2.1. VScode 1.85.1. VScode remote SSH 0.107.1. I have reinstalled multiple times. I have tried matlab/r2021a, r2021b, r2022a, r2022b, r2023a, r2023b, and they all produce the same error. I have also rm -rf .vscode-server and reinstalled. I can successfully launch matlab -nodisplay just fine on the remote server. I also get the same output as @Oatu4396 when running the matlab -log -memmgr release -noAppIcon -nosplash -useStartupFolderPref -nodesktop command in the terminal or in the vscode-terminal.
Only two files in matlabls_1496100 got created, matlabLog.txt and languageServerLog.txt. The file matlabls_conn.json was never created. Here is a dump of all files in the temp folder:

Here is what the top of the VSCODE-OUTPUT section looks:

(1000+ lines of java code)


Quantum Software and Games [unitaryhack]

This issue is available during the UnitaryHACK:
Bounty: $100 and a free PIQUE t-shirt :1st_place_medal:
Note: Teams of 2-5 people are suggested :busts_in_silhouette:
Design a tutorial where you cover one or more of the possible areas: Quantum Software or Quantum Games.
You should explain step by step each essential concept to understand the theory of your tutorial, and attach the code as the desired result and the necessary dependencies to be able to run it. You should focus on the educational part and explain each section of the code with references, and in the final part you should add a note about how you got started in this area of quantum computing. The aim is that your project will inspire others :smile: .
If you have a previously made project for another hackathon or school project, please note that this tutorial will be open source and all credits will be given to you, as well as  to get an idea of what we expect as a result, you can check out our website: fullstackquantumcomputation :computer: .
If you have doubts about which idea could be useful for your tutorial, we list the following possible tutorials that can be done :bulb: :

Idea one: Explains fundamental concepts with a quantum computing framework.
Idea two: Give an application using a quantum algorithm such as Grover's algorithm, Shor and others.
Idea three: Design a tutorial to decompose circuits in the Clifford+T group.
Idea four: Design a game that uses a concept from quantum computing.
Idea five: Design a game that helps explain a concept, algorithm of quantum computing.
Idea six: Design a quantum computing reminder bot for the Quantum Universal Education discord server.

If you have your own idea, and it follows the above requirements you can use it :smiley:  just reply to this Issue to confirm your idea.

I have written a tutorial on explaining idea # 1. I explained some fundamental concepts like Quantum Circuits are reversible by executing basic quantum circuits is qiskit, and demonstrated bloch sphere rotations in qiskit framework. I am sharing the code link here with you: Here it is

I have written a tutorial on explaining idea # 1. I explained some fundamental concepts like Quantum Circuits are reversible by executing basic quantum circuits is qiskit, and demonstrated bloch sphere rotations in qiskit framework. I am sharing the code link here with you: Here it is

Hi @SakibulIslamSazzad , we like the tutorial but would like if it could be more interactive for the bounty of Quantum Software and Games.  The concept of reversibility is important --- is it possible to add a simple game to the jupyter notebook to enforce the concept?  For instance, an idea is to display a matrix, and ask the user whether it is reversible, and/or to find what is its inverse.

Hello !
Can use of Grover's Search algorithm for problems like Pattern Matching and Quantum Amplitude Estimation would be a good thing to add as a tutorial in correspondence to idea # 2 ?

Hi @pafloxy !
Yes that is a good idea for idea 2 :+1:

@MaldoAlberto Okay me and @neelkanthrawat are working on # 2 ! we will try to add some other algorithms also!

Hi @divshacker and @Varary73 ! Thank you very much for participating in this issue, there are only two very small comments, in the case of @divshacker you can explain more about the encoding and in the case of @Varary73 you can add images that support the rules of the game, although there is already a demo but only for support. For these considerations, if you agree, we would like to split the bounty $50 for each of the jobs.

@MaldoAlberto I have updated the issue by adding the required images.
And yeah, sharing the bounty is cool with me :)
Thanks

I have written a tutorial on explaining idea # 1. I explained some fundamental concepts like Quantum Circuits are reversible by executing basic quantum circuits is qiskit, and demonstrated bloch sphere rotations in qiskit framework. I am sharing the code link here with you: Here it is

Hi @SakibulIslamSazzad , we like the tutorial but would like if it could be more interactive for the bounty of Quantum Software and Games. The concept of reversibility is important --- is it possible to add a simple game to the jupyter notebook to enforce the concept? For instance, an idea is to display a matrix, and ask the user whether it is reversible, and/or to find what is its inverse.

yes, I am on it as you suggested. I will share the link here once again.

Hi @pafloxy ! Yes that is a good idea for idea 2 +1

@MaldoAlberto Since understanding QAE requires working knowledge of both Grover's Search algorithm and the Quantum Phase Estimation should I add detailed explanation of both of them ? But that might make the tutorial uneccessarily long to follow , rather I might point the reader to some of the resources out there alreaady.
And any suggestion towards interactivity of the tutorials would be helpful !

Hi @lia-approves @MaldoAlberto I am struggling to link my pull request to this issue. I created a quantum game to check reversibility or not as you suggested. Can you please check the pull request I made and linked to this issue? Here is my pull request link on this repository: https://github.com/Quantum-Universal-Education/Quantum-Universal-Education.github.io/pull/23. Thank you

Hi @pafloxy! First of all this issue has already obtained the bounty, you can continue if you want to continue for a certificate of participation of the unitary fund and a t-shirt of Quantum Universal Education.
If you agree to continue, you must explain the important parts of the application, obviously not all the theory, but use a simple quantum circuit and explain its usefulness and say that it will do the same, you can also rely on other resources to explain all the steps, the important thing is to explain your code and why you arrived at that result. If it is something extensive, put a brief description and the reference for more details.

hi @SakibulIslamSazzad
First this issue has already obtained the bounty, you can continue if you want to continue for a certificate of participation of the unitary fund and a t-shirt of Quantum Universal Education.
If you agree to continue, your game is the same as the previous tutorial, you can approach with other gates AND the game doesn't show how to win or how to lose, I don't understand it.


[WIP] Reduce duplication in Azure Pipelines CI script

FYI there is a clangformat  build target. Could you reuse that it the CI?


Synthesis failed for PageSpeedOnline

Hello! Autosynth couldn't regenerate PageSpeedOnline. :broken_heart:
Here's the output from running synth.py:
2020-05-09 05:16:50 [INFO] logs will be written to: /tmpfs/src/github/synthtool/logs/googleapis/elixir-google-api
2020-05-09 05:16:50,702 autosynth > logs will be written to: /tmpfs/src/github/synthtool/logs/googleapis/elixir-google-api
Switched to branch 'autosynth-pagespeedonline'
2020-05-09 05:16:52 [INFO] Running synthtool
2020-05-09 05:16:52,456 autosynth > Running synthtool
2020-05-09 05:16:52 [INFO] ['/tmpfs/src/github/synthtool/env/bin/python3', '-m', 'synthtool', '--metadata', 'clients/page_speed_online/synth.metadata', 'synth.py', '--']
2020-05-09 05:16:52,456 autosynth > ['/tmpfs/src/github/synthtool/env/bin/python3', '-m', 'synthtool', '--metadata', 'clients/page_speed_online/synth.metadata', 'synth.py', '--']
2020-05-09 05:16:52,663 synthtool > Executing /home/kbuilder/.cache/synthtool/elixir-google-api/synth.py.
On branch autosynth-pagespeedonline
nothing to commit, working tree clean
2020-05-09 05:16:52,739 synthtool > Cloning https://github.com/googleapis/elixir-google-api.git.
2020-05-09 05:16:53,236 synthtool > Running: docker run --rm -v/home/kbuilder/.cache/synthtool/elixir-google-api:/workspace -v/var/run/docker.sock:/var/run/docker.sock -e USER_GROUP=1000:1000 -w /workspace gcr.io/cloud-devrel-public-resources/elixir19 scripts/generate_client.sh PageSpeedOnline
2020-05-09 05:16:56,998 synthtool > No files in sources /home/kbuilder/.cache/synthtool/elixir-google-api/clients were copied. Does the source contain files?
Traceback (most recent call last):
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmpfs/src/github/synthtool/synthtool/__main__.py", line 102, in <module>
    main()
  File "/tmpfs/src/github/synthtool/env/lib/python3.6/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/tmpfs/src/github/synthtool/env/lib/python3.6/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/tmpfs/src/github/synthtool/env/lib/python3.6/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/tmpfs/src/github/synthtool/env/lib/python3.6/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/tmpfs/src/github/synthtool/synthtool/__main__.py", line 94, in main
    spec.loader.exec_module(synth_module)  # type: ignore
  File "/tmpfs/src/github/synthtool/synthtool/metadata.py", line 180, in __exit__
    write(self.metadata_file_path)
  File "/tmpfs/src/github/synthtool/synthtool/metadata.py", line 112, in write
    with open(outfile, "w") as fh:
FileNotFoundError: [Errno 2] No such file or directory: 'clients/page_speed_online/synth.metadata'
2020-05-09 05:16:57 [ERROR] Synthesis failed
2020-05-09 05:16:57,028 autosynth > Synthesis failed
Traceback (most recent call last):
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 599, in <module>
    main()
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 471, in main
    return _inner_main(temp_dir)
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 549, in _inner_main
    ).synthesize(base_synth_log_path)
  File "/tmpfs/src/github/synthtool/autosynth/synthesizer.py", line 118, in synthesize
    synth_proc.check_returncode()  # Raise an exception.
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/subprocess.py", line 389, in check_returncode
    self.stderr)
subprocess.CalledProcessError: Command '['/tmpfs/src/github/synthtool/env/bin/python3', '-m', 'synthtool', '--metadata', 'clients/page_speed_online/synth.metadata', 'synth.py', '--', 'PageSpeedOnline']' returned non-zero exit status 1.

Google internal developers can see the full log here.

Autosynth is still having trouble generating PageSpeedOnline. :sob:
Here's the output from running synth.py:
2020-05-11 05:15:11 [INFO] logs will be written to: /tmpfs/src/github/synthtool/logs/googleapis/elixir-google-api
2020-05-11 05:15:11,173 autosynth > logs will be written to: /tmpfs/src/github/synthtool/logs/googleapis/elixir-google-api
Switched to branch 'autosynth-pagespeedonline'
2020-05-11 05:15:13 [INFO] Running synthtool
2020-05-11 05:15:13,170 autosynth > Running synthtool
2020-05-11 05:15:13 [INFO] ['/tmpfs/src/github/synthtool/env/bin/python3', '-m', 'synthtool', '--metadata', 'clients/page_speed_online/synth.metadata', 'synth.py', '--']
2020-05-11 05:15:13,170 autosynth > ['/tmpfs/src/github/synthtool/env/bin/python3', '-m', 'synthtool', '--metadata', 'clients/page_speed_online/synth.metadata', 'synth.py', '--']
2020-05-11 05:15:13,351 synthtool > Executing /home/kbuilder/.cache/synthtool/elixir-google-api/synth.py.
On branch autosynth-pagespeedonline
nothing to commit, working tree clean
2020-05-11 05:15:13,701 synthtool > Cloning https://github.com/googleapis/elixir-google-api.git.
2020-05-11 05:15:14,510 synthtool > Running: docker run --rm -v/home/kbuilder/.cache/synthtool/elixir-google-api:/workspace -v/var/run/docker.sock:/var/run/docker.sock -e USER_GROUP=1000:1000 -w /workspace gcr.io/cloud-devrel-public-resources/elixir19 scripts/generate_client.sh PageSpeedOnline
2020-05-11 05:15:18,831 synthtool > No files in sources /home/kbuilder/.cache/synthtool/elixir-google-api/clients were copied. Does the source contain files?
Traceback (most recent call last):
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmpfs/src/github/synthtool/synthtool/__main__.py", line 102, in <module>
    main()
  File "/tmpfs/src/github/synthtool/env/lib/python3.6/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/tmpfs/src/github/synthtool/env/lib/python3.6/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/tmpfs/src/github/synthtool/env/lib/python3.6/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/tmpfs/src/github/synthtool/env/lib/python3.6/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/tmpfs/src/github/synthtool/synthtool/__main__.py", line 94, in main
    spec.loader.exec_module(synth_module)  # type: ignore
  File "/tmpfs/src/github/synthtool/synthtool/metadata.py", line 180, in __exit__
    write(self.metadata_file_path)
  File "/tmpfs/src/github/synthtool/synthtool/metadata.py", line 112, in write
    with open(outfile, "w") as fh:
FileNotFoundError: [Errno 2] No such file or directory: 'clients/page_speed_online/synth.metadata'
2020-05-11 05:15:18 [ERROR] Synthesis failed
2020-05-11 05:15:18,856 autosynth > Synthesis failed
Traceback (most recent call last):
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 599, in <module>
    main()
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 471, in main
    return _inner_main(temp_dir)
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 549, in _inner_main
    ).synthesize(base_synth_log_path)
  File "/tmpfs/src/github/synthtool/autosynth/synthesizer.py", line 118, in synthesize
    synth_proc.check_returncode()  # Raise an exception.
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/subprocess.py", line 389, in check_returncode
    self.stderr)
subprocess.CalledProcessError: Command '['/tmpfs/src/github/synthtool/env/bin/python3', '-m', 'synthtool', '--metadata', 'clients/page_speed_online/synth.metadata', 'synth.py', '--', 'PageSpeedOnline']' returned non-zero exit status 1.

Google internal developers can see the full log here.

Autosynth is still having trouble generating PageSpeedOnline. :sob:
Here's the output from running synth.py:
2020-05-11 15:18:01 [INFO] logs will be written to: /tmpfs/src/github/synthtool/logs/googleapis/elixir-google-api
2020-05-11 15:18:01,055 autosynth > logs will be written to: /tmpfs/src/github/synthtool/logs/googleapis/elixir-google-api
Switched to branch 'autosynth-pagespeedonline'
2020-05-11 15:18:02 [INFO] Running synthtool
2020-05-11 15:18:02,837 autosynth > Running synthtool
2020-05-11 15:18:02 [INFO] ['/tmpfs/src/github/synthtool/env/bin/python3', '-m', 'synthtool', '--metadata', 'clients/page_speed_online/synth.metadata', 'synth.py', '--']
2020-05-11 15:18:02,837 autosynth > ['/tmpfs/src/github/synthtool/env/bin/python3', '-m', 'synthtool', '--metadata', 'clients/page_speed_online/synth.metadata', 'synth.py', '--']
2020-05-11 15:18:03,048 synthtool > Executing /home/kbuilder/.cache/synthtool/elixir-google-api/synth.py.
On branch autosynth-pagespeedonline
nothing to commit, working tree clean
2020-05-11 15:18:03,310 synthtool > Cloning https://github.com/googleapis/elixir-google-api.git.
2020-05-11 15:18:03,802 synthtool > Running: docker run --rm -v/home/kbuilder/.cache/synthtool/elixir-google-api:/workspace -v/var/run/docker.sock:/var/run/docker.sock -e USER_GROUP=1000:1000 -w /workspace gcr.io/cloud-devrel-public-resources/elixir19 scripts/generate_client.sh PageSpeedOnline
/workspace /workspace
The mix.lock file was generated with a newer version of Hex. Update your client by running `mix local.hex` to avoid losing data.
Resolving Hex dependencies...
Dependency resolution completed:
Unchanged:
  certifi 2.5.1
  google_api_discovery 0.7.0
  google_gax 0.3.2
  hackney 1.15.2
  idna 6.0.0
  jason 1.2.0
  metrics 1.0.1
  mime 1.3.1
  mimerl 1.2.0
  oauth2 0.9.4
  parse_trans 3.3.0
  poison 3.1.0
  ssl_verify_fun 1.1.5
  temp 0.4.7
  tesla 1.3.3
  unicode_util_compat 0.4.1
A new Hex version is available (0.20.1 < 0.20.5), please update with `mix local.hex`
All dependencies are up to date
The mix.lock file was generated with a newer version of Hex. Update your client by running `mix local.hex` to avoid losing data.

22:18:06.295 [info]  FETCHING: https://www.googleapis.com/discovery/v1/apis/pagespeedonline/v2/rest

22:18:06.434 [info]  FOUND: https://www.googleapis.com/discovery/v1/apis/pagespeedonline/v2/rest
Revision check: old=20191206, new=20191206, generating=true
Creating leading directories
Writing PagespeedApiFormatStringV2 to clients/page_speed_online/lib/google_api/page_speed_online/v2/model/pagespeed_api_format_string_v2.ex.
Writing PagespeedApiFormatStringV2Args to clients/page_speed_online/lib/google_api/page_speed_online/v2/model/pagespeed_api_format_string_v2_args.ex.
Writing PagespeedApiFormatStringV2ArgsRects to clients/page_speed_online/lib/google_api/page_speed_online/v2/model/pagespeed_api_format_string_v2_args_rects.ex.
Writing PagespeedApiFormatStringV2ArgsSecondaryRects to clients/page_speed_online/lib/google_api/page_speed_online/v2/model/pagespeed_api_format_string_v2_args_secondary_rects.ex.
Writing PagespeedApiImageV2 to clients/page_speed_online/lib/google_api/page_speed_online/v2/model/pagespeed_api_image_v2.ex.
Writing PagespeedApiImageV2PageRect to clients/page_speed_online/lib/google_api/page_speed_online/v2/model/pagespeed_api_image_v2_page_rect.ex.
Writing Result to clients/page_speed_online/lib/google_api/page_speed_online/v2/model/result.ex.
Writing ResultFormattedResults to clients/page_speed_online/lib/google_api/page_speed_online/v2/model/result_formatted_results.ex.
Writing ResultPageStats to clients/page_speed_online/lib/google_api/page_speed_online/v2/model/result_page_stats.ex.
Writing ResultVersion to clients/page_speed_online/lib/google_api/page_speed_online/v2/model/result_version.ex.
Writing Pagespeedapi to clients/page_speed_online/lib/google_api/page_speed_online/v2/api/pagespeedapi.ex.
Writing connection.ex.
Writing metadata.ex.
Writing mix.exs
Writing README.md
Writing LICENSE
Writing .gitignore
Writing config/config.exs
Writing test/test_helper.exs

22:18:06.539 [info]  FETCHING: https://www.googleapis.com/discovery/v1/apis/pagespeedonline/v4/rest

22:18:06.562 [info]  FOUND: https://www.googleapis.com/discovery/v1/apis/pagespeedonline/v4/rest
Revision check: old=20191206, new=20191206, generating=true
Creating leading directories
Writing PagespeedApiFormatStringV4 to clients/page_speed_online/lib/google_api/page_speed_online/v4/model/pagespeed_api_format_string_v4.ex.
Writing PagespeedApiFormatStringV4Args to clients/page_speed_online/lib/google_api/page_speed_online/v4/model/pagespeed_api_format_string_v4_args.ex.
Writing PagespeedApiFormatStringV4ArgsRects to clients/page_speed_online/lib/google_api/page_speed_online/v4/model/pagespeed_api_format_string_v4_args_rects.ex.
Writing PagespeedApiFormatStringV4ArgsSecondaryRects to clients/page_speed_online/lib/google_api/page_speed_online/v4/model/pagespeed_api_format_string_v4_args_secondary_rects.ex.
Writing PagespeedApiImageV4 to clients/page_speed_online/lib/google_api/page_speed_online/v4/model/pagespeed_api_image_v4.ex.
Writing PagespeedApiImageV4PageRect to clients/page_speed_online/lib/google_api/page_speed_online/v4/model/pagespeed_api_image_v4_page_rect.ex.
Writing PagespeedApiPagespeedResponseV4 to clients/page_speed_online/lib/google_api/page_speed_online/v4/model/pagespeed_api_pagespeed_response_v4.ex.
Writing PagespeedApiPagespeedResponseV4FormattedResults to clients/page_speed_online/lib/google_api/page_speed_online/v4/model/pagespeed_api_pagespeed_response_v4_formatted_results.ex.
Writing PagespeedApiPagespeedResponseV4LoadingExperience to clients/page_speed_online/lib/google_api/page_speed_online/v4/model/pagespeed_api_pagespeed_response_v4_loading_experience.ex.
Writing PagespeedApiPagespeedResponseV4PageStats to clients/page_speed_online/lib/google_api/page_speed_online/v4/model/pagespeed_api_pagespeed_response_v4_page_stats.ex.
Writing PagespeedApiPagespeedResponseV4Version to clients/page_speed_online/lib/google_api/page_speed_online/v4/model/pagespeed_api_pagespeed_response_v4_version.ex.
Writing Pagespeedapi to clients/page_speed_online/lib/google_api/page_speed_online/v4/api/pagespeedapi.ex.
Writing connection.ex.
Writing metadata.ex.
Writing mix.exs
Writing README.md
Writing LICENSE
Writing .gitignore
Writing config/config.exs
Writing test/test_helper.exs

22:18:06.615 [info]  FETCHING: https://www.googleapis.com/discovery/v1/apis/pagespeedonline/v5/rest

22:18:06.627 [info]  FOUND: https://www.googleapis.com/discovery/v1/apis/pagespeedonline/v5/rest
Revision check: old=20200318, new=20200318, generating=true
Creating leading directories
Writing AuditRefs to clients/page_speed_online/lib/google_api/page_speed_online/v5/model/audit_refs.ex.
Writing Bucket to clients/page_speed_online/lib/google_api/page_speed_online/v5/model/bucket.ex.
Writing Categories to clients/page_speed_online/lib/google_api/page_speed_online/v5/model/categories.ex.
Writing CategoryGroupV5 to clients/page_speed_online/lib/google_api/page_speed_online/v5/model/category_group_v5.ex.
Writing ConfigSettings to clients/page_speed_online/lib/google_api/page_speed_online/v5/model/config_settings.ex.
Writing Environment to clients/page_speed_online/lib/google_api/page_speed_online/v5/model/environment.ex.
Writing I18n to clients/page_speed_online/lib/google_api/page_speed_online/v5/model/i18n.ex.
Writing LighthouseAuditResultV5 to clients/page_speed_online/lib/google_api/page_speed_online/v5/model/lighthouse_audit_result_v5.ex.
Writing LighthouseCategoryV5 to clients/page_speed_online/lib/google_api/page_speed_online/v5/model/lighthouse_category_v5.ex.
Writing LighthouseResultV5 to clients/page_speed_online/lib/google_api/page_speed_online/v5/model/lighthouse_result_v5.ex.
Writing PagespeedApiLoadingExperienceV5 to clients/page_speed_online/lib/google_api/page_speed_online/v5/model/pagespeed_api_loading_experience_v5.ex.
Writing PagespeedApiPagespeedResponseV5 to clients/page_speed_online/lib/google_api/page_speed_online/v5/model/pagespeed_api_pagespeed_response_v5.ex.
Writing PagespeedVersion to clients/page_speed_online/lib/google_api/page_speed_online/v5/model/pagespeed_version.ex.
Writing RendererFormattedStrings to clients/page_speed_online/lib/google_api/page_speed_online/v5/model/renderer_formatted_strings.ex.
Writing RuntimeError to clients/page_speed_online/lib/google_api/page_speed_online/v5/model/runtime_error.ex.
Writing StackPack to clients/page_speed_online/lib/google_api/page_speed_online/v5/model/stack_pack.ex.
Writing Timing to clients/page_speed_online/lib/google_api/page_speed_online/v5/model/timing.ex.
Writing UserPageLoadMetricV5 to clients/page_speed_online/lib/google_api/page_speed_online/v5/model/user_page_load_metric_v5.ex.
Writing Pagespeedapi to clients/page_speed_online/lib/google_api/page_speed_online/v5/api/pagespeedapi.ex.
Writing connection.ex.
Writing metadata.ex.
Writing mix.exs
Writing README.md
Writing LICENSE
Writing .gitignore
Writing config/config.exs
Writing test/test_helper.exs
fixing file permissions
2020-05-11 15:18:07,551 synthtool > No files in sources /home/kbuilder/.cache/synthtool/elixir-google-api/clients were copied. Does the source contain files?
Traceback (most recent call last):
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmpfs/src/github/synthtool/synthtool/__main__.py", line 102, in <module>
    main()
  File "/tmpfs/src/github/synthtool/env/lib/python3.6/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/tmpfs/src/github/synthtool/env/lib/python3.6/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/tmpfs/src/github/synthtool/env/lib/python3.6/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/tmpfs/src/github/synthtool/env/lib/python3.6/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/tmpfs/src/github/synthtool/synthtool/__main__.py", line 94, in main
    spec.loader.exec_module(synth_module)  # type: ignore
  File "/tmpfs/src/github/synthtool/synthtool/metadata.py", line 180, in __exit__
    write(self.metadata_file_path)
  File "/tmpfs/src/github/synthtool/synthtool/metadata.py", line 112, in write
    with open(outfile, "w") as fh:
FileNotFoundError: [Errno 2] No such file or directory: 'clients/page_speed_online/synth.metadata'
2020-05-11 15:18:07 [ERROR] Synthesis failed
2020-05-11 15:18:07,582 autosynth > Synthesis failed
Traceback (most recent call last):
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 599, in <module>
    main()
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 471, in main
    return _inner_main(temp_dir)
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 549, in _inner_main
    ).synthesize(base_synth_log_path)
  File "/tmpfs/src/github/synthtool/autosynth/synthesizer.py", line 118, in synthesize
    synth_proc.check_returncode()  # Raise an exception.
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/subprocess.py", line 389, in check_returncode
    self.stderr)
subprocess.CalledProcessError: Command '['/tmpfs/src/github/synthtool/env/bin/python3', '-m', 'synthtool', '--metadata', 'clients/page_speed_online/synth.metadata', 'synth.py', '--', 'PageSpeedOnline']' returned non-zero exit status 1.

Google internal developers can see the full log here.

Autosynth is still having trouble generating PageSpeedOnline. :sob:
Here's the output from running synth.py:
2020-05-12 05:17:33 [INFO] logs will be written to: /tmpfs/src/github/synthtool/logs/googleapis/elixir-google-api
2020-05-12 05:17:33,310 autosynth > logs will be written to: /tmpfs/src/github/synthtool/logs/googleapis/elixir-google-api
Switched to branch 'autosynth-pagespeedonline'
2020-05-12 05:17:34 [INFO] Running synthtool
2020-05-12 05:17:34,944 autosynth > Running synthtool
2020-05-12 05:17:34 [INFO] ['/tmpfs/src/github/synthtool/env/bin/python3', '-m', 'synthtool', '--metadata', 'clients/page_speed_online/synth.metadata', 'synth.py', '--']
2020-05-12 05:17:34,944 autosynth > ['/tmpfs/src/github/synthtool/env/bin/python3', '-m', 'synthtool', '--metadata', 'clients/page_speed_online/synth.metadata', 'synth.py', '--']
2020-05-12 05:17:35,163 synthtool > Executing /home/kbuilder/.cache/synthtool/elixir-google-api/synth.py.
On branch autosynth-pagespeedonline
nothing to commit, working tree clean
2020-05-12 05:17:35,458 synthtool > Cloning https://github.com/googleapis/elixir-google-api.git.
2020-05-12 05:17:35,939 synthtool > Running: docker run --rm -v/home/kbuilder/.cache/synthtool/elixir-google-api:/workspace -v/var/run/docker.sock:/var/run/docker.sock -e USER_GROUP=1000:1000 -w /workspace gcr.io/cloud-devrel-public-resources/elixir19 scripts/generate_client.sh PageSpeedOnline
/workspace /workspace
The mix.lock file was generated with a newer version of Hex. Update your client by running `mix local.hex` to avoid losing data.
Resolving Hex dependencies...
Dependency resolution completed:
Unchanged:
  certifi 2.5.1
  google_api_discovery 0.7.0
  google_gax 0.3.2
  hackney 1.15.2
  idna 6.0.0
  jason 1.2.0
  metrics 1.0.1
  mime 1.3.1
  mimerl 1.2.0
  oauth2 0.9.4
  parse_trans 3.3.0
  poison 3.1.0
  ssl_verify_fun 1.1.5
  temp 0.4.7
  tesla 1.3.3
  unicode_util_compat 0.4.1
A new Hex version is available (0.20.1 < 0.20.5), please update with `mix local.hex`
All dependencies are up to date
The mix.lock file was generated with a newer version of Hex. Update your client by running `mix local.hex` to avoid losing data.

12:17:39.421 [info]  FETCHING: https://www.googleapis.com/discovery/v1/apis/pagespeedonline/v2/rest

12:17:39.569 [info]  FOUND: https://www.googleapis.com/discovery/v1/apis/pagespeedonline/v2/rest
Revision check: old=20191206, new=20191206, generating=true
Creating leading directories
Writing PagespeedApiFormatStringV2 to clients/page_speed_online/lib/google_api/page_speed_online/v2/model/pagespeed_api_format_string_v2.ex.
Writing PagespeedApiFormatStringV2Args to clients/page_speed_online/lib/google_api/page_speed_online/v2/model/pagespeed_api_format_string_v2_args.ex.
Writing PagespeedApiFormatStringV2ArgsRects to clients/page_speed_online/lib/google_api/page_speed_online/v2/model/pagespeed_api_format_string_v2_args_rects.ex.
Writing PagespeedApiFormatStringV2ArgsSecondaryRects to clients/page_speed_online/lib/google_api/page_speed_online/v2/model/pagespeed_api_format_string_v2_args_secondary_rects.ex.
Writing PagespeedApiImageV2 to clients/page_speed_online/lib/google_api/page_speed_online/v2/model/pagespeed_api_image_v2.ex.
Writing PagespeedApiImageV2PageRect to clients/page_speed_online/lib/google_api/page_speed_online/v2/model/pagespeed_api_image_v2_page_rect.ex.
Writing Result to clients/page_speed_online/lib/google_api/page_speed_online/v2/model/result.ex.
Writing ResultFormattedResults to clients/page_speed_online/lib/google_api/page_speed_online/v2/model/result_formatted_results.ex.
Writing ResultPageStats to clients/page_speed_online/lib/google_api/page_speed_online/v2/model/result_page_stats.ex.
Writing ResultVersion to clients/page_speed_online/lib/google_api/page_speed_online/v2/model/result_version.ex.
Writing Pagespeedapi to clients/page_speed_online/lib/google_api/page_speed_online/v2/api/pagespeedapi.ex.
Writing connection.ex.
Writing metadata.ex.
Writing mix.exs
Writing README.md
Writing LICENSE
Writing .gitignore
Writing config/config.exs
Writing test/test_helper.exs

12:17:39.670 [info]  FETCHING: https://www.googleapis.com/discovery/v1/apis/pagespeedonline/v4/rest

12:17:39.708 [info]  FOUND: https://www.googleapis.com/discovery/v1/apis/pagespeedonline/v4/rest
Revision check: old=20191206, new=20191206, generating=true
Creating leading directories
Writing PagespeedApiFormatStringV4 to clients/page_speed_online/lib/google_api/page_speed_online/v4/model/pagespeed_api_format_string_v4.ex.
Writing PagespeedApiFormatStringV4Args to clients/page_speed_online/lib/google_api/page_speed_online/v4/model/pagespeed_api_format_string_v4_args.ex.
Writing PagespeedApiFormatStringV4ArgsRects to clients/page_speed_online/lib/google_api/page_speed_online/v4/model/pagespeed_api_format_string_v4_args_rects.ex.
Writing PagespeedApiFormatStringV4ArgsSecondaryRects to clients/page_speed_online/lib/google_api/page_speed_online/v4/model/pagespeed_api_format_string_v4_args_secondary_rects.ex.
Writing PagespeedApiImageV4 to clients/page_speed_online/lib/google_api/page_speed_online/v4/model/pagespeed_api_image_v4.ex.
Writing PagespeedApiImageV4PageRect to clients/page_speed_online/lib/google_api/page_speed_online/v4/model/pagespeed_api_image_v4_page_rect.ex.
Writing PagespeedApiPagespeedResponseV4 to clients/page_speed_online/lib/google_api/page_speed_online/v4/model/pagespeed_api_pagespeed_response_v4.ex.
Writing PagespeedApiPagespeedResponseV4FormattedResults to clients/page_speed_online/lib/google_api/page_speed_online/v4/model/pagespeed_api_pagespeed_response_v4_formatted_results.ex.
Writing PagespeedApiPagespeedResponseV4LoadingExperience to clients/page_speed_online/lib/google_api/page_speed_online/v4/model/pagespeed_api_pagespeed_response_v4_loading_experience.ex.
Writing PagespeedApiPagespeedResponseV4PageStats to clients/page_speed_online/lib/google_api/page_speed_online/v4/model/pagespeed_api_pagespeed_response_v4_page_stats.ex.
Writing PagespeedApiPagespeedResponseV4Version to clients/page_speed_online/lib/google_api/page_speed_online/v4/model/pagespeed_api_pagespeed_response_v4_version.ex.
Writing Pagespeedapi to clients/page_speed_online/lib/google_api/page_speed_online/v4/api/pagespeedapi.ex.
Writing connection.ex.
Writing metadata.ex.
Writing mix.exs
Writing README.md
Writing LICENSE
Writing .gitignore
Writing config/config.exs
Writing test/test_helper.exs

12:17:39.762 [info]  FETCHING: https://www.googleapis.com/discovery/v1/apis/pagespeedonline/v5/rest

12:17:39.775 [info]  FOUND: https://www.googleapis.com/discovery/v1/apis/pagespeedonline/v5/rest
Revision check: old=20200318, new=20200318, generating=true
Creating leading directories
Writing AuditRefs to clients/page_speed_online/lib/google_api/page_speed_online/v5/model/audit_refs.ex.
Writing Bucket to clients/page_speed_online/lib/google_api/page_speed_online/v5/model/bucket.ex.
Writing Categories to clients/page_speed_online/lib/google_api/page_speed_online/v5/model/categories.ex.
Writing CategoryGroupV5 to clients/page_speed_online/lib/google_api/page_speed_online/v5/model/category_group_v5.ex.
Writing ConfigSettings to clients/page_speed_online/lib/google_api/page_speed_online/v5/model/config_settings.ex.
Writing Environment to clients/page_speed_online/lib/google_api/page_speed_online/v5/model/environment.ex.
Writing I18n to clients/page_speed_online/lib/google_api/page_speed_online/v5/model/i18n.ex.
Writing LighthouseAuditResultV5 to clients/page_speed_online/lib/google_api/page_speed_online/v5/model/lighthouse_audit_result_v5.ex.
Writing LighthouseCategoryV5 to clients/page_speed_online/lib/google_api/page_speed_online/v5/model/lighthouse_category_v5.ex.
Writing LighthouseResultV5 to clients/page_speed_online/lib/google_api/page_speed_online/v5/model/lighthouse_result_v5.ex.
Writing PagespeedApiLoadingExperienceV5 to clients/page_speed_online/lib/google_api/page_speed_online/v5/model/pagespeed_api_loading_experience_v5.ex.
Writing PagespeedApiPagespeedResponseV5 to clients/page_speed_online/lib/google_api/page_speed_online/v5/model/pagespeed_api_pagespeed_response_v5.ex.
Writing PagespeedVersion to clients/page_speed_online/lib/google_api/page_speed_online/v5/model/pagespeed_version.ex.
Writing RendererFormattedStrings to clients/page_speed_online/lib/google_api/page_speed_online/v5/model/renderer_formatted_strings.ex.
Writing RuntimeError to clients/page_speed_online/lib/google_api/page_speed_online/v5/model/runtime_error.ex.
Writing StackPack to clients/page_speed_online/lib/google_api/page_speed_online/v5/model/stack_pack.ex.
Writing Timing to clients/page_speed_online/lib/google_api/page_speed_online/v5/model/timing.ex.
Writing UserPageLoadMetricV5 to clients/page_speed_online/lib/google_api/page_speed_online/v5/model/user_page_load_metric_v5.ex.
Writing Pagespeedapi to clients/page_speed_online/lib/google_api/page_speed_online/v5/api/pagespeedapi.ex.
Writing connection.ex.
Writing metadata.ex.
Writing mix.exs
Writing README.md
Writing LICENSE
Writing .gitignore
Writing config/config.exs
Writing test/test_helper.exs
fixing file permissions
2020-05-12 05:17:40,699 synthtool > No files in sources /home/kbuilder/.cache/synthtool/elixir-google-api/clients were copied. Does the source contain files?
Traceback (most recent call last):
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmpfs/src/github/synthtool/synthtool/__main__.py", line 102, in <module>
    main()
  File "/tmpfs/src/github/synthtool/env/lib/python3.6/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/tmpfs/src/github/synthtool/env/lib/python3.6/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/tmpfs/src/github/synthtool/env/lib/python3.6/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/tmpfs/src/github/synthtool/env/lib/python3.6/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/tmpfs/src/github/synthtool/synthtool/__main__.py", line 94, in main
    spec.loader.exec_module(synth_module)  # type: ignore
  File "/tmpfs/src/github/synthtool/synthtool/metadata.py", line 180, in __exit__
    write(self.metadata_file_path)
  File "/tmpfs/src/github/synthtool/synthtool/metadata.py", line 112, in write
    with open(outfile, "w") as fh:
FileNotFoundError: [Errno 2] No such file or directory: 'clients/page_speed_online/synth.metadata'
2020-05-12 05:17:40 [ERROR] Synthesis failed
2020-05-12 05:17:40,733 autosynth > Synthesis failed
Traceback (most recent call last):
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 193, in _run_module_as_main
    "__main__", mod_spec)
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/runpy.py", line 85, in _run_code
    exec(code, run_globals)
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 599, in <module>
    main()
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 471, in main
    return _inner_main(temp_dir)
  File "/tmpfs/src/github/synthtool/autosynth/synth.py", line 549, in _inner_main
    ).synthesize(base_synth_log_path)
  File "/tmpfs/src/github/synthtool/autosynth/synthesizer.py", line 118, in synthesize
    synth_proc.check_returncode()  # Raise an exception.
  File "/home/kbuilder/.pyenv/versions/3.6.9/lib/python3.6/subprocess.py", line 389, in check_returncode
    self.stderr)
subprocess.CalledProcessError: Command '['/tmpfs/src/github/synthtool/env/bin/python3', '-m', 'synthtool', '--metadata', 'clients/page_speed_online/synth.metadata', 'synth.py', '--', 'PageSpeedOnline']' returned non-zero exit status 1.

Google internal developers can see the full log here.

Autosynth passed, closing! :green_heart:


Sage 300: Zero State Shared Component - 2

will review PR in sequence, export section, last export, 0 state, error


Resolve syncing conflicts from repo_sync_working_branch to master

Pull request opened by Docs to resolve syncing conflicts from repo_sync_working_branch to master.

@PRMerger17 : Thanks for your contribution! The author(s) have been notified to review your proposed change.

Resolved merge conflict.

@GitHubber17 : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@TedA-M : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@GitHubber17 : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@chcomley : Thanks for your contribution! The author(s) have been notified to review your proposed change.

#sign-off

I'm merging this as the PRMerger team doesn't do repo sync

#hold-off

@megvanhuygen : Thanks for your contribution! The author(s) have been notified to review your proposed change.

@steved0x : Thanks for your contribution! The author(s) have been notified to review your proposed change.


Added settings.logRequest and settings.logResponse

This PR adds two settings to configure logging of requests/responses similar to logRequestParams and logResponseData described here:  #20

Pull Request Test Coverage Report for Build 497

8 of 8 (100.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.1%) to 92.704%

Totals

Change from base Build 487:
-0.1%

Covered Lines:
668

Relevant Lines:
690

💛  - Coveralls

Great, thanks. I will check it asap.


Fixes #755 - null connection name should not be allowed

Fixes #755 and provides better parity with .net BotFrameworkAdapter.cs#L534

Pull Request Test Coverage Report for Build #1957

2 of 2 (100.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.4%) to 84.542%

Totals

Change from base Build #1954:
0.4%

Covered Lines:
2927

Relevant Lines:
3340

💛  - Coveralls


Search Find in Files does not search all *gd files in project.

Godot version
3.3.3.stable
System information
Windows 10
Issue description
When trying to search for keyword(s) using Find in Files does not search all *.gd files.  These are not built in scripts as other issues have been created for that topic.
The StoryPlot.gd show in the picture is not the only file that this is happening to.  I now have to use Notepad++ to get a "real" list of occurrences when it is critical for me.
Most files work to be searched and it seems like more currently created files are the ones with issue, but not exclusively.
I have a large number of script (gd) files, 274 currently, but I couldn't imagine there would be a limit.

Thanks,
Shaun
Steps to reproduce
I can reproduce this in my project, but I don't expect it is be an issue for every project.

Open the Script Editor view.
Click 'Search' -> 'Find in Files'.
Enter a keyword and click 'Find' button.

Result: 0 matches in 0 files.
Minimal reproduction project
I uploaded a simple reproduction project, see below comments.

@sjharb Please upload a minimal reproduction project to make this easier to troubleshoot.

The problem is that it searches only in one folder (by default - in root folder). But the expected behavior would be that it searches by default in all files in project.

The problem is that you should enter the path to folder with scripts, otherwise the search will not work. If there are scripts in the root directory, you cannot search there.

For my large project all of my scripts are in the root folder, most return search results, but for some reason not all.  It is not random either, the same scripts are being skipped in the searches.  Sorry I do not have a small project that reproduces this issue.  My other small projects seem to work fine.  I wonder if this is an issue with older projects.  I would have to dig into Godot Engine code to see how the scripts are being gathered to be searched.  I assume it would just search all the *.gd files in your project?

Sorry, I found out that the problem was in my case .gdignore in my root folder.
Though that is still strange - I did not create this file.

I also have this issue. When I open using 3.3.2, no problems, but with the later problems, that  .gdignore messes up the search

@shafnaz Can you upload a minimal reproduction project that exhibits this issue?

You can place this file in your res folder. It doesn't bother version 3.3.2, but it does bother 3.3.3 onwards. you just have to delete or remove a line of code.  And I don't know how it got there, just a few of my projects have it. Maybe a library add-on.
file.gdignore.zip

You can place this file in your res folder. It doesn't bother version 3.3.2, but it does bother 3.3.3 onwards. you just have to delete or remove a line of code. And I don't know how it got there, just a few of my projects have it. Maybe a library add-on. file.gdignore.zip
.gdignore files are supposed to empty. Their contents are ignored by the Godot editor.

Well, I hope others that have this issue, find the solution here. Deleting the files solved it.

Not that it helps, but I do not have any .gdignore file(s) in my project, just a gitignore.  I guess this issue might just be with my project since no-one else seems to have the same issue.  Again my project is large and 'old' (started with version 2 of Godot), but I do keep up to date using the latest stable build of Godot.  Sorry, I don't have a smaller project to reproduce the issue.  My other project works fine, but it is small and new.

I'm on version 3.4.4 and I'm having a similar issue. Whenever I try to "Find in Files", it only searches a single file when the directory is root. Once I select a subdirectory, then it actually searches in all files.
This wasn't the case before 3.4.4. My .gdignore doesn't have any of the subdirectories I'm trying to search in.

Found the issue.  Only projects having more than 1000 files will have issues.
It was actually pretty obvious via code inspection.
A hardcoded loop value limiting the FindInFiles to only search 1000 files.
I tested the fix locally on:
Godot Version 3.x
Windows
File: find_in_files.cpp line 229
Function: FindInFiles::_scan_dir
for (int i = 0; i < 1000; ++i) {
This loop if changed from 1000 -> 2000 etc allows my search to be complete since I have approximately 1500 files in my project.
Solution/Proposal:
The way to properly handle this would not be to hardcode to a higher value, say 3000.
There should be a 3 second check and if > 9 seconds goes by, pop-up to the user and ask the user if they want to continue with a 'long running search'.

Here is a project that reproduces the issue in Godot 3.4.4 stable.
godot_v3_4_4_issue_52789_1001_file_loop_test_project_6_22_2022.zip
Test project Instructions:
Test project for Godot issue # 52789
find in filesSearch Find in Files does not search all *gd files in project.
The project already contains > 1000 files in the res:// directory, but they can be generated by running the project.

Run this project to create gdscript files into one directory (res://).
Try to search 'find in files' for '_998', '_997', '_996', '_995', '_994', '_993', '_992', '_991'.
Actual: cannot find files over _990 since there are 1006 files in my res:// directory.
Expected: can search through any number of files in any directory.
Search with 'find in files' for '_990'.
Expected: Found _990 because it was found before the 1000 loop in find_in_files.cpp is reached.

Also,  If you unchecked the gd files Filter, Search Find in Files will not search any other files. I assumed if you unchecked, it would search all text based files at the minimum such txt, cfg, ini, tscn, etc


Fix/resolve UI imperfections

Improved UI layout by doing the following:

Adjusted the max width of the post title to prevent empty whitespace
Updated the container component to expand and fill the page appropriately, ensuring the footer aligns at the bottom of the screen
Enhanced readability by increasing the header tag font weight to medium and adding underline decoration, enhancing content presentation.

Hi @Armadillidiid,
Thank you for your contribution!
We generally do not accept pull requests that solely make cosmetic changes, such as altering font weight, font size, text color, padding, text decoration, etc unless they solve an existing issue or add a new generic feature. This policy is in place because cosmetic changes are subjective and preferences can vary widely among users.
While we welcome a wide range of contributions, it's important to align with the project's goals. Here are the types of contributions we value the most:

New Features: Adding new capabilities or tools that enhance the functionality of the starter kit.
Bug Fixes: Resolving existing issues to improve stability and performance.
Integrations: Building connectors or tools that integrate with other services or platforms.
Improvements: Enhancements that add value without altering the core look and feel in a subjective manner.

Unfortunately, because your PR primarily focuses on cosmetic changes, we will be closing it in accordance with these guidelines. We encourage you to consider how your contributions might align with the types of changes listed above for future submissions.
Thank you again for your effort and understanding. We look forward to your continued contributions!
Best regards,
Harsh


Is there a way to change the dots color?

I have tried to change like this:
   const settings = {         dots: true,         infinite: true,         speed: 500,         slidesToShow: 2,         slidesToScroll: 1,         dotsClass:slick-dots ${styles.dots}     }
`
.cardsContainer {
display: flex;
justify-content: center;
align-items: center;
margin: 80px 150px;
.dots {
    color: aqua;
}

}
`
but it did not change them.
(I'm using sass css)
Thanks :)

I have solved this issue and have added a new setting that can be used to change the color of the dots.
You can use 'dotsColor' to change to any color you want. Note that this does not also change the opacity of the dots but only their colors.

This can be implemented with custom CSS or appendDots/customPagging settings
https://react-slick.neostack.com/docs/example/append-dots


Is it necessary to squash commits into a single commit?

You advice to

squash your commits into a single commit

Is it necessary? Because history is erased.

I think that is is a case of people trying to avoid "Too Much Information". Personally, I like to track all of the missteps as well as the final solution--the "true history". But some people regard that as so much clutter. They only want to see the final result.

I think it depends on us, however most organizations look to a single commit.


added varun,txt file

my first contribution

Congratulations on creating your first GitHub contribution :sparkles::sparkles::sparkles:
Here's a bonus for you: GitHub Cheat Sheet
Do star :star: the repo and follow us on GitHub.
Join our FDC Group for more updates: https://www.facebook.com/groups/DevCVellore
Join FDC Vellore open community on WhatsApp: https://chat.whatsapp.com/IkD0qcCqvlo4hNlIMIzJ5q


Customize the style of each component from the theme

I don't know if there is such a thing here, but in forui I saw the ability to customize the style of each component directly from the application theme. In addition, there is also the ability to override the style when creating a component.
I understand that this work is very difficult, but I would like to see something like this here. I hope I did not overload you with tasks)

I'm gonna mark this as stale until the dart macros feature is finally released on the stable channel. Without it, all of the 71 components would create such a huge boilerplate code in the package.

Actually i'm gonna try to use freezed to see if it's possible.

Closing this in favor of #98 and few other more theme data issues


How to add provisioned notifiation channel for grafana in kube-prometheus-stack

Hi!
I'm in stuck with any examples how to set up the grafana notification channel via yaml files on the manner it is done for the custom provisioned dashboards. Currently the dashboard just mention the notification channels ids, so we need the way to set up the notification channels explicitly.  Grafana documentation refers this
https://grafana.com/docs/grafana/latest/administration/provisioning/#alert-notification-channels
but it is not clear how to use this for kube-prometheus-stack chart files structure

Please do create discussions and issues at the same time. It only creates unnecessary spam.
Closing as there is discussion in https://github.com/prometheus-operator/kube-prometheus/discussions/1271


Support for cert authentication

It would be amazing to have access to cert authentication. In big corporation like ours we never get access to anything else :(

that shouldn't be hard to add because APNSwift uses swift-nio-ssl. So if it lets you configure the TLSConfiguration you can enable that.

actually, APNSwiftConfiguration exposes the TLSConfiguration already and you can change it too. @rafiki270 what exactly would you need?

It’s not clear for me either.  Would you be able to give an example how to configure this given a PEM file containing public and private key?  Thank you

I think you could try this,
var apnsConfig = APNSwiftConfiguration(keyIdentifier: "9UC9ZLQ8YW",
                                       teamIdentifier: "ABBM6U9RM5",
                                       signer: signer,
                                       topic: "com.grasscove.Fern",
                                       environment: .sandbox)

apnsConfig.tlsConfiguration.privateKey = .file("key.pem")

Now, this probably won't work entirely because of the  header and the signer, so let me do a little work to make this work.

Try this commit. https://github.com/kylebrowning/APNSwift/pull/45

Eh, doesn't seem to work. Im not sure how to get TLSConfiguration to accept my pem correctly.
I get missingProviderToken

yes because for this type of connection I think also we dont use the keyIdentifier either.   And we should have to set the pem cert as well as the pem private key.   I just cant figure out how to get it to work

IN that PR, keyIdentifier isn't used at all, even though its being configured. This was just a quick dirty way of testing it.

@mosed https://github.com/swift-server/async-http-client/issues/27#issuecomment-489760481
I’ll look at this more in the evening

@mosed @rafiki270 I got it working, will post example shortly after I get the new release out.

#47

You can see the APNSwiftPemExample to see how you may accomplish this.

https://github.com/kylebrowning/APNSwift/blob/686c69561040054550e7bd9afe88f395ebb53c27/Sources/APNSwiftPemExample/main.swift#L33


Too small query header

I have been debugging yet another extremely weird issue with dnscrypt-proxy v1.9.5 and unbound v1.6.7.
As usual logging is not there, so I added some more for the calls (in unbound) to dnsc_find_cert(), and I found out:
[1510087836] unbound[30383:0] debug: handle request called on DNSCrypt socket
[1510087836] unbound[30383:0] debug: dnsc_find_cert: too small query header

So now I wonder, how could possibly - and all of a sudden - the client-side start sending too small query headers?
Also: if this query is too short, shouldn't dnscrypt-proxy itself also detect that something is wrong and not even bother sending it?
(I am afraid that here we have some incompatibility due to encryptions being used, since there is no ACK about the type of encryption being used..) Worthy to note that I haven't touched either the server or the client side recently though.
Attachments: unbound.conf
Version:
dnscrypt-proxy 1.9.5

Compilation date: Oct 24 2017
Support for plugins: present
Plugins root directory: [/usr/local/lib/dnscrypt-proxy/]
Support for the XChaCha20-Poly1305 cipher: present

The client always sends the same query. This is a simple TXT query, sent via libevent's DNS API. DNSCrypt is not even used at this point.
Maybe a tcpdump could help here? Queries for certificates are not encrypted, so you should see them.

Unfortunately I rebuilt with current stable libsodium branch and problem went away; I will investigate in that direction if it happens again.
Thanks for the feedback!

Btw, could be that the "magic" hash is somewhat garbled (too short/not generated)? Just a thought. In future I am going to print the DNSCRYPT_QUERY_HEADER_SIZE on log of both sides to understand what's going on.

The size of the magic bytes is always the same. But it may not match what the server expects indeed.
Were you using the 1.0.15 release version of libsodium before?

@jedisct1 another box, amd64, is using latest tagged version of libsodium and has no problems. So I would exclude it's libsodium, also considering that today without any intervention it stopped working on its own.
I can restart dnscrypt-proxy at will, and it still gives the error fetching and on unbound side I see the too small query header.
Do I have to start thinking about MiTM/ISP modifying UDP packets? Would be weird...I tend to exclude this possibility.
What I can do is print on dnscrypt-proxy side what is sending in the query to check if it's actually the same in length and content.

I have a lead. At some point the clock gets set to a past date, and somehow this causes the query to become shorter?
See what happens after clock is fixed:
Thu Jun 15 00:29:23 2017 [ERROR] No useable certificates found
Wed Nov  8 21:43:20 2017 [INFO] Refetching server certificates
Wed Nov  8 21:43:20 2017 [INFO] Server certificate with serial #1510086797 received
Wed Nov  8 21:43:20 2017 [INFO] This certificate is valid
Wed Nov  8 21:43:20 2017 [INFO] Chosen certificate #1510086797 is valid from [2017-11-07] to [2017-11-08]
Wed Nov  8 21:43:20 2017 [INFO] Server key fingerprint is 4D7D:BDE0:8FEF:6142:9D78:FAC3:BF4D:095D:[...omissis...]
Wed Nov  8 21:43:20 2017 [NOTICE] Proxying from <IP_ADDRESS>:53 to x.x.x.x:56199

If this is true, I think it's a bug. Because time-related validation errors should not cause an empty encrypted/hashed payload but rather an explicit error saying "clock skew" or something along those lines.
I am not familiar with the dnscrypt-proxy codebase to pinpoint where this is though, maybe some of you guys can?

This doesn't cause the query to become shorter, but certificates have a validity period.  So, if your clock is off, certificates don't validate and are rejected.

(my previous comment about clock issues was bogus)
I think it's due to routing. At some point routes get messed up, and somehow only a part of the UDP packet gets there? (this is best theory I came up with so far).
I am going to add debugging on dnscrypt-proxy for this.

This doesn't cause the query to become shorter, but certificates have a validity period. So, if your clock is off, certificates don't validate and are rejected.
@jedisct1 yeah sorry, I deleted that comment. The error is different and clear in case of validity issues. It must be something else.

@neagix if you get that to repro in a testing environment, can you provide a tcpdump of when the issue is happening, that would greatly help in debugging.
I assume that in https://gist.github.com/neagix/14fd4d2845b1e2563380dc6152e4c790
somewhere an interface is defined to listen on port 21678 .
Also, just to make sure I understand correctly, dnscrypt is working fine between the client and the server and then after some time:

it fails and then fail consistently
even after you restart either dnscrypt-proxy or unbound?
the certs are not expired when that happen

If the expiration time of the cert involved? newer dnscrypt-wrapper default to 24h cert validity since https://github.com/cofyc/dnscrypt-wrapper/commit/9d0a7931b4dd088600f3843dcd11ae89c97af234
The query you are receiving when the "header is too small" is what seems to be a legit DNS request for the cert:
In [1]: s='11330100000100000000000001320D644E5343525970542D636552540A'

In [2]: import binascii

In [3]: binascii.unhexlify(s)
Out[3]: b'\x113\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x012\rdNSCRYpT-ceRT\n'

when reconstructing the rest of (what I would expect, e.g adding the trailing example.com + class IN and type TXT) your message, here is what we would get:
In [10]: d=dns.message.from_wire(xx)

In [11]: print(d)
id 4403
opcode QUERY
rcode NOERROR
flags RD
;QUESTION
2.dNSCRYpT-ceRT.example.com. IN TXT
;ANSWER
;AUTHORITY
;ADDITIONAL

Note: I am guessing you are not using example.com as the trailing '\n' (0x0A) would mean that the label is 10 bytes long, also, the total message is 55 bytes, when the reconstructed one is len(xx) == 45, so basically, your provider name may be 10 char more than 2.dNSCRYpT-ceRT.example.com, is this correct?
What we would expect is that unbound will fallback onto serving the cert when such request is received, does it do that? tcpdump should tell.
Also, what is the end date of the cert? it really feels like what you are seeing is that the client can't validate the cert (because it is expired) and it keeps asking it over and over again, with some backoff.

can you provide a tcpdump of when the issue is happening, that would greatly help in debugging.

likely next week as I have easier access to the box; issue is not present at the moment.

I assume that in https://gist.github.com/neagix/14fd4d2845b1e2563380dc6152e4c790
somewhere an interface is defined to listen on port 21678 .

Yeah, edited out but I have those configured correctly. Updated the gist for reference.

Also, just to make sure I understand correctly, dnscrypt is working fine between the client and the server and then after some time:
it fails and then fail consistently
even after you restart either dnscrypt-proxy or unbound?

Yes.

the certs are not expired when that happen

No

If the expiration time of the cert involved? newer dnscrypt-wrapper default to 24h cert validity since cofyc/dnscrypt-wrapper@9d0a793

I can safely exclude this. I have solved the time synchronization issues of the box and I expect issue to happen again. My certs are also 24h valid.

The query you are receiving when the "header is too small" is what seems to be a legit DNS request for the cert:
In [1]: s='11330100000100000000000001320D644E5343525970542D636552540A'
In [2]: import binascii
In [3]: binascii.unhexlify(s)
Out[3]: b'\x113\x01\x00\x00\x01\x00\x00\x00\x00\x00\x00\x012\rdNSCRYpT-ceRT\n'
when reconstructing the rest of (what I would expect, e.g adding the trailing example.com + class IN and type TXT) your message, here is what we would get:
[...]
Note: I am guessing you are not using example.com as the trailing '\n' (0x0A) would mean that the label is 10 bytes long, also, the total message is 55 bytes, when the reconstructed one is len(xx) == 45, so basically, your provider name may be 10 char more than 2.dNSCRYpT-ceRT.example.com, is this correct?

Yeah. It's just my private dnscrypt server, not meant to be shared with the world.

What we would expect is that unbound will fallback onto serving the cert when such request is received, does it do that? tcpdump should tell.

I think you are ignoring now the findings I gathered with the extra debugging.

Also, what is the end date of the cert? it really feels like what you are seeing is that the client can't validate the cert (because it is expired) and it keeps asking it over and over again, with some backoff.

It's not this. I was confused by wrong time on the box, but it was a red herring (now fixed). Certs are valid 24h. If it were a certificate valid time issue, it would give me the other error that says so (not the generic one you can read in first post); I got that descriptive validation error right after issue was healing, but it wasn't this GH issue.
The problem is that unbound receives a DNScrypt query that is too short (55 instead of 68 bytes). I added debugging to print out that short query that you checked with binascii (for the part I published).
Why would unbound expect 68 bytes instead of 55? That's what I wonder. And also: when everything goes well, are the queries 68 bytes "magically"? I think so, but has to be verified.
My candidate is some routing issue, as this box connects also to OpenVPN so the routes get changed automatically. However I cannot think of a scenario where only a portion of an UDP packet gets delivered; so this might also be unrelated.
I will add debugging to dnscrypt-proxy to see what is sending, but next week.


Ondemand app restart

What kind of change does this PR introduce? (check one with "x")
[] Bugfix
[x] Feature
[] Code style update (formatting, local variables)
[] Refactoring (no functional changes, no api changes)
[] Other... Please describe:

Fixes: #
What is the current behavior?
In certain scenarios, app configuration need to be updated without restarting the engine. This typically useful when integrating with configuration management services like AWS appconfig where engine can detect updates in the configuration  and update itself without any user intervention.
What is the new behavior?
With this change, connections/triggers/resources are reinitialized and restarted through App.Reconfigure() implementation. This will ensure that engine is running with latest configuration from configuration services.

Rather than just copying code from New() and pasting it into Reconfigure() we should just create a private function and use that. This would require more refactoring but should be done at some point...

@mellistibco Reconfigure() implicitly does Stop()-->New()-->Start() with slight modifications. I thought about refactoring but given we only need to handle lifecycle for triggers/connections/resources in this case, went ahead with appropriate copy of code.

@mellistibco I have implemented this in much cleaner way. Will create separate PR.


NOOS-876/hotfix-venv-caching

SEMVER Update Type:

[ ] Major
[ ] Minor
[x] Patch

Description:

Expected: CI cache size with pipenv (21 MB)
https://app.circleci.com/pipelines/github/noosenergy/noos-circleci-orb/458/workflows/46d164da-bd71-4439-8034-3ca01ee1bef9/jobs/2607

Currently: CI cache size with uv (32 B , almost null)
https://app.circleci.com/pipelines/github/noosenergy/noos-circleci-orb/458/workflows/46d164da-bd71-4439-8034-3ca01ee1bef9/jobs/2611

@zyassine @mthiboust
Even after removing the cache pruning, the artifact uploaded by CircleCI is 32B ; this seems quite small compared to the cache uploaded for pipenv virtual env (21 MB).
Can one of you investigate the actual content of uv cache? Is such a cache actually encompassing all the downloaded dependency wheels?

Interesting, thanks for spotting this. I'll try to check this on Monday

Maybe this can explain the small cache size? Our dependencies do not need to be built from source, so uv prefer to redownload them rather than caching them because it is apparently faster in Github Actions (and maybe CircleCI?) ?
https://docs.astral.sh/uv/reference/cli/#uv-cache-prune

--ci
Optimize the cache for persistence in a continuous integration environment, like GitHub Actions.
By default, uv caches both the wheels that it builds from source and the pre-built wheels that it downloads directly, to enable high-performance package installation. In some scenarios, though, persisting pre-built wheels may be undesirable. For example, in GitHub Actions, it’s faster to omit pre-built wheels from the cache and instead have re-download them on each run. However, it typically is faster to cache wheels that are built from source, since the wheel building process can be expensive, especially for extension modules.
In --ci mode, uv will prune any pre-built wheels from the cache, but retain any wheels that were built from source.

@mthiboust similar behaviour once the caching command has been removed ; refer to the CI integration tests for this PR.


errror happens when save the output to clipboard or text file

in the file __main__.py,  line 82: print(record) is used to print results to stdout.
But when there are some Chinese characters in the returned results,  to use print   directly will return error message as:
UnicodeEncodeError: 'gbk' codec can't encode character '\u2027' in position 208: illegal multibyte sequence
After searching, I added three lines in the __main__.py, then no more error message.
import sys
import io

sys.stdout = io.TextIOWrapper(sys.stdout.buffer,encoding='utf8')

Hope this is helpful to anyone has the same error.
if in CMD window, the Chinese characters are still messed up codes. Try to run
chcp 65001, that is to change CodePage
and then the Chinese characters  can be well presented.

Yes, it is encoding error in difference console.The default encoding is utf-8.
In windows, use "chcp 65001 to change to utf-8 encoding or run it in "powershell".

Yes, it is encoding error in difference console.The default encoding is utf-8.
In windows, use "chcp 65001 to change to utf-8 encoding or run it in "powershell".

I'm using mdict.exe on windows. I tried both of the solutions but it still returned Traceback (most recent call last):   File "C:\home\Projects\dev\mdict\build\mdict_utils\mdict-script.py", line 2, in <module>   File "mdict_utils\__main__.py", line 123, in run UnicodeDecodeError: 'gbk' codec can't decode byte 0x80 in position 874: illegal multibyte sequence [41700] Failed to execute script mdict-script. Any idea why?

Your issue is file encoding.

Update latest version firstly.  pip install -U mdict_utils

Check your description.html file.  All files must be UTF-8 encoding


Boost performance?

Is there a way to boost performance for the canvas version? Or should I choose WebGL instead?

From my personal experience, using @kmamal/gl is the best choice, although it's harder to use and require knowledge about shader and stuff like that, but you can get way better performance using @kmamal/gl. Beside from some GC issue you may encounter, it's pretty good!
And I don't think you can make canvas faster (I tried that lol), because most of the Canvas that runs on Node.js are often written in other language (If I'm not mistaken), and I assume they also need to copy the pixel buffer to Node.js, and then node-sdl need to copy it again to sdl, which is definitely not fast.

I think I could make canvas write to the window directly, eliminating some of the buffer copying. I'll keep this issue open to track that effort.
There's also a chance that you are doing something weird with your code that needlessly reduces performance. I'd be happy to have a look if you are able to upload the repo.
Failing that, switching to webgl/gpu is always an option, and there are libraries that make working with them much easier.

@LmanTW do you think the memory leak you encountered was a bug in kmamal/gl?

There's also a chance that you are doing something weird with your code that needlessly reduces performance. I'd be happy to have a look if you are able to upload the repo.

Simply, it's just the same 59-60 fps just like an empty canvas on HTML page. But in the code it's just clear the canvas and draw a rectangle, and input check

kmamal

I think it was because I keep using gl.createBuffer() when I want to do gl.bindBuffer and gl.bufferData, and I fixed it by just using the same buffer instead of keep creating new buffers.
Now I think about it it's quite silly, so I don't think it's an issue in kmamal/gl, I was just using it in a wrong way.

I just found out that skia-canvas actually supports rendering the canvas to an OS window. It also has some window events like mousemove, keydown, input, etc...

I just found out that skia-canvas actually supports rendering the canvas to an OS window. It also has some window events like mousemove, keydown, input, etc...

Interesting

after some testing, it seems that @napi-rs/canvas is quite a bit faster than skia-canvas
One thing to make sure is that when you're calling window.render do this:
window.render(width, height, stride, 'rgba32', Buffer.from(imageData.data.buffer));
and NOT
window.render(width, height, stride, 'rgba32', Buffer.from(imageData.data));
HUGE performance difference between those two.  The latter does a memory copy that is very slow and gets worse in high resolutions.


New version: Microsoft.Edge.Dev version 117.0.2007.0

Pull request has been created with WinGet Automation :rocket:
Microsoft Reviewers: codeflow:open?pullrequest=https://github.com/microsoft/winget-pkgs/pull/115158&drop=dogfoodAlpha

@wingetbot run

Automatic Validation ended with:

Standard error:  Installation failed with exit code -1978335226 2023-08-03 17:46:03.023 [CLI ] ShellExecute installer failed: 1603
CustomAction DoInstall returned actual error code -2147219199 (note this may not be 100% accurate if translation happened inside sandbox)
MSI (s) (C4:44) [17:46:02:381]: Product: Microsoft Edge Dev -- Error 1722. There is a problem with this Windows Installer package. A program run as part of the setup did not finish as expected. Contact your support personnel or package vendor.
Action DoInstall, location: C:\Windows\Installer\MSI4161.tmp, command: /silent /install "appguid={0D50BFEC-CD6A-4F9A-964C-C7416E3ACB10}&appname=Microsoft Edge Dev&needsAdmin=True&usagestats=0&ap=dev-arch_x64" /installsource enterprisemsi /appargs "appguid={0D50BFEC-CD6A-4F9A-964C-C7416E3ACB10}&installerdata=%7B%22distribution%22%3A%7B%22msi%22%3Atrue%2C%22system_level%22%3Atrue%2C%22verbose_logging%22%3Atrue%2C%22msi_product_id%22%3A%22FBA1CBF7-5355-384A-83D8-522989CA126C%22%2C%22allow_downgrade%22%3Afalse%2C%22do_not_create_desktop_shortcut%22%3Afalse%2C%22do_not_create_taskbar_shortcut%22%3Afalse%7D%7D"
Error 1722. There is a problem with this Windows Installer package. A program run as part of the setup did not finish as expected. Contact your support personnel or package vendor.
Action DoInstall, location: C:\Windows\Installer\MSI4161.tmp, command: /silent /install "appguid={0D50BFEC-CD6A-4F9A-964C-C7416E3ACB10}&appname=Microsoft Edge Dev&needsAdmin=True&usagestats=0&ap=dev-arch_x64" /installsource enterprisemsi /appargs "appguid={0D50BFEC-CD6A-4F9A-964C-C7416E3ACB10}&installerdata=%7B%22distribution%22%3A%7B%22msi%22%3Atrue%2C%22system_level%22%3Atrue%2C%22verbose_logging%22%3Atrue%2C%22msi_product_id%22%3A%22FBA1CBF7-5355-384A-83D8-522989CA126C%22%2C%22allow_downgrade%22%3Afalse%2C%22do_not_create_desktop_shortcut%22%3Afalse%2C%22do_not_create_taskbar_shortcut%22%3Afalse%7D%7D"
MSI (s) (C4:44) [17:46:02:647]: Product: Microsoft Edge Dev -- Installation failed.
MSI (s) (C4:44) [17:46:02:647]: Windows Installer installed the product. Product Name: Microsoft Edge Dev. Product Version: 117.0.2007.0. Product Language: 1033. Manufacturer: Microsoft Corporation.
Installation success or error status: 1603.

A 1603 error sometimes indicates a dependency on VCRedist.


Added pip feature

Added files so that you can install using pip install discord_hooks

Assuming you uploaded this yourself to PyPi, this PR would be kinda useless. Usually, it's the main maintainer's duty to handle distribution for the main repo. Personally believe @kyb3r should upload this himself. :)

Sorry for being inactive, I'll soon be rewriting this library and I'll be uploading it to pypi as well.


Deployment status message: Internal service failure

Hi Team,
Getting a Internal service error when trying to deploy an environment from an published template. Kindly let me know if you need more details.
Regards,
_Ramesh M

The error is due to open API not able to handle array of strings, so switched to singleton to work around.