[url_launcher][mobile-web] Phone number and body fields are not always pre-populated in SMS app

I am trying to launch the default sms app from my flutter web app running on chrome/android device. The sms app does get launched but the phone number and body fields are not getting values from the uri. Here is my code:
Future<bool> launchSMS({required String phnumber, required String msg}) async {
  // Android 'sms:+39 348 060 888?body=hello%20there';
  String body = Uri.encodeComponent(msg);

  String androidPh = phnumber.replaceAll("(", "").replaceAll(")", "");
  String androiduri = 'sms:$androidPh?body=$body';

  String iosPh = phnumber.replaceAll("+", "00").replaceAll("(", "").replaceAll(")", ""); //'sms:0039-222-060-888?body=hello%20there';
  String iosuri = 'sms:$iosPh&body=$body';
  if(kIsWeb){
    if (await urllauncher.canLaunch(androiduri)) {
      print('launching uri $androiduri');
      return await urllauncher.launch(androiduri);
    } else {
      if (await urllauncher.canLaunch(iosuri)) {
        print('launching iosuri $iosuri');
        return await urllauncher.launch(iosuri);
      } else {
        return false;
      }
    }
  } else {
    if (Platform.isIOS) {
      print('launching iosuri $iosuri');
      if (await urllauncher.canLaunch(iosuri)) {
        return await urllauncher.launch(iosuri);
      } else {
        return false;
      }
    } else //if(Platform.isAndroid)
        {
      print('launching uri $androiduri');
      if (await urllauncher.canLaunch(androiduri)) {
        return await urllauncher.launch(androiduri);
      } else {
        return false;
      }
    }
  }
}

Please provide the output of flutter doctor -v as well as the version of url_launcher you're using.
Thank you

url_launcher: 6.0.18
C:\works\flutter\projects\uome_app>flutter doctor -v
[√] Flutter (Channel stable, 2.8.1, on Microsoft Windows [Version 10.0.19042.1466], locale en-IN)
• Flutter version 2.8.1 at C:\flutter223
• Upstream repository https://github.com/flutter/flutter.git
• Framework revision 77d935af4d (7 weeks ago), 2021-12-16 08:37:33 -0800
• Engine revision 890a5fca2e
• Dart version 2.15.1
[√] Android toolchain - develop for Android devices (Android SDK version 32.0.0)
• Android SDK at C:\Users\CEO\AppData\Local\Android\sdk
• Platform android-32, build-tools 32.0.0
• Java binary at: C:\Program Files\Android\Android Studio\jre\bin\java
• Java version OpenJDK Runtime Environment (build 11.0.10+0-b96-7249189)
• All Android licenses accepted.
[√] Chrome - develop for the web
• Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe
[√] Android Studio (version 2020.3)
• Android Studio at C:\Program Files\Android\Android Studio
• 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.10+0-b96-7249189)
[√] Connected device (2 available)
• Chrome (web) • chrome • web-javascript • Google Chrome 97.0.4692.99
• Edge (web)   • edge   • web-javascript • Microsoft Edge 97.0.1072.76
• No issues found!
C:\works\flutter\projects\uome_app>

Hi @pryshrm, I looked at your code sample and the issue is with how you're going about it.
What you need to do is check the host os of the device the browser is on when you're on web and then from there use the appropriate formatted uri.
I modified your sample a bit and in my tests the values were prepopulated in the SMS field. See sample below. You may need to tweak it to suit your code base.

code sample
import 'dart:html' as html;
import 'dart:io' as io;

import 'package:flutter/foundation.dart';
import 'package:flutter/gestures.dart';
import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart' as urllauncher;

void main(List<String> args) {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: TexspanTap(),
    );
  }
}

class TexspanTap extends StatefulWidget {
  @override
  _TexspanTapState createState() => _TexspanTapState();
}

class _TexspanTapState extends State<TexspanTap> {
  @override
  void initState() {
    // _editingcontroller.text = "dghali";
    super.initState();
  }

  @override
  void dispose() {
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: SafeArea(
        child: SingleChildScrollView(
          child: Column(
            children: [
              TextButton(
                onPressed: () async {
                  await launchSMS(
                    phnumber: '+39348060888',
                    msg: 'some message',
                  );
                },
                child: Text('Launch'),
              ),
            ],
          ),
        ),
      ),
    );
  }

  bool _isIOS() {
    final userAgent = html.window.navigator.userAgent.toString().toLowerCase();
    return userAgent.contains('iphone') || userAgent.contains('ipad');
  }

  bool _isAndroid() {
    final userAgent = html.window.navigator.userAgent.toString().toLowerCase();
    return userAgent.contains('android');
  }

  Future<bool> launchSMS(
      {required String phnumber, required String msg}) async {
    // Android 'sms:+39 348 060 888?body=hello%20there';
    String body = Uri.encodeComponent(msg);

    String androidPh = phnumber.replaceAll("(", "").replaceAll(")", "");
    String androiduri = 'sms:$androidPh?body=$body';

    String iosPh = phnumber
        .replaceAll("+", "00")
        .replaceAll("(", "")
        .replaceAll(")", ""); //'sms:0039-222-060-888?body=hello%20there';
    String iosuri = 'sms:$iosPh&body=$body';
    if (kIsWeb) {
      if (_isIOS()) {
        return await urllauncher.launch(iosuri);
      } else if (_isAndroid()) {
        return await urllauncher.launch(androiduri);
      } else {
        return false;
      }
      // if (await urllauncher.canLaunch(iosuri)) {
      //   print('launching ios uri $iosuri');
      //   return await urllauncher.launch(iosuri);
      // } else {
      //   if (await urllauncher.canLaunch(androiduri)) {
      //     print('launching android $androiduri');
      //     return await urllauncher.launch(androiduri);
      //   } else {
      //     return false;
      //   }
      // }
    } else {
      if (io.Platform.isIOS) {
        print('launching iosuri $iosuri');
        if (await urllauncher.canLaunch(iosuri)) {
          return await urllauncher.launch(iosuri);
        } else {
          return false;
        }
      } else //if(Platform.isAndroid)
      {
        print('launching uri $androiduri');
        if (await urllauncher.canLaunch(androiduri)) {
          return await urllauncher.launch(androiduri);
        } else {
          return false;
        }
      }
    }
  }
}

Hi, Thanks for responding but that is just a superficial change in the logic and that didn't change anything (at least on android, where I am testing). I printed the exact uri that is being launched just before launching:
if (_isIOS()) {
  print('launching sms for ios $iosuri');
  return await urllauncher.launch(iosuri);
} else if (_isAndroid()) {
  print('launching sms for android $androiduri');
  return await urllauncher.launch(androiduri);
} else {
  return false;
}

it prints:
launching sms for android sms:+39999222333?body=OK%20Thanks
This launched the sms app but with neither the ph number nor the body prepopulated.
I did another test and removed the body i.e.
launching sms for android sms:+39999222333
This worked fine. The phone number was prepopulated. So, I can reconfirm that there is definitely something going on when the body part is present.

I did another test. Removed all special chars from body. So now, I am launching this:
launching sms for android sms:+39999888777?body=OKTHANKS
This launches the sms app and prepopulates the phone number but body is still missing.

I just did another test on android and it worked just fine, see video below.  I'm using the code sample I posted earlier.

video
https://user-images.githubusercontent.com/88313112/151969649-3bfa6409-9f05-4fe7-9b06-9e63a1cd8a42.mp4

Could you please tell me which device did you try it on (real android phone or ios?).
I tried it on my iPad and it did work correctly. But I tried the same on my Asus Android phone and it did not work. I swear I have the exact same code that you suggested. It is printing out the correct uri in the log message, which I am able to see using chrome remote debugging ( chrome://inspect/#devices )

Could you please tell me which device did you try it on (real android phone or ios?).

I initially tested on an iOS simulator before testing on android. On android, I tested on both:  emulator and physical device.
Emulators: Pixel 4a API 31 & Pixel 4a API 30
Physical device: Poco X3 NFC

I tried it with three phones 1: Android v 9 (Asus_X00TD),  2. Android v 11 ( Galaxy F41 and F62).
On all three, the phone and body are absent when body has special chars (even though encoded).
On all three, the phone is present but the body is absent when body is plain text with no special chars such as OKTHANKS.

There's a chance this might be an issue that is affecting only a certain group of devices. I don't know if this is something that url_launcher has any control over considering all it does it call a method to open the URL.  Can you confirm a few things for me?

Everything works as expected in a mobile flutter app (ios/android)
This works as expected on ios (according to your test on iPad) Which browser did you use?
This works on some of your android devices but not on some

Where "This works" refers to SMS app opening with text and number prepopulated

Yes, it seems like it is device specific or some security trap. I guess some devices are interpreting the uri very strictly and allowing only the phone number part in the uri.

Everything works as expected in a mobile flutter app (ios/android)
The mobile flutter app works fine on various Android devices. Not tested on iOS because I haven't built the ios version of the app yet.

This works as expected on ios (according to your test on iPad) Which browser did you use?
Yes, the web version works on ios (ipad as well as iphone). Tested on Chrome.

This works on some of your android devices but not on some.
Yes, the web version running on Chrome fails consistently on relatively newer devices (Samsung and Asus) that I tested on. It worked on an old Android 6 device. Another interesting bit that I observed was that if you have an ampersand in the body (before url encoding), it fails even on that old android device. It had no impact on the app version. i.e. the app version works even if there is an & in the body text.

Thanks for your attention.

Can you test if using
 String body = Uri.encodeQueryComponent(msg);

instead of
String body = Uri.encodeComponent(msg);

makes any difference?

No, that didn't make any difference.

Labeling for further investigation.
Summary

I am unable to reproduce this locally, either on my emulator or physical device. Video of it functioning properly is in https://github.com/flutter/flutter/issues/97564#issuecomment-1026799106.
The SMS and body fields are populated when the app is built for either android or ios
OP confirmed it worked on some of his devices in https://github.com/flutter/flutter/issues/97564#issuecomment-1027030970
The devices it failed on are Samsung and Asus. Devices are in https://github.com/flutter/flutter/issues/97564#issuecomment-1026898772
iOS works just fine, so this seems to be an android only issue.

I have stripped the code sample down to run on web since that is where the issue appears to be.

code sample
import 'dart:html' as html;

import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart' as urllauncher;

void main(List<String> args) {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: TexspanTap(),
    );
  }
}

class TexspanTap extends StatefulWidget {
  const TexspanTap({Key? key}) : super(key: key);

  @override
  _TexspanTapState createState() => _TexspanTapState();
}

class _TexspanTapState extends State<TexspanTap> {
  @override
  void initState() {
    super.initState();
  }

  @override
  void dispose() {
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: SafeArea(
        child: SingleChildScrollView(
          child: Column(
            children: [
              TextButton(
                onPressed: () async {
                  await launchSMS(
                    phnumber: '+39348060888',
                    msg: 'some message',
                  );
                },
                child: const Text('Launch'),
              ),
            ],
          ),
        ),
      ),
    );
  }

  bool _isIOS() {
    final userAgent = html.window.navigator.userAgent.toString().toLowerCase();
    return userAgent.contains('iphone') || userAgent.contains('ipad');
  }

  bool _isAndroid() {
    final userAgent = html.window.navigator.userAgent.toString().toLowerCase();
    return userAgent.contains('android');
  }

  Future<bool> launchSMS(
      {required String phnumber, required String msg}) async {
    // Android 'sms:+39 348 060 888?body=hello%20there';
    String body = Uri.encodeComponent(msg);

    String androidPh = phnumber.replaceAll("(", "").replaceAll(")", "");
    String androiduri = 'sms:$androidPh?body=$body';

    String iosPh = phnumber
        .replaceAll("+", "00")
        .replaceAll("(", "")
        .replaceAll(")", ""); //'sms:0039-222-060-888?body=hello%20there';
    String iosuri = 'sms:$iosPh&body=$body';

    if (_isIOS()) {
      return await urllauncher.launch(iosuri);
    } else if (_isAndroid()) {
      return await urllauncher.launch(androiduri);
    } else {
      return false;
    }
  }
}

didn't work on duckduckgo either.

On Via browser, it was worse. It couldn't even launch the sms app!

Labeling for further investigation.
Summary

I am unable to reproduce this locally, either on my emulator or physical device. Video of it functioning properly is in https://github.com/flutter/flutter/issues/97564#issuecomment-1026799106.
The SMS and body fields are populated when the app is built for either android or ios
OP confirmed it worked on some of his devices in https://github.com/flutter/flutter/issues/97564#issuecomment-1027030970
The devices it failed on are Samsung and Asus, but there could be other devices affected. Devices are in https://github.com/flutter/flutter/issues/97564#issuecomment-1026898772
iOS works just fine, so this seems to be an android only issue.

I have stripped the code sample down to run on web since that is where the issue appears to be.

code sample
import 'dart:html' as html;

import 'package:flutter/material.dart';
import 'package:url_launcher/url_launcher.dart' as urllauncher;

void main(List<String> args) {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: TexspanTap(),
    );
  }
}

class TexspanTap extends StatefulWidget {
  const TexspanTap({Key? key}) : super(key: key);

  @override
  _TexspanTapState createState() => _TexspanTapState();
}

class _TexspanTapState extends State<TexspanTap> {
  @override
  void initState() {
    super.initState();
  }

  @override
  void dispose() {
    super.dispose();
  }

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(),
      body: SafeArea(
        child: SingleChildScrollView(
          child: Column(
            children: [
              TextButton(
                onPressed: () async {
                  await launchSMS(
                    phnumber: '+39348060888',
                    msg: 'some message',
                  );
                },
                child: const Text('Launch'),
              ),
            ],
          ),
        ),
      ),
    );
  }

  bool _isIOS() {
    final userAgent = html.window.navigator.userAgent.toString().toLowerCase();
    return userAgent.contains('iphone') || userAgent.contains('ipad');
  }

  bool _isAndroid() {
    final userAgent = html.window.navigator.userAgent.toString().toLowerCase();
    return userAgent.contains('android');
  }

  Future<bool> launchSMS(
      {required String phnumber, required String msg}) async {
    // Android 'sms:+39 348 060 888?body=hello%20there';
    String body = Uri.encodeComponent(msg);

    String androidPh = phnumber.replaceAll("(", "").replaceAll(")", "");
    String androiduri = 'sms:$androidPh?body=$body';

    String iosPh = phnumber
        .replaceAll("+", "00")
        .replaceAll("(", "")
        .replaceAll(")", ""); //'sms:0039-222-060-888?body=hello%20there';
    String iosuri = 'sms:$iosPh&body=$body';

    if (_isIOS()) {
      return await urllauncher.launch(iosuri);
    } else if (_isAndroid()) {
      return await urllauncher.launch(androiduri);
    } else {
      return false;
    }
  }
}

@pryshrm For the devices where this doesn't work in Flutter, have you tested to see if it works on a normal web page? e.g. <!DOCTYPE HTML>test?

sms URLs don't have a standard behavior for extra parameters across platforms. This is not something within the control of the plugin, as it's at the level of the receiver of the URL.
Closing as a duplicate of https://github.com/flutter/flutter/issues/18823


Facebook api from the server returns empty friends list

In /Users/stevepodell/PythonProjects/WeVoteServer/import_export_facebook/models.py @ 652
the API call always returns an empty set.

@DaleMcGrew @jainanisha90
Question 1: Is there a chance that we developed with Facebook API 1.x, then upgraded to 2.1, and as a result we can now only see friends in our app, that have already added the WeVote app to their Facebook accounts?
Question 2:  When you debug the python server at line 664 in import_export_facebook/models, do you get a list of all of your facebook friends or just those who have signed up for WeVote?  (I get an empty list, just like in the API Explorer) https://developers.facebook.com/tools/explorer/?method=GET&path=1184925174944744%2Ffriends&version=v2.10

Facebook Graph Api v2.0+ - /me/friends returns empty, or only friends who also use my app
https://stackoverflow.com/questions/23417356
In v2.0 of the Graph API, calling /me/friends returns the person's friends who also use the app.
In addition, in v2.0, you must request the user_friends permission from each user. user_friends is no longer included by default in every login. Each user must grant the user_friends permission in order to appear in the response to /me/friends. See the Facebook upgrade guide for more detailed information, or review the summary below.
If you want to access a list of non-app-using friends, there are two options:
If you want to let your people tag their friends in stories that they publish to Facebook using your App, you can use the /me/taggable_friends API. Use of this endpoint requires review by Facebook and should only be used for the case where you're rendering a list of friends in order to let the user tag them in a post.
If your App is a Game AND your Game supports Facebook Canvas, you can use the /me/invitable_friends endpoint in order to render a custom invite dialog, then pass the tokens returned by this API to the standard Requests Dialog.
In other cases, apps are no longer able to retrieve the full list of a user's friends (only those friends who have specifically authorized your app using the user_friends permission). This has been confirmed by Facebook as 'by design'.
For apps wanting allow people to invite friends to use an app, you can still use the Send Dialog on Web or the new Message Dialog on iOS and Android.
UPDATE: Facebook have published an FAQ on these changes here: https://developers.facebook.com/docs/apps/faq which explain all the options available to developers in order to invite friends etc.

Hi Steve,

Question 1: Is there a chance that we developed with Facebook API 1.x, then upgraded to 2.1, and as a result we can now only see friends in our app, that have already added the WeVote app to their Facebook accounts?
I think we developed with Facebook API 2.x.
Yes, you are right about, Initially i did Facebook friending with me/friends API in which we can only see friends in our App, that have already added to WeVote app.(This codebase is with facebookFriendsAction API which you mentioned)
But After some research, we tried to make our App as gaming app so that we could get all Facebook friends .Cdebase for the same is at WebApp side. When you go to network and select choose from Facebook then it will redirect you to /facebook_invitable_friends page. In routes/FacebookInvitableFriends file you can get the logic where i am using /me/invitable_friends endpoint to get all non-app-using friends. We are not storing that friends list in our database.

Question 2: When you debug the python server at line 664 in import_export_facebook/models, do you get a list of all of your facebook friends or just those who have signed up for WeVote? (I get an empty list, just like in the API Explorer) https://developers.facebook.com/tools/explorer/?method=GET&path=1184925174944744%2Ffriends&version=v2.10
Yes, you will get empty list as nobody in your Facebook friends list is using WeVote App.
I think right now this code is not useful for getting Facebook friends. Maybe we can remove this code.

Lemme know if you any issue,happy to help you.

This problem probably only occurs if you are using a local python server, and login to local with facebook, before logging into the live instance with facebook.  Here is how you get out of the situation where you are logging in, but not seeing any friends:
If when you press the press the "f Choose Friends" button, no friends show up...
1) Get the FACEBOOK_APP_ID: value for your config.js from Dale.  Also put that same value in your server side
   "SOCIAL_AUTH_FACEBOOK_KEY" in the environment_variables.json file.  The environment_variables.json file also
   requires a SOCIAL_AUTH_FACEBOOK_SECRET" value to be set that Dale will give you.
  Delete the WeVote app if it exists.
3) Go to the live server at https://wevote.us/welcome
4) Logout if you are logged in
5) Login with facebook (and note that within the login pop-up you are agreeing to "We Vote will receive:
    your public profile, friend list and email address")
6) You now should be able navigate to "Network" in the live WeVote app, press the "f Choose Friends" button,
   and see a list of your friends.
7) After these steps you should be able to login with facebook on your local server, and see the
   invitable_friends list.

My testing shows the retrieve_facebook_friends_from_facebook() function not working at all.  It is called on every facebook login.  The client side FacebookInvitableFriends.jsx does show "invitable_friends" from facebook.  If FacebookInvitableFriends does not appear to work, try the workaround in the previous note, which is also in a comment in FacebookInvitableFriends.jsx

Hi @SailingSteve, feel free to modify that function to return a "success" result without executing. We can then refactor the code that calls it to stop relying on it. Thank you!

Talked:  Comment out the python side, remove the call on the React side with a note saying deprecated for now.

Resolved.


Extend wallet functionality.

Add logic to open wallet using the passphrase.
Fix a small bug with AESEncrypt.
Do some minor refactoring.

Closing this issue in favor of V2


Pressing enter submits empty chat message

...although the button is disabled - enter works.

Should be fixed with #37


chore(src/roadmap/releases.md): update jenkins-jobs var name

From WORKFLOW_RELEASE to workflowChartRelease
Ref https://github.com/deis/jenkins-jobs/pull/230

Would be good if we made a simple sed command for this if we are not automating it in deisrel

@helgi great idea; perl command added.


Add sql-migration extension V0.1.8 to stable extension gallery

Build: https://mssqltools.visualstudio.com/CrossPlatBuildScripts/_build/results?buildId=116260&view=artifacts&pathAsName=false&type=publishedArtifacts
Inline Migration service will be in public preview on 9/1/21. We would like to merge this PR and publish the changes on the morning of 9/1.

for stable gallery, the build should be for the latest release branch, or at least the main branch but the one you have is pointing to a private branch.

I can take care of this on Sep 1st.

@alanrenmsft Me and @aasimkhan30 had a long discussion about this - for this extension they're going to be releasing out of other branches as needed for their scenarios.

Unless, I am missing something it seems only the gallery needs to be updated. There is already 0.1.8 vsix available in the blob storage.

Gallery updated!

@rchlkm FYI you may want to consider adding this to the list of recommended extensions as well : https://github.com/microsoft/azuredatastudio/blob/main/product.json#L42


Windbg runs slowly

Describe the bug
During the dynamic debugging process, pressing the F12 key after the breakpoint made the program run very slowly, one step per second. I tried various methods, such as pressing the F5 key and checking the system hardware, but none of them changed.
To Reproduce
Steps to reproduce the behavior:

Load the debugged file a.exe. into the Ghidra debugger. Use Windbg.
Add the next breakpoint bp1 in the disassembly dialog box of a.exe.
Add the next breakpoint bp1 in the disassembly dialog box of a.exe
Press the F12 key to run, and the program runs very slowly, with one line of code per second. I don't know what the problem is.

Expected behavior
After pressing the F12 key, it should quickly run to the next breakpoint
Environment (please complete the following information):

OS: [windows 10 64bit]
Java Version: [21.0.5]
Ghidra Version: [e.g. 11.13]
Ghidra Origin: [ locally built]

I guess I need a little more explanation about your set-up.  What options are you using with dbgeng (or are you really using windbg proper)?  What are F5 and F12 mapped to?  When you say the "disassembly dialog", do you mean the Static Listing or the Dynamic Listing or something else?  Is there anything particularly unique about this executable or are you seeing this behavior for every executable?  (A pciture would help if you can provide one.)

Hello!
Thank you for helping me analyze the problem. I'm sorry that I couldn't express myself clearly. Below, I will rephrase the current issue.

To Reproduce
Steps to reproduce the behavior:

Step 1  : Import program 'multicastreceiver. exe'
Step 2  : Start dynamic debugging
Step 3  : Use default options for 'Analysis'
Step 4  : Break the breakpoint and press the F12 key. At this point, the program runs very slowly, running one line of disassembly code per second?
I have edited screenshots of each step into a single image, which is attached.

Expected behavior
After pressing the F12 key, it should quickly run to the next breakpoint

Environment (please complete the following information):
Java Version: [21.0.5]
Ghidra Version: [e.g. 11.13]
Ghidra Origin: [ locally built]
Version: Windows 10 Professional Edition
Version number: 22H2
Installation date: May 11, 2024
Internal version of operating system: 19045.5011
Equipment Name: DESKTOP IQBK6HH
Processor: Intel (R) Xeon (R) CPU E5-2450 0 @ 2.10GHz 2.10 GHz
Machine RAM: 16.0GB
System type: 64 bit operating system, based on x64 processor
Pen and Touch: No pen or touch input available for this monitor
Experience: Windows Feature Experience Pack 1000.19060.1000.0

I have tried several methods to solve the problem, but none have been successful  :

Ghidra: Is the configuration correct. Whether there are too many running programs, etc.
Executable file: Select official Qt sample programs and programs in other programming languages
Hardware: Check the usage of the hardware at that time

@txgxbj  Was able to repeat your experience, but I have to ask... do you really want/need to use F12?  F12 is step-out.  In Windows, this means literally that - they are going to single-step the processor until you leave the routine.  If the routine is short, that's not usually terrible, but you're still forcing an interrupt, sending that message back to the debugger, and forcing the debugger to respond to the new state.  If you're using breakpoints, I'm thinking you really want to hit "Resume".  Am I missing something here?

@d-millar  After reading your reply, I understand the problem. Thank you for your help.


Provide a common fail mechanism

While contributing cut to redox's coreutils, I came across the OptionExt trait of libextra. It is really nice as it provides a consistent way to exit a program when a problem occurs. Being clap a command line argument parser, I think it could be very useful if it provides such trait (and its implementation).
If there is consensus that this is a desired feature, I think we can discuss a few things regarding the implementation. For example, I think it might be a good idea to have a function that accepts the exit code. Additionally I think that there should be a function that defaults to stderr.

Currently we have a naive implementation.
I'm open to extended this to be a better implementation! I do, however, want to maintain a either a degree of separation between what should be handled by the argument parser, and what should be handled in user code. Not to say we can't support adding those features clap but it just wouldn't be the default (or the default would at least be something 99.9% of users would do/need).
Ideas?

I think that providing a way to terminate a command line program is a good idea. It might not belong in clap, though. I am open for discussions.
Currently clap contains a way to handle argument parsing related errors. I think this works really well, and should not be touched nor expanded (Except maybe provide a way to select which error code to use on exit and internalization of the error message, but that is a different story)
What I am proposing here is an Trait extending Option and Result that will give clap users a way to exit a program easily. Imagine that the trait is called OptionExt and contains just a unwrap_or_exit method that takes an error message. This will be a program that uses hyper to download something from the web and then saves it to a file.
extern crate clap;
extern crate hyper;

use std::io::{Read, Write};
use std::fs::File;

use clap::{Arg, App, SubCommand, OptionExt };
use hyper::*;

fn main() {
    /// clap stuff resulting in matches

    let url = matches.value_of("url").unwrap()

    let client = Client::new();
    let mut res = client.get(url).send().unwrap_or_exit("Could not send request.");

    let mut buffer = Vec::new();
    res.read_to_end(&mut buffer).unwrap_or_exit("Could not read response.");

    let filename = matches.value_of("filename").unwrap()
    file = File::create(filename).unwrap_or_exit("Could not create output file.");
    file.write_all(&buffer).unwrap_or_exit("Could not write to output file.");
}

This might not seem like a big win but it saves quite a lot of code. More importantly keeps the code clean and focused.
You might argue that the error message is too concise and that the exact reason of the error is not given. That is true, but I think there is a way to provide this as well.
As I said, I am open for discussions and I might also implement this outside clap and see if it fits.

Ah ok, yeah I can see the utility in this, especially in providing consistent error messages. Let me think on a way to best expose or do this. I think providing an extension to Option and Result is fine since users would have to manually import those traits to use. Perhaps also a macro or function which allows users to print an error message in the same style that clap does for consistency with an optional error code.
Granted I think these are all easy things to add manually, i.e. not in clap but I also don't see the harm in including them. Especially for things like, only providing colored output when clap is compiled with colors, etc. All of that would be handled automatically behind the scenes with the user doing nothing more than proving a str for the message.

All of that would be handled automatically behind the scenes with the user doing nothing more than proving a str for the message.

Note that this can be achieved with #641 and Error::exit.

@hgrecco Your suggestion can now be implemented by users of clap:
trait UnwrapOrExit<T>
    where Self: Sized
{
    fn unwrap_or_else<F>(self, f: F) -> T
        where F: FnOnce() -> T;

    fn unwrap_or_exit(self, message: &str) -> T {
        let err = clap::Error::with_description(message, clap::ErrorKind::InvalidValue);
        // Ther ErrorKind does not really matter, because we are only interested in exiting and
        // creating a nice error message in case of failure.
        self.unwrap_or_else(|| err.exit())
    }
}

impl<T> UnwrapOrExit<T> for Option<T> {
    fn unwrap_or_else<F>(self, f: F) -> T
        where F: FnOnce() -> T
    {
        self.unwrap_or_else(f)
    }
}

impl<T, E> UnwrapOrExit<T> for Result<T, E> {
    fn unwrap_or_else<F>(self, f: F) -> T
        where F: FnOnce() -> T
    {
        self.unwrap_or_else(|_| f())
    }
}


Break up the namespaces a bit

rfc5280.py is getting very large; we should break it into a Python directory-style module:
rfc5280/
    __init__.py
    name_constraints.py
    whatever.py

...which in turn means that we can probably shorten the function names a bit.

This is pretty much done. There is probably more namespace devolution that could be done, but that can happen on a case-by-case basis.


Improve the way plugins are selected

This is another enhancement on top #5396. The plugins are currently selected by scanning $PATH. This behaviour should be the fallback strategy, the first strategy should be to scan the directory where the current forc binary is being stored.
Context: https://forum.fuel.network/t/mystical-mistake-on-the-sames-toolchains/3867/6

@crodas how can i now fix my problem?

@crodas i got this
^^>>> echo $PATH | tr ':' '\n' | xargs -I{} find {} -type f -name "forc-*" | sort                                        17:45:04  xargs: command line cannot be assembled, too long

@crodas

@crodas it looks like problem you describe for @chlenc, not for me . but i have problem with building contract..

@crodas  The problem is that the small contract we posted on the forum builds without any issues for me, but Alex is facing problems with the build. However, in the real project we are working on, I'm the one having build issues, not Alex. The contract on the forum is just a demonstration that the compiler behaves differently with absolutely identical versions.

@crodas help us


Minimal document edits for file content change

Re https://github.com/microsoft/vscode/issues/157695. Previously, we would replace the whole notebook with the new content whenever there is file change event, even if there is no real change in the file event.
In this PR, we attempt to compute minimal edits required for updating the NotebookTextModel to latest. The content change is translated to

If cells at the same position have the same language, content, cellKind, internal metadata, and mime, then we treat them as unchanged, we will not do a replacement

Instead, we update its metadata (object) and outputs (buffers) accordingly. To ensure it's performant, we don't compare metadata (as it can be big and nested) or outputs (comparing buffers can take long time)

Otherwise, we do a simple replacement, which means the cell is removed and then inserted with new ones, this will lose the cell view states.

It seems that even when we are not updating cell content, we are still repeatedly calculating estimated editor height and in every call it fetches cell execution and validate if it should include the status bar height.

Pushed two optimizations:

Avoid broadcast layoutChange when we splice outputs that are not rendered at all. A splice on outputs that are not rendered yet will not trigger any real height change so we can skip them.
Batch notebookHasOutputs calculation. Previously we update this whenever there is an ouput change on any cell, now we make sure that if we have multiple cell output changes, we only calculate once.

With above, the applyEdits time went down to ~60 from ~220 with a notebook that contains 1800 cells


Greencode module

Doc : https://hedgedoc.eclair.ec-lyon.fr/CQfERrCRSuacIMpqEaPfng

Codecov Report
Attention: Patch coverage is 33.73494% with 55 lines in your changes are missing coverage. Please review.

Project coverage is 54.24%. Comparing base (32264c5) to head (71bff35).

Files
Patch %
Lines

...encode/repositories/greencode_item_repository.dart
0.00%
28 Missing :warning:

lib/greencode/class/greencode_item.dart
22.22%
21 Missing :warning:

...de/providers/all_greencode_item_list_provider.dart
73.91%
6 Missing :warning:

Additional details and impacted files
@@            Coverage Diff             @@
##             main     #366      +/-   ##
==========================================
- Coverage   54.71%   54.24%   -0.47%
==========================================
  Files         168      172       +4
  Lines        3670     3753      +83
==========================================
+ Hits         2008     2036      +28
- Misses       1662     1717      +55

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


feat/flavored-toasts

Please review before merging.

:tada: This PR is included in version 1.31.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


License is listed as proprietary on Ubuntu store

In the Ubuntu store app Lepton's license shows as 'proprietary'
on the store website license shows as 'unset'
https://snapcraft.io/lepton

I don't how to update the license on the store. Please use the GitHub
license as the single source of truth.
On Mon, Sep 3, 2018 at 5:15 AM kfazz<EMAIL_ADDRESS>wrote:

In the Ubuntu store app Lepton's license shows as 'proprietary'
on the store website license shows as 'unset'
https://snapcraft.io/lepton
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/hackjutsu/Lepton/issues/313, or mute the thread
https://github.com/notifications/unsubscribe-auth/AFS-SI-MfqlhYllXAQ-pRMjemxlGII2lks5uXPM6gaJpZM4WXPz-
.

I tried and can not figure out how to update the UI. Please use GitHub license as the single source of true. Thanks.


undefined method `comfy_paginate' for Comfy::Admin::Blog::BlogsController#index

I installed the latest gem for comfy-blog, and as I'm trying to access the 'Blogs' link in the admin page, I immediately get this undefined error. It seems that the latest gem is using comfy_paginate, but it's not defined anywhere? How do I get around this?

My apologies if this is a quick fix; I'm still learning Rails haha!

I might've messed up gemspec. Make sure you also have 1.12.4 version of CMS

Ahh that did it, I was on the 1.12.3 version of the CMS. Thanks for the quick response!


Some text in messages are converted to maps link and should not

Ex: "synchrone peut tenir la route la" will add a link on "one peut tenir la route la"

FTR map link detection will be deactivated, it is not reliable enough


Bump swift-tools-version

SPM package resolve failed due to old tool version. This leads to error during build process and impossible use via SPM.

@joncardasis Hi! How are you?
Could you assist with this please?


Improving accuracy of model using Decision Tree and SVM algorithm

Hey @abhijeet141 I would like to contribute under GSSOC.
The accuracy of the ML model can be improved using Decision Tree and SVM algorithm that helps to identify the pattern among data and then process it as per the input conditions.

Hi @i-am-SnehaChauhan
Thank you for creating the issue. However, after careful consideration, I believe that our model's current accuracy of 99% is already quite high and meets our requirements. If you have any other issues or suggestions related to the project, I would be more than happy to consider them and collaborate on those.


[Bug]: GPT-4-Vision-Preview Warning - Undefined array key "finish_reason" in .../Responses/Chat/CreateResponseChoice.php on line 24.

Description
It appears the gpt-4-vision-preview model has a different response structure in $attributes here:
https://github.com/openai-php/client/blob/759196cb9eb5550c16c7d1b15364a925a3b8d3e3/src/Responses/Chat/CreateResponseChoice.php#L16-L26
array [
    'message' => [
        'role' => 'assistant',
        'content' => '...',
    ],
    'finish_details' => [
        'type' => 'stop',
        'stop' => '<|fim_suffix|>',
    ],
    'index' => 0,
]

Steps To Reproduce
// Undefined array key "finish_reason" in .../Responses/Chat/CreateResponseChoice.php on line 24.
OpenAI::chat()->create([
    'model' => 'gpt-4-vision-preview',
    'messages' => [
        [
            'role' => 'system',
            'content' => 'Analyze this image',
        ],
        [
            'role' => 'user',
            'content' => [
                [
                    'type' => 'image_url',
                    'image_url' => [
                        'url' => 'https://en.wikipedia.org/static/images/icons/wikipedia.png',
                    ],
                ]
            ],
        ],
    ]
]);

OpenAI PHP Client Version
v0.6.4
PHP Version
8.1.22
Notes
No response

Had to update, my mistake 🙏


Appstudio update mvp-test-component

Pipelines as Code configuration proposal

Pipelines as Code CI/mvp-test-component-on-pull-request has successfully validated your commit.

StatusDurationName

✅ Succeeded
6 seconds
init

✅ Succeeded
21 seconds
clone-repository

✅ Succeeded
1 minute
build-container

✅ Succeeded
15 seconds
clair-scan

✅ Succeeded
1 minute
clamav-scan

✅ Succeeded
12 seconds
sanity-inspect-image

✅ Succeeded
12 seconds
deprecated-base-image-check

✅ Succeeded
11 seconds
sbom-json-check

✅ Succeeded
16 seconds
sanity-optional-label-check

✅ Succeeded
16 seconds
sanity-label-check

✅ Succeeded
5 seconds
show-summary


Fix Mapping, Remove Dummy UTXOs, Support Edge Cases

Addressing: #2
Refactor of selectUtxos() and generatePsbtBuyingInscription()
-Inscriptions will now always be at satIndex 0 of the taker's receiving output
-Dummy UTXOs to assert index match requirements of sighashsingle are now unecessary
With the new PSBT construction, the inscribed output may in many cases be the last output of the transaction.  In any cases where the fees for the PSBT would result in the inscribed output being less than 2k sats in value, the taker will be required to provide additional inputs to cover these fees.  If the additional inputs provided are also sufficient to add padding back to the inscribed output, they will be used (up to 10k value). -Note:  The taker still owns these sats, they're just preserving the padding.

@p0stcapone just one comment, the code reformatting is causing the diff a little tough to read

@p0stcapone just one comment, the code reformatting is causing the diff a little tough to read

Changes are isolated to selectUtxos() and generatePsbtBuyingInscription() -noted in the PR title
Apologies for the formatting

Closing pull request to replace with refactor of up to date app.js


new-new-new requires node 8?

will this be a hard requirement?
node 8 comes with npm 5 which is very annoyingly broken.

You can upgrade npm with npm install npm@latest -g

No longer does; fixed! :grin:


[Sponge] Create warning when offering a non-tile entity related Key or DataManipulator to a Location without a Cause.

Relates to this, https://github.com/SpongePowered/SpongeForge/issues/818
Only issue I can see is determining if a Key can be applied to tile entities, I'm not sure how that works internally.

This won't be relevant in API 6, so I won't bother supporting it.


[Bug]: Confirm that the SQL window formatting button is invalid

ODC version
odcbp1
OB version

What happened?

What did you expect to happen?

How can we reproduce it (as minimally and precisely as possible)?
Create a table and click format when confirming SQL
Anything else we need to know?
No response

Fixed In Commit d87fe60c5f8e5d7b15466c0bb9f8fc6c916674ed
------
xiaokang
Wed Jun 19 11:52:25 2024 +0800

pass


Regenerate nasa-veda credentials every 60 days

https://github.com/2i2c-org/infrastructure/issues/2339 is related, but this is specifically for the continuous deployer key.
Here's the how to on doing this:

Authenticate yourself - see https://repost.aws/knowledge-center/authenticate-mfa-cli on how to
Go to the aws terraform directory: cd terraform/aws
Make sure you're in the right terraform workspace terraform workspace select nasa-veda
Change https://github.com/2i2c-org/infrastructure/blob/8ca9130e46a8af8e9ed672cd680ace9dc9f4cc4e/terraform/aws/cd.tf#L11 to say 'eks-readonly-2'
Apply the changes, this will recreate the credentials
Change that back to saying eks-readonly
Apply the changes again, this will make sure there is no state diff needed.
Run  terraform output -raw continuous_deployer_creds > ../../config/clusters/nasa-veda/enc-deployer-credentials.secret.json to output new unencrypted AWS Credentials
Run sops -i -e ../../config/clusters/nasa-veda/enc-deployer-credentials.secret.json to encrypt those credentials. Note there is probably a safer way to do (8) and (9) to reduce risk of accidentally committing this secret unencrypted to the git repo.
Run deployer deploy nasa-veda staging to test

This needs to be done every 60 days :(

We're coming up on the next cycle for this.  Is it clear who will actually perform the steps listed above for this cycle?

@jmunroe Id suggest you create a separate issue for the upcoming regeneration linking to this so it can be prioritized/assigned by @damianavila and @2i2c-org/engineering and not get lost in an older issue

No longer get errors with terraform plan so following instructions
Apply complete! Resources: 2 added, 2 changed, 1 destroyed.

Deploy to staging with new credentials
git status -s
 M config/clusters/nasa-veda/enc-deployer-credentials.secret.json
...
Release "staging" has been upgraded. Happy Helming!
NAME: staging
LAST DEPLOYED: Thu Jun  1 14:38:13 2023
NAMESPACE: staging
STATUS: deployed
REVISION: 47
TEST SUITE: None

Oops put fixed against the wrong issue

This just expired again, and @freitagb is thankfully helping me sort this one out.

I'm authenticating myself like this:

I've setup a .aws/credentials file to reference an access key created# about config: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-files.html
# about aws cli env vars: https://docs.aws.amazon.com/cli/latest/userguide/cli-configure-envvars.html
# about regenerating creds: https://github.com/2i2c-org/infrastructure/issues/2434
#

[nasa-veda]
# https://smce-veda.signin.aws.amazon.com/console
#
# TMP=$(aws sts get-session-token --profile nasa-ghg --serial-number <...> --token-code <...>)
# export AWS_ACCESS_KEY_ID=$(echo $TMP | jq -r .Credentials.AccessKeyId)
# export AWS_SECRET_ACCESS_KEY=$(echo $TMP | jq -r .Credentials.SecretAccessKey)
# export AWS_SESSION_TOKEN=$(echo $TMP | jq -r .Credentials.SessionToken)
#
aws_access_key_id=<...>
aws_secret_access_key=<...>

I use the following commands to acquire useful CLI creds, relying on aws and jqTMP=$(aws sts get-session-token --profile nasa-ghg --serial-number arn-for-mfa-device --token-code code-from-token)
export AWS_ACCESS_KEY_ID=$(echo $TMP | jq -r .Credentials.AccessKeyId)
export AWS_SECRET_ACCESS_KEY=$(echo $TMP | jq -r .Credentials.SecretAccessKey)
export AWS_SESSION_TOKEN=$(echo $TMP | jq -r .Credentials.SessionToken)

@consideRatio there is a command in the deployer that will handle MFA of the CLI for these kinds of accounts. Yuvi added it up after I struggled with the bucket setup.

I was going to run this, to get it off our hands until after christmas, but I ran into unrelated trouble in the terraform state for both nasa-veda and nasa-ghg, but not for example openscapes.
@yuvipanda I recognize this to be a consequence of https://github.com/2i2c-org/infrastructure/pull/3381 not being applied. I'm not sure if its disruptive for workloads accessing the homedirs currently - but luckily nasa-veda and nasa-ghg are without users atm so I'll go for it.
  # aws_efs_mount_target.homedirs will be destroyed
  # (because resource uses count or for_each)
  - resource "aws_efs_mount_target" "homedirs" {
      - availability_zone_id   = "usw2-az2" -> null
      - availability_zone_name = "us-west-2a" -> null
      - dns_name               = "fs-09bd18b3ca23eefa2.efs.us-west-2.amazonaws.com" -> null
      - file_system_arn        = "arn:aws:elasticfilesystem:us-west-2:597746869805:file-system/fs-09bd18b3ca23eefa2" -> null
      - file_system_id         = "fs-09bd18b3ca23eefa2" -> null
      - id                     = "fsmt-0c2bce0a2c878da81" -> null
      - ip_address             = "<IP_ADDRESS>" -> null
      - mount_target_dns_name  = "us-west-2a.fs-09bd18b3ca23eefa2.efs.us-west-2.amazonaws.com" -> null
      - network_interface_id   = "eni-0624d23adde1f3de3" -> null
      - owner_id               = "597746869805" -> null
      - security_groups        = [
          - "sg-05fcb798fcd453b9c",
        ] -> null
      - subnet_id              = "subnet-02d33168edc138459" -> null
    }

  # aws_efs_mount_target.homedirs["subnet-02d33168edc138459"] will be created
  + resource "aws_efs_mount_target" "homedirs" {
      + availability_zone_id   = (known after apply)
      + availability_zone_name = (known after apply)
      + dns_name               = (known after apply)
      + file_system_arn        = (known after apply)
      + file_system_id         = "fs-09bd18b3ca23eefa2"
      + id                     = (known after apply)
      + ip_address             = (known after apply)
      + mount_target_dns_name  = (known after apply)
      + network_interface_id   = (known after apply)
      + owner_id               = (known after apply)
      + security_groups        = [
          + "sg-05fcb798fcd453b9c",
        ]
      + subnet_id              = "subnet-02d33168edc138459"
    }

  # aws_efs_mount_target.homedirs["subnet-03725b83b8689d3c2"] will be created
  + resource "aws_efs_mount_target" "homedirs" {
      + availability_zone_id   = (known after apply)
      + availability_zone_name = (known after apply)
      + dns_name               = (known after apply)
      + file_system_arn        = (known after apply)
      + file_system_id         = "fs-09bd18b3ca23eefa2"
      + id                     = (known after apply)
      + ip_address             = (known after apply)
      + mount_target_dns_name  = (known after apply)
      + network_interface_id   = (known after apply)
      + owner_id               = (known after apply)
      + security_groups        = [
          + "sg-05fcb798fcd453b9c",
        ]
      + subnet_id              = "subnet-03725b83b8689d3c2"
    }

  # aws_efs_mount_target.homedirs["subnet-08630a475fe02d001"] will be created
  + resource "aws_efs_mount_target" "homedirs" {
      + availability_zone_id   = (known after apply)
      + availability_zone_name = (known after apply)
      + dns_name               = (known after apply)
      + file_system_arn        = (known after apply)
      + file_system_id         = "fs-09bd18b3ca23eefa2"
      + id                     = (known after apply)
      + ip_address             = (known after apply)
      + mount_target_dns_name  = (known after apply)
      + network_interface_id   = (known after apply)
      + owner_id               = (known after apply)
      + security_groups        = [
          + "sg-05fcb798fcd453b9c",
        ]
      + subnet_id              = "subnet-08630a475fe02d001"
    }

Re-generated, see #3442!

Thanks for applying that, @consideRatio. Those are not disruptive, and I had missed applying them. Am getting better at getting things to 100% complete than 90%, but this slipped through - sorry about that.

I'm now having to do this for nasa-esdis. I ran into the same issue described by Erik here and applied since they were to be non-disruptive. But I got an error message:
│ Error: creating EFS Mount Target (fs-0013506a2d5ee70fc): MountTargetConflict: mount target already exists in this AZ
│ {
│   RespMetadata: {
│     StatusCode: 409,
│     RequestID: "71f43368-7e14-4949-9856-60dbd0d56a78"
│   },
│   ErrorCode: "MountTargetConflict",
│   Message_: "mount target already exists in this AZ"
│ }
│
│   with aws_efs_mount_target.homedirs["subnet-0614449fa3a84a06e"],
│   on efs.tf line 70, in resource "aws_efs_mount_target" "homedirs":
│   70: resource "aws_efs_mount_target" "homedirs" {

I also generalised the title a bit

@damianavila It may need to happen now. There is no Access Key associated with the hub-continuous-deployer user in the AWS console, and running deployer deploy nasa-ghg staging failed with:
An error occurred (UnrecognizedClientException) when calling the DescribeCluster operation: The security token included in the request is invalid.

@damianavila It may need to happen now.

@sgibson91, can you take care of this one before EOW?

Done

Re-generated all creds again to keep them aligned as part of doing it for esdis where the deployer key had been deleted for some reason.

@2i2c-org/engineering I'll assign myself to do regular checks of this every ~50 days or so, aiming for between 1-2 weeks notice.

re-generate deployer credentials before they expire
check if a member of 2i2c has been blocked after getting expired passwords, unblock them and send new credentials via slack
write a reminder in #engineering to refresh both cloud console passwords and the any CLI credentials they may have setup

This is amazing, thank you so much @consideRatio

Ah, I think the issue is that the instructions didn't replace existing credentials, they only ensured new ones if the previous were gone.
I've updated the instructions to use a flag for terraform apply, making us get what we want done more directly: -replace=aws_iam_access_key.continuous_deployer.
I think due to this, my conclusions on needing to re-generate more often than every 60 days was incorrect - we just had to make sure we successfully re-generated credentials even if there were existing non-expired credentials around already.

I've scheduled myself to re-generate 23 April, in two weeks.

I've been asked to not do this task by @yuvipanda, but credentials will expire ~now or have already expired I think, so I've unassigned myself and moved this to the top of the refined backlog.

Thank you for not doing it, @consideRatio. It should be handled as part of https://github.com/2i2c-org/infrastructure/issues/4114. Those credentials have expired, because ideally we would have gotten to this as part of last refinement. But we didn't, and that's ok.
I'm going to actually close this task, as we'll instead be generating new tasks each time based on the calendar mentioned there.


A suggestion on a new API design

First of all I must say I can't thank you enough for all the time and effort that your MahApps projects had saved me in my projects.
I've got a suggestion on API design of this project. The main idea came to my mind by looking at how we use Brush, Brushes classes with Foreground property on a control. Through years I've learned that using generic classes along with xaml is not good idea... It will make headaches for the developer down the road... Like having you defined different styles with exactly same xaml code for different TKind in PackIconBase... The following classes are just for demonstration of the idea so it will be easier to understand.
Design
The first class stores the icon data (It's like Brush class or even Color class, read on and you'll find out why). It can even contain other properties like the preferred Brush to draw it with, which can be ignored when it is null (In IconPresenter control template) and the Foreground of IconPresenter would be used instead.
[ContentProperty("PathData")]
public class IconData : Freezable
{
    public static IconData Empty;

    static IconData()
    {
        Empty = new IconData();
    }

    public IconData()
    {
    }

    public IconData(string pathData)
    {
        PathData = pathData;
    }

    private static readonly DependencyProperty PathDataProperty = DependencyProperty.Register(
        nameof(PathData),
        typeof(string),
        typeof(IconData),
        new PropertyMetadata(null));

    [Bindable(true), Category("Appearance")]
    public string PathData
    {
        get => (string) GetValue(PathDataProperty);
        set => SetValue(PathDataProperty, value);
    }

    protected override Freezable CreateInstanceCore()
    {
        return new IconData();
    }
}

The next class is an example of our libraries of icons (like Brushes class but for Modern icons).
public static class ModernIcons
{
    private static readonly object CupcakeKey = new object();
    private static readonly object BeerKey = new object();

    private static readonly IDictionary<object, IconData> Icons = new Dictionary<object, IconData>
    {
        {CupcakeKey, new IconData("M50.67,22.17A3.16,3.16 0 0,1 53.83,25.33C53.83,25.91 53.68,26.45 53.41,26.92H53.83C55.58,26.92 57,28.33 57,30.08A3.17,3.17 0 0,1 53.83,33.25H55.42C57.17,33.25 58.58,34.67 58.58,36.42A3.16,3.16 0 0,1 55.42,39.58H23.75C22,39.58 20.58,38.17 20.58,36.42A3.17,3.17 0 0,1 23.75,33.25H25.33C23.58,33.25 22.17,31.83 22.17,30.08A3.16,3.16 0 0,1 25.33,26.92H25.76C25.5,26.45 25.33,25.91 25.33,25.33C25.33,23.58 26.75,22.17 28.5,22.17C30.08,22.17 33.25,19 39.58,17.42C45.92,22.17 49.08,22.17 50.67,22.17M23.75,41.17H55.42L50.67,57H28.5L23.75,41.17Z")},
        {BeerKey, new IconData("M24,20H49L49.08,26.92C53.46,26.92 57,30.46 57,34.83V42.75A7.92,7.92 0 0,1 49.08,50.67L49,59H24V20M49,46C50.75,46 53,43.75 53,42V36C53,34.25 50.75,31 49,31V46M27,23V25H46V23H27M46,56V54H27V56H46M30.5,28C29.63,28 29,29.13 29,30V49C29,49.87 29.63,51 30.5,51C31.37,51 32,49.87 32,49V30C32,29.13 31.37,28 30.5,28M36.5,28C35.63,28 35,29.13 35,30V49C35,49.87 35.63,51 36.5,51C37.37,51 38,49.96 38,49.08V30C38,29.13 37.37,28 36.5,28M42.5,28C41.63,28 41,29.13 41,30V49C41,49.87 41.63,51 42.5,51C43.37,51 44,49.87 44,49V30C44,29.13 43.37,28 42.5,28M23.75,17.23C25,17 31.67,13.67 33.25,15.25C34.83,16.83 36.42,16.83 38,16.83C39.58,16.83 41.17,15.25 44.33,15.25C45.92,15.25 49.08,16.04 49.08,17.63C49,21 47.9,18.81 47.9,18.81C47.9,18.81 47.1,17.23 43.94,17.23C40.77,17.23 39.58,18.81 38,18.81C36.42,18.81 33.65,17.23 30.5,17.23C27.31,17.23 26.88,18.83 24.94,18.42C23,18 21,20 21.77,22C23,24 22.17,25.28 22.17,27.5C22.17,27.92 21.75,27.88 21.38,25.94C21,24 19,23.17 19,21.58C19,20 19.17,19.83 20.58,18.42C22,17 22.5,17.46 23.75,17.23Z") }
    };

    public static IconData Cupcake => Icons[CupcakeKey];
    public static IconData Beer => Icons[BeerKey];
}

And the last one is the control which hosts the icon.
public class IconPresenter : Control
{
    private static readonly DependencyProperty DataProperty = DependencyProperty.Register(
        nameof(Data),
        typeof(IconData),
        typeof(Icon),
        new PropertyMetadata(null));

    [Bindable(true), Category("Appearance")]
    public IconData Data
    {
        get => (IconData) GetValue(DataProperty);
        set => SetValue(DataProperty, value);
    }
}

Usage
<icons:IconPresenter Data="{x:Static icons:ModernIcons.Cupcake}" />

In my initial search I couldn't find a way to implement some kind of converter in designer to use strings instead of '{x:Static icons:ModernIcons.Cupcake}' just like we use 'Red' in a foreground property. But even though I could find one, I would definitely not find a way to have intellisense for that.
The developer can even have their own icons defined and use it in the same manner by StaticResource.
<controls:IconData x:Key="CustomIcon">M21,16V14L13,9V3.5A1.5,1.5 0 0,0 11.5,2A1.5,1.5 0 0,0 10,3.5V9L2,14V16L10,13.5V19L8,20.5V22L11.5,21L15,22V20.5L13,19V13.5L21,16Z</controls:IconData>

And then
<icons:IconPresenter Data="{StaticResource CustomIcon}" />

Implementation
We can define an XSD file and a couple of corresponding XML files for each icon pack. Then have a T4 text template to generate classes. The resulting solution structure will be much cleaner and easier to maintain.
NuGet
We would have MahApps.Metro.IconPacks.Core which contains the IconData and IconPresenter classes. And a separate package for each icon pack like MahApps.Metro.IconPacks.Modern which contain classes like ModernIcons. And another package MahApps.Metro.IconPacks which have dependency on all of the mentioned packages.
Browser
For browser application compatibility we can use attributes on static properties of the icon pack classes (For name, description, tags etc.)
Advantages

Cleaner and simpler resulting solution structure which is easier to maintain
It is more resource dictionary friendly in expandability aspect.
We have just one IconPresenter class across application to have its default style set.
Developers can easily define preferred brushes for icons (They are not a simple shape).
Developers can use their custom icons along with our predefined icons in the same manner.
If developers wants to organize their used icons in an application, They can have their own icons repository class defined. And this way they can easily switch between icons for an specific purpose.

public static class ApplicationIcons
{
    private static readonly object AppIconKey = new object();
    private static readonly object NewKey = new object();

    private static readonly IDictionary<object, IconData> Icons = new Dictionary<object, IconData>
    {
        {AppIconKey, ModernIcons.Cupcake},
        {NewKey, MaterialIcons.PlusCircleOutline}
    };

    public static IconData AppIcon => Icons[AppIconKey];
    public static IconData New => Icons[NewKey];
}

Further discussion
We can even forget about the ModernIcons and similar classes and add resource dictionaries for different icon packs and add another property named BasedOn on IconData to help the developer have an alternative solution for the ApplicationIcons class discussed above (If you prefer xaml based solutions for UI problems). But I like it more in C# manner, you know, it's a library and other people shouldn't be able to modify it easily. But this doesn't mean having BasedOn property is wrong. And of course we should handle possible loops in BasedOn parents. Or maybe, we can have another class named Icon which is responsible for storing things like Fill brush along with IconData (I like this idea more).
Summary
So suggested classes and their responsibilities are as following:

IconData: Storing path data of the icon
MaterialIcons: Storing IconData of the known icons in each icon pack
IconPresenter: A control which shows the icon
Icon**: Storing other info about icon like Fill brush along with IconData. An IconData must be easily convertable to an Icon. If defined IconPresenter would use this instead of IconData. So it's kinda like Brush class and IconData is kinda like Color class.

** Additionally suggested, but it would be nice to have something like this.
And at the end I must say fixing FlowDirection in the default style (as it is now) for hosting controls is a bad idea. Sometimes we want the icon to adapt the hosting window's FlowDirection... For example an arrow for the GO button. By overriding its FlowDirection in the default style it doesn't inherit its value from its parent container anymore so it has to be maintained manually and that is definitely a problem. By using suggested IconData (Or Icon) class we can overcome this problem too, but again, I strongly advise against it to have it hard-coded inside the library (One can use the alternative suggested approach in ApplicationIcons class for their specific requirement)
I'm open to any kind of discussion/suggestion about this idea, and in ways which it is not practical. And of course I'm willing to help in implementing it because I don't think it takes more than couple of weekends.

May be able to use CustomResource or a UWP Markup Extension to aid lookup too.


introduced classes for api v2 endpoints

Introduced classes for api v2 endpoints.
Closes #176

Release notes:

Introduces classes needed for api v2 endpoints


Improving asciicinema in Readme

it need to more clear explanation of the tool.


Double place sound with glass

What version of ViaVersion are you using? Type /ver viaversion
0.4.5
What version of Spigot are you using? Type /ver
git-Spigot-e4d4710-e1ebe52
What plugins are you using? /plugins
ViaVersion
How does this error happen? login? using an item?
Place a glass block
Is there an error in the console? Use pastebin.com. Is there a kick message?
No errors

I have found that this is happening with most if not all of the blcoks not only glass

I fixed the other blocks already, but it isn't yet pushed to a public release.
https://github.com/MylesIsCool/ViaVersion/commit/8f132fed1478d1c823dd588be7bec750ef4edd69

oh

Closed fixed


row-major or col-major?

Hi @rogersce
Thank you for your work.

I am working on reading data from .npy.

cnpy::NpyArray mat = cnpy::npy_load(file);
int row = mat.shape[0];
int col = mat.shape[1];
float* data = mat.data<float>();
For some npy files, I should read in col-major to get correct form;

for (int r = 0; r < row; ++r) {for (int c = 0; c < col; ++c) {egn(r, c) = data[offset]; ++offset;}}
And for the other npy files, I should read in row-major to get correct form;

for (int c = 0; c < col; ++c) {for (int r = 0; r < row; ++r) {egn(r, c) = data[offset]; ++offset;}}
I do not know when row-major and when col-major.

For anyone else stumbling across this:
Numpy stores data in row-major by default, but Eigen in column-major.
So in order to load the data correctly, you have to do the following
    cnpy::npz_t loadedNpz = cnpy::npz_load(file.string());
    cnpy::NpyArray npPositions = loadedNpz["positions"];

    // YOU HAVE TO BE CAREFUL, NUMPY STORES DATA IN ROW-MAJOR, BUT EIGEN in COLUMN-MAJOR BY DEFAULT
    float *positionsArray = npPositions.data<float>();
    Eigen::MatrixX3f positions;
    positions = Eigen::Map<Eigen::Matrix<float, Eigen::Dynamic, 3, Eigen::RowMajor>>(positionsArray, npPositions.shape[0], npPositions.shape[1]);

If you load something that is square (e.g. a 4x4 matrix), it will appear to be transposed if you don't specify the Eigen::RowMajor flag. If you load something non-square (e.g 100x3), it will be completely different to the original data order if you don't specify the flag.

if the var "fortran_order" in struct NpyArray is TRUE, then col-oder; else row-oder

Thank you two.

For anyone else stumbling across this: Numpy stores data in row-major by default, but Eigen in column-major.
So in order to load the data correctly, you have to do the following
    cnpy::npz_t loadedNpz = cnpy::npz_load(file.string());
    cnpy::NpyArray npPositions = loadedNpz["positions"];

    // YOU HAVE TO BE CAREFUL, NUMPY STORES DATA IN ROW-MAJOR, BUT EIGEN in COLUMN-MAJOR BY DEFAULT
    float *positionsArray = npPositions.data<float>();
    Eigen::MatrixX3f positions;
    positions = Eigen::Map<Eigen::Matrix<float, Eigen::Dynamic, 3, Eigen::RowMajor>>(positionsArray, npPositions.shape[0], npPositions.shape[1]);

If you load something that is square (e.g. a 4x4 matrix), it will appear to be transposed if you don't specify the Eigen::RowMajor flag. If you load something non-square (e.g 100x3), it will be completely different to the original data order if you don't specify the flag.

hi @RunOrVeith , i tried with both Eigne::RowMajor and Eigen::ColMajor, the results are same. I need to call .transpose() to get the same data as numpy. Could you help with this? Thanks.


Add custom colors possibility via css

Love your plugin.
I added to my project, and while the default colors are great, and customization is possible for custom notification types, I'd like to be able to set custom colors for the standard default types.

This is an example of the css you should add if you use custom colors for standard notification types. If you only want the colors for the 'success' notification to be different, you just add:

.overhang-custom-success-primary-color,
.overhang-custom-success-border

to the .overhang div, and:

.overhang-close-custom-success-color

to the  .overhang-close
.overhang.overhang-custom-success-primary-color {
  background-color    : #2ECC71;
}

.overhang.overhang-custom-success-border {
  border-bottom : 6px solid #27AE60;
}

.overhang-close.overhang-close-custom-success-color {
  color : #27AE60;
}

Hi @mihaisavezi!
Thanks for your note. However, customization for default notification types is already supported. Regardless of the type of notification, if you pass in the custom argument as true, you will be able to override the default colors by passing in attributes such as textColor, primary and accent.
If you have any other questions, I'd be glad to sort things out :)


docs: [FC-0074] improve format and wording in concepts docs

Description
This PR:

Add quote block to Django signals definition from Django docs
Reference list of use cases in how are events used
Use "send events internally" instead of within the same app process to improve readability

Thanks for the pull request, @mariajgrimaldi!
What's next?
Please work through the following steps to get your changes ready for engineering review:
:radio_button: Get product approval
If you haven't already, check this list to see if your contribution needs to go through the product review process.

If it does, you'll need to submit a product proposal for your contribution, and have it reviewed by the Product Working Group.

This process (including the steps you'll need to take) is documented here.

If it doesn't, simply proceed with the next step.

:radio_button: Provide context
To help your reviewers and other members of the community understand the purpose and larger context of your changes, feel free to add as much of the following information to the PR description as you can:

Dependencies

This PR must be merged before / after / at the same time as ...

Blockers

This PR is waiting for OEP-1234 to be accepted.

Timeline information

This PR must be merged by XX date because ...

Partner information

This is for a course on edx.org.

Supporting documentation
Relevant Open edX discussion forum threads

:radio_button: Get a green build
If one or more checks are failing, continue working on your changes until this is no longer the case and your build turns green.
:radio_button: Let us know that your PR is ready for review:
Who will review my changes?
This repository is currently maintained by @openedx/hooks-extension-framework.  Tag them in a comment and let them know that your changes are ready for review.
Where can I find more information?
If you'd like to get more details on all aspects of the review process for open source pull requests (OSPRs), check out the following resources:

Overview of Review Process for Community Contributions
Pull Request Status Guide
Making changes to your pull request

When can I expect my changes to be merged?
Our goal is to get community contributions seen and reviewed as efficiently as possible.
However, the amount of time that it takes to review and merge a PR can vary significantly based on factors such as:

The size and impact of the changes that it introduces
The need for product review
Maintenance status of the parent repository

:bulb: As a result it may take up to several weeks or months to complete a review and merge your PR.


Add resource backend config

Adds the configuration of the resource backend for the current static topology.

@johnbelamaric this has to happen after containerlab has been interconnecting the clusters, right?

@johnbelamaric this has to happen after containerlab has been interconnecting the clusters, right?

I think this is just the IPAM and VLAN allocator config. Necessarily but not sufficient for the actual networking. I think that still needs to be done. @henderiw correct?


Counter cache doesn't work with polymorphic association

It breaks here with NameError: uninitialized constant Commentable

The quick and dirty patch (in config/initializers/permanent_records.rb) :
require 'permanent_records'

# Patch PermanentRecords to not check for counter_cache on polymorphic association

module PermanentRecordsPatch
  def self.included(base)
    base.send(:include, InstanceMethods)
    base.class_eval do
      alias_method_chain :each_counter_cache, :patch
    end
  end

  module InstanceMethods

    def each_counter_cache_with_patch
      _reflections.each do |name, reflection|
        next if reflection.polymorphic?
        associated_class = association(name).reflection.class_name.constantize
        next unless reflection.belongs_to? && reflection.counter_cache_column
        yield(associated_class,
              reflection.counter_cache_column,
              send(reflection.foreign_key))
      end
    end

  end
end

unless PermanentRecords::ActiveRecord.included_modules.include?(PermanentRecordsPatch)
  PermanentRecords::ActiveRecord.send(:include, PermanentRecordsPatch)
end

Oh, I'll fix it tomorrow

Oh, I'll fix it tomorrow

Ok. As I said this is a quick and dirty patch. I don't know if counter_cache works with polymorphic associations. By looking at the code as it's written I would say no.
associated_class = association(name).reflection.class_name.constantize

But maybe it's possible to get all polymorphic classes (classes which are commentable for instance).

Created a pull request that should fix the issue (regarding to specs). Could you check gem version from github (gem 'permanent_records', github: 'drakmail/permanent_records', branch: 'polymorphic_counter_cache'?

@drakmail I've added you as a collaborator on permanent_records so please do what you feel is best in getting this fix merged. If we land changes on master I'll bump the version and re-publish the gem.

@drakmail : I've switched to your branch and run my tests and it works.


string template (multiple call) does not rendered correctly

Vue version
3.2.45
Link to minimal reproduction
https://sfc.vuejs.org/#__SSR__eNq1VV1v2jAU/St30SRaDRJK95QBWtdJUx+6SZvUl2US+TDgLrFT2wkwxH/f9UdCgG5q9/HQyr6+Offc6+PD1rsqS7+uiBd6Y5kKWirIY7aYRJ6SkQeSqKqcRgyAFiUXCraw7EPKi5LmpA+CxKmitVnN+8DZOzLngtzyiim9NQuS9WFB1HUlBGHqhkkVs5TADuaCF9DD4r03nQqYlBFxx3hGXIYfdGKarM7XX6QcwQArFu9jFcOk5XO21ccAcZKGMOy7TZyE0PvQM9vd+QnGLVFLnj2CQlkqSIHcQzg7h8kUXBza0j4Wwg+Hpg9TKydCnXWPX/UwIdkAQsWK3H3EVnqag87eHVJaUZbxlV8rgswmbRGdvGesyFofzsZJpRRn8DbNafod723fit8Sj7zpYWlQF+PAfjmdGRZ71NHfwI6OYPXfgSzOuiMMgu51+4oUZY5YSMAQMQhuLOPAyhPFiJsm00hzLMuYaQUiTfJwlWU3jCI3SPNYSq3kSyRqJ21Gmm1YXNDUyPiFAQg0gsVKBARu9ScTaNs/ArNtDmoja0tV1BdIMtSwgwzv15XQV93GC1PvoLg+qwcaR7eGY0IOY/dCLP6Tao/+SW1EOS0+DjrXg1upNjkBmfKSZIaRry6bN7SimVqG8Ho4LNfuNaQ85yJEopkLzDlTA0l/kBBGTdrOKEIDI6LX96x5DIq49O8lZ2hnpkDkDtDLwqZk5KGF6H3kLZUqZRgEcp5qX7mXPheLAFe+QKnSgvhEFoNE8JUkAoEjz3mJwQgwWGPftn0ifod5lHqC63raYStHZve4M2PXrSNnZE4ZuUY1c4aafIrbRsy+988ds50cA1n/KwXHfprhNSppA/imNiXezNdPyT1J1Tc3IMD7e6goXmIISlTEha3TWRgrqecAzeNcHiPV+tX9CqQPX5SgbPEkVva/+cVDj3KAjS0aJz6dKybGEmK2cVLVib6m0PWyZ5npkuYZvNwaoIpmuyM/NZ5pDvFe1hv/JS8VRY7/q54dSmL8+9rYnJ6NjVrby/YBm2Ztvg02xEKYzTDg7JysjXhRcXGVH+gQj1uv93Y/AQ+96j8=
Steps to reproduce
SFC shows an error, but it's OK in vite environment.

A couple of issues:

change template in parent "onBeforeMount", result is OK, but can only change once.
change template in child, only "setup" works, other lifecycle do not work.
base on my program, template is changed twice, but the text shows the first change result.
getCurrentInstance().type.template works OK, getCurrentInstance().proxy.$options.template not OK

What is expected?
if comp is called twice, there should be a way to change template twice.
What is actually happening?
Hard to explain the logic behind all these symptom
System Info
No response
Any additional comments?
No response

Hi there.
It would be very helpful if you could explain what you are actually trying to achieve. I have a hard time understanding that from the code example. Also, if the example can't be run in the SFC playground, please provide a repository instead where it does run.
But it seems like you want to replace a template on the same component multiple times? That is not supported, plain and simple.
The template is compiled to a render function on the first render. After that, changes to the template will not matter because the component not has a render function, which will take precedence. Otherwise we would have to re-compile the template over and over.
So if that's what you want to achieve: that won't work.

OK, I'll try to show you other playgrounds. I understand what u're saying, and the current solution has solved my issues. But still think the string template can be improved, at least more detail can be revealed behind the compiler.

https://stackblitz.com/edit/vitejs-vite-yus79e?file=src%2FApp.vue,src%2Fviews%2FrenderVnode.ts

idea is to build a shell comp, the parent passes all the data/functions/template to it. Just like functional comp, but it can change the template.
The same issue as I said before, why VUE don't allow us to modify the template? I'm thinking to raise a discussion late on.

why VUE doesn't allow us to modify the template?

Because we so far don't see the use case / need.

Usually, each component has exactly one template
if you need the same component but with a different template, the usual way would be to create copy of the component with a new template
recompiling the template over and over in case it was changed would be a performance nightmare.

If you think you have a case where 2. is not a good enough solution, I suggest to start a discussion and then maybe an RFC if you find a good API proposal.
I'll however close this issue as it works as designed.


Notebook editor doesn't update active kernel when kernel changes "outside"

have multiple kernels
Have a notebook editor open two times
change kernel in editor A
select editor B
:bug: editor status shows old kernel

https://github.com/microsoft/vscode/issues/117077#issuecomment-821144128_

this is now fixed


test/ken/convert.go fails for sparc64 SSA backend

# go run run.go -- ken/convert.go
incorrect output
78 +1.000000e+001 +5.500000e+000 8 9
139 +1.750000e+002 +1.740000e+002 2 8
148 +1.750000e+002 +1.740000e+002 3 8
157 +1.750000e+002 +1.740000e+002 4 8
166 +1.750000e+002 +1.740000e+002 5 8
175 +1.750000e+002 +1.740000e+002 6 8
184 +1.750000e+002 +1.740000e+002 7 8
193 +1.750000e+002 +1.740000e+002 8 8
194 +1.750000e+002 +9.500000e+001 8 9
195 +1.750000e+002 +1.740000e+002 8 10
202 +1.750000e+002 +1.740000e+002 9 8
211 +1.750000e+002 +1.740000e+002 10 8
217 +4.125900e+004 +4.125800e+004 4 8
224 +4.125900e+004 +4.125800e+004 5 8
231 +4.125900e+004 +4.125800e+004 6 8
238 +4.125900e+004 +4.125800e+004 7 8
245 +4.125900e+004 +4.125800e+004 8 8
246 +4.125900e+004 +2.267700e+004 8 9
247 +4.125900e+004 +4.125800e+004 8 10
252 +4.125900e+004 +4.125800e+004 9 8
259 +4.125900e+004 +4.125800e+004 10 8
275 +3.758096e+009 +2.013266e+009 8 9
287 +1.671736e+019 +1.729382e+018 8 8
288 +1.671736e+019 +9.367487e+017 8 9
289 +1.671736e+019 +1.729382e+018 8 10
290 +1.671736e+019 +9.223372e+018 9 8
293 +1.671736e+019 +1.729382e+018 10 8

FAIL    ken/convert.go  0.496s

Interesting.

FSTOX needs the same aglorithm applied as FDTOX (use native conversion if value less than 2^63; otherwise subtract 2^63, convert, and add back).
FXTOS/FXTOD were not handling the unsigned case correctly, not only did they need to copy the input value to a temporary register for adjustments, but they also had the 2^63 comparison reversed.
FXTOS was wrongly using AFMULD (instead of AFMULS) to double the value after conversion for the unsigned > 2^63 case.
test/ken/convert.go now passes; as of this moment, all tests in test that can be cross-compiled and executed work just as well as they did with the old compiler backend.  There's only one known failure at the moment, as described in #33.


Ambiguous error when using a non-existant VM extension

If you typo a vm_extensions value of an instance group to something which is not defined in cloud config, the deploy task errors with the following ambiguous error after it has finished compiling packages...
Error 100: undefined method `cloud_properties' for nil:NilClass

And the following backtrace in the task debug...
/var/vcap/packages/director/gem_home/ruby/2.1.0/gems/bosh-director-1.3232.2.0/lib/bosh/director/deployment_plan/instance.rb:288:in `block in cloud_properties'
/var/vcap/packages/director/gem_home/ruby/2.1.0/gems/bosh-director-1.3232.2.0/lib/bosh/director/deployment_plan/instance.rb:287:in `each'
/var/vcap/packages/director/gem_home/ruby/2.1.0/gems/bosh-director-1.3232.2.0/lib/bosh/director/deployment_plan/instance.rb:287:in `cloud_properties'
/var/vcap/packages/director/gem_home/ruby/2.1.0/gems/bosh-director-1.3232.2.0/lib/bosh/director/deployment_plan/instance.rb:204:in `cloud_properties_changed?'
/var/vcap/packages/director/gem_home/ruby/2.1.0/gems/bosh-director-1.3232.2.0/lib/bosh/director/deployment_plan/instance_plan.rb:36:in `changes'
/var/vcap/packages/director/gem_home/ruby/2.1.0/gems/bosh-director-1.3232.2.0/lib/bosh/director/deployment_plan/instance_plan.rb:24:in `changed?'
/var/vcap/packages/director/gem_home/ruby/2.1.0/gems/bosh-director-1.3232.2.0/lib/bosh/director/job_updater.rb:21:in `block in update'
/var/vcap/packages/director/gem_home/ruby/2.1.0/gems/bosh-director-1.3232.2.0/lib/bosh/director/job_updater.rb:20:in `select'
/var/vcap/packages/director/gem_home/ruby/2.1.0/gems/bosh-director-1.3232.2.0/lib/bosh/director/job_updater.rb:20:in `update'
/var/vcap/packages/director/gem_home/ruby/2.1.0/gems/bosh-director-1.3232.2.0/lib/bosh/director/deployment_plan/multi_job_updater.rb:34:in `block (3 levels) in run'
/var/vcap/packages/director/gem_home/ruby/2.1.0/gems/bosh_common-1.3232.2.0/lib/common/thread_pool.rb:77:in `call'
/var/vcap/packages/director/gem_home/ruby/2.1.0/gems/bosh_common-1.3232.2.0/lib/common/thread_pool.rb:77:in `block (2 levels) in create_thread'
/var/vcap/packages/director/gem_home/ruby/2.1.0/gems/bosh_common-1.3232.2.0/lib/common/thread_pool.rb:63:in `loop'
/var/vcap/packages/director/gem_home/ruby/2.1.0/gems/bosh_common-1.3232.2.0/lib/common/thread_pool.rb:63:in `block in create_thread'
/var/vcap/packages/director/gem_home/ruby/2.1.0/gems/logging-1.8.2/lib/logging/diagnostic_context.rb:323:in `call'
/var/vcap/packages/director/gem_home/ruby/2.1.0/gems/logging-1.8.2/lib/logging/diagnostic_context.rb:323:in `block in create_with_logging_context'

Seems like it could give a much more descriptive error for UX sanity. I had to reference the backtrace and code to see what I needed to change in my manifest.
Encountered while transitioning a deployment to cloud config.

@dpb587 interesting. sounds like we are not properly searching vm_extensions.

Story: https://www.pivotaltracker.com/story/show/119611031


Add Colour To The Spinner Pattern

<!-- Thank you for contributing! 🚀 --!>

<!-- Please describe your cool idea for the project here 💡--!>
We could add color to the spinner pattern. This could be done of the init of the spinner. Maybe could be updated with public func ?

color adde with commit c2862ab03f0102ae0028b3063d3ac88b79bfea24


Mocking write-pkg with Jest spies

Hey 👋,
Thank you for creating this fantastic package! I am having trouble with integration tests as I am not able to mockImplementation of write-pkg. Do you maybe know why this might be happening?
This is my code;
import * as writePkg from 'write-pkg'

describe('version', () => {
  test('prepareWorkspace correctly reports error', async () => {
    /* Mock */

    const writePkgMock = jest.spyOn(writePkg, 'sync').mockImplementation(() => {
      throw new Error('pass')
    })

    ...
  })
})

It seems like your package is ignoring the override for some reason. I also spotted the same pattern in multiple other repositories which makes it super challenging to test developed packages. Maybe you have some pointers! 🙂

I don’t have an answer for you, unfortunately. I would recommend asking on Stack Overflow instead. Or maybe Jest has some kind of support forum.


Changing application to a different display doesn't change the available resolutions in settings

Not able to repro anymore.


Bug: Kubelink is getting restarting due to panic error

📜 Description
We are not able to deploy the application due to Kubelink is in not ready state and getting restarted several times.
Getting panic error in kubelink containers
👟 Reproduction steps
Deploy the kubelink with latest image.
👍 Expected behavior
It shouldn't be restarted and should run in stable mode.
👎 Actual Behavior
Restarting and failing
☸ Kubernetes version
1.25
Cloud provider

GCP

🌍 Browser
Chrome
🧱 Your Environment
No response
✅ Proposed Solution
No response
👀 Have you spent some time to check if this issue has been raised before?

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

🏢 Have you read the Code of Conduct?

[X] I have read the Code of Conduct

AB#6341

Fixed in:- https://github.com/devtron-labs/kubelink/pull/87


Exception translating numeric string declared as int type

Steps to reproduce
I have a column that is passed in as a text string "1969.0" which we know is an integer.
By declaring the type as integer with types={"birthYear": tt.type.INT}, shouldn't it be able to cast the data? Unless the data is cannot be casted, then an exception is thrown?
Otherwise, won't it be very troublesome that users have to use Pandas or other interim object to read and cast the data before loading into datastore?
Environment

atoti: 0.5.1
Python: 3.9.1
Operating System: win32

Logs (if relevant)
Jan 18, 2021 9:19:58 AM com.activeviam.health.monitor.impl.LoggingCsvHealthEventHandler onCsvLineParsingFailure
WARNING: [source, parsing, line, csv] WARNING 2021-01-18T01:19:57.064Z uptime=156487ms com.qfs.msg.csv.impl.Parser.onTranslationFailure:493 thread=csv-worker-CSVSource-1 thread_id=55 event_type=CsvLineParsingFailure CSV line parsing failed file=C:\Users\Yeo Hui Fang\AppData\Local\Temp\atoti-r33po402\playerswfkgqlf1.pdcvs file_line_number=19637 file_line=[zuberjo01, 1969.0, Jon, Zuber, Jon Zuber, Jon Edward, L, L, 1996-04-19, 1998-09-27, 1996]
com.activeviam.fwk.ActiveViamRuntimeException: Exception while translating column birthYear with parser Plugin Value (key=int, class com.quartetfs.fwk.format.impl.IntParser) in file FileSystemFileInfo [fullName=C:\Users\Yeo Hui Fang\AppData\Local\Temp\atoti-r33po402\playerswfkgqlf1.pdcvs, lastModifiedTime=Mon Jan 18 09:17:28 SGT 2021]. Parsed text was "1969.0"

Hi Huifang,
A couple answers:

ActivePivot parses a CSV column with the same type it's defined in its store
"1969.0" is technically not an integer and cannot be parsed as such.

Given the amount of work required to change these points, I don't think that's something we're looking to support at the moment.

Hi Huifang,
A couple answers:

ActivePivot parses a CSV column with the same type it's defined in its store
"1969.0" is technically not an integer and cannot be parsed as such.

Given the amount of work required to change these points, I don't think that's something we're looking to support at the moment.


Doubling up URL's

Traceback (most recent call last):
  File "manage.py", line 10, in <module>
    execute_from_command_line(sys.argv)
  File "/venv/lib/python3.8/site-packages/django/core/management/__init__.py", line 419, in execute_from_command_line
    utility.execute()
  File "/venv/lib/python3.8/site-packages/django/core/management/__init__.py", line 413, in execute
    self.fetch_command(subcommand).run_from_argv(self.argv)
  File "/venv/lib/python3.8/site-packages/django/core/management/base.py", line 354, in run_from_argv
    self.execute(*args, **cmd_options)
  File "/venv/lib/python3.8/site-packages/django/core/management/base.py", line 398, in execute
    output = self.handle(*args, **options)
  File "/venv/lib/python3.8/site-packages/wagtail_devtools/management/commands/_base_admin_responses.py", line 61, in handle
    report["function"](*report["args"])
  File "/venv/lib/python3.8/site-packages/wagtail_devtools/management/commands/_base_admin_responses.py", line 203, in report_pages
    response = session.get(page["url"])
  File "/venv/lib/python3.8/site-packages/requests/sessions.py", line 602, in get
    return self.request("GET", url, **kwargs)
  File "/venv/lib/python3.8/site-packages/requests/sessions.py", line 575, in request
    prep = self.prepare_request(req)
  File "/venv/lib/python3.8/site-packages/requests/sessions.py", line 486, in prepare_request
    p.prepare(
  File "/venv/lib/python3.8/site-packages/requests/models.py", line 368, in prepare
    self.prepare_url(url, params)
  File "/venv/lib/python3.8/site-packages/requests/models.py", line 436, in prepare_url
    raise InvalidURL(*e.args)
requests.exceptions.InvalidURL: Failed to parse: http://localhost:8000http://localhost:8000/blogs/fostering/

Fixed in https://github.com/wagtail-packages/wagtail-devtools/pull/8


nixos/tests/kernel-generic: make attributes derivations, not functions

Pass the args from kernel-generic.nix's top-level to the individual
tests. Makes nix-build -A nixosTests.kernel-generic.<attr> and
nix-build nixos/tests/kernel-generic.nix -A <attr> work as expected.

Motivation for this change
Things done

[ ] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS linux)
Built on platform(s)

[ ] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review wip"
[ ] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

@ofborg test kernel-generic.linux_5_6

@ofborg test kernel-generic.linux_5_4


traj: driver should skip pt if pt == curpos

The first point in a ROS trajectory tends to be whatever the current state of the robot is (except in situations where trajectory replacement is active). In those cases it would be advantages if ROS_TRAJ could detect that and immediately skip the point and request / execute the next one.
Could use FK and then the >=< operator, but not sure whether that works for groups that don't have kinematics enabled.

Also not entirely sure whether we don't get this behaviour 'for free': the controller / motion engine could be smart enough to return early for J TP statements that ask it to move to its current position.
With J [..] ms that doesn't work, but for J [..] % it could.

It should probably also error out if pt != curpos within some margin? We got two crashes and desync of some sort due to manual mode might be an explanation

Could you provide some more information?
All joint poses are absolute, so there is no possibility of desyncing (like motoman_driver can do).


Updated test.sh to show the expected output after the code change.

I updated the test.sh file for you. Let me know if you need anything else.

thanks, we can discuss in other issue


Setup benches

Codecov Report

Merging #72 (f706ba8) into main (e3483b8) will increase coverage by 0.01%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main      #72      +/-   ##
==========================================
+ Coverage   90.20%   90.21%   +0.01%
==========================================
  Files          51       51
  Lines        5500     5501       +1
==========================================
+ Hits         4961     4963       +2
+ Misses        539      538       -1

Impacted Files
Coverage Δ

src/lib.rs
79.36% <100.00%> (+0.33%)
:arrow_up:

src/steps/parsers/parse_bin_game_step.rs
94.28% <0.00%> (+1.42%)
:arrow_up:

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.


Switch to @adobe/aio-lib-runtime and update dependencies

Description
BUGFIX-RELEASE:
The parts we used from @adobe/aio-cli-plugin-runtime were replaced by @adobe/aio-lib-runtime, so we have to switch to get the latest version of the code.
Also updated all other dependencies.
Types of changes

[x] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

@jdelbick I only tested test-worker manually and relied on unit tests. The part that changed is the building of the action zip for both run-worker and test-worker, which I tested by running at least test-worker. So I think it should be fine.
The code we use from aio-lib-runtime hasn't really changed apart from API rename and one different argument, but it looks similar to the old one. (And is used in aio app, where it's tested a lot).

No release yet, want to include another PR.


All database files should be named .funk

No special name for the "global" db. Instead, the global db will just be /home/<user>/.funk.

Depends: #103


chore(main): release 1.8.10

:robot: I have created a release beep boop
1.8.10 (2022-12-23)
Miscellaneous Chores

deps: bump livewire/livewire from 2.10.7 to 2.10.8 (b700073)
deps: bump livewire/livewire from 2.10.7 to 2.10.8 (#259) (1c76b61)

This PR was generated with Release Please. See documentation.

:robot: Release is at https://github.com/rotex1800/registration/releases/tag/v1.8.10 :sunflower:


status/config - "missing ) after argument list"

When trying to open the status/config page i get the above error from config.js line 82 var objects = $.parseJSON('....');
What i can see, is a ' in my config which breaks javascript and throws above error.
I use the following sql statement in deployerConfigContext.xml for org.jasig.services.persondir.support.jdbc.MultiRowJdbcPersonAttributeDao:
select 'SECTIONS' AS ATTR_NAME, IDM.VW_RZINTERN_SECTIONS.SECTION AS ATTR_VALUE
							from IDM.VW_RZINTERN_PERSONS
							join IDM.VW_RZINTERN_SECTIONS_PERSONS ON IDM.VW_RZINTERN_SECTIONS_PERSONS.PERSONID = IDM.VW_RZINTERN_PERSONS.PERSONID
							join IDM.VW_RZINTERN_SECTIONS ON IDM.VW_RZINTERN_SECTIONS.SECTIONID =  IDM.VW_RZINTERN_SECTIONS_PERSONS.SECTIONID
              				WHERE IDM.VW_RZINTERN_SECTIONS_PERSONS.ISDEFAULT = 0 AND {0}

Thanks for the report. We are working on organizing the config screen much better, and make things happen in more RESTish way. Should have an update for this soon.

We are planning to remove the runtime config from the report for now, and only focus on properties. The runtime config can be added later via something like Spring boot.


Crash on Swift 4.1

Hi.
There was no problem with Swift 4.0 but on Swift 4.1 on timerFired() func there is a crash on this line:
    `let nextAt = ((self.indexAt)+1)%(self.aImage!.displayIndex.count)`

and it says:
Fatal error: Remainder of division by zero

Fount the issue !
search "return delayObject as! Float"
then replace it with "return Float(truncating: delayObject as! NSNumber)"


Why use teamDriveID as root?

What's the reason that the teamDriveID is set as root here?
https://github.com/nao-pon/flysystem-google-drive/blob/54e77353d9553568fc9f19602d3baae3cc60d6e3/src/GoogleDriveAdapter.php#L1293
This way all files go into the root directory of my team drive by default. But what if I want to use the specified root_folder_id directory from the constructor that is within my team drive as parent?

This is looking good and works! See #42

@tobias-kuendig Thanks! 👍


Printing a variable causes: panic: runtime error: index out of range

Mac OS X 10.11.3
Code that causes panic: Go Playground
go version go1.6rc2 darwin/amd64
Delve Debugger
Version: 0.11.0-alpha
Build: 06bba9b7a9ad0e06f4d74bf71f7667d24872a838
To reproduce:

set breakpoint: b cfg_parser.go:146
Print variable: p cfgtree

Output and stack trace attached
delve_panic.txt

Thanks for reporting this bug! Next time if you could upload gists instead that would be a lot easier to take a look at the provided examples (the playground is better for smaller, runnable examples).
@aarzilli seems the code path that is panic-ing assumes that Variable will have a child, since it's in the unsafe.Pointer branch of the switch. Is there any reason off the top of your head an unsafe.Pointer variable type would not have a child representing the derefed value? Possibly it hasn't actually been eval'ed or properly derefed beforehand?

Will do! Appreciate the quick follow up. Delve is an awesome contribution, thanks very much.

Despite the panic, I was still able to find the bug with Delve, really saved some time.

I'll debug this tomorrow.


feat: LLAPI transport can receive port from uri

url format is "unet://host:port"
Do we want to pass any option in the url?

I don't think we should.
why is the login method so complicated? can't we reuse the existing code?

@vis2k  fixed

:tada: This PR is included in version 6.2.0 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


7126 - ess api add azure add b2c authentication support

Code Changes
Functional Test case added

Do we need the Deployment/New Volume (D) - Shortcut.lnk file?

Do we need the Deployment/New Volume (D) - Shortcut.lnk file?

Hi Martin, It was added by accidentally by one of the resource. So we have identified and removed that file now.


Tests Tests Tests

I'm lazy and wrote this library by eyeballing & running locally. Probably need some juicy unit testerinos 🌮😋

Looks like i've made some very small progress here...


Materialize not defined

Hello I try to use Materialize and jQuery this. The most simple solution but the label will not be updated with the active class.
The console sais that Materialize is not defined caused by jQuery. What is the problem. I can't see it. Thank you very much.
Codepen:
https://codepen.io/immertroll/pen/pWpgZd

You cannot use the slim version. https://codepen.io/tomscholz/pen/MErOze

Use jquery.min.js instead  jquery.slim.min.js.

Thank you very much. Sometimes you can't see the forest for the trees. ;-)
Thank you a lot.

For some reasons, you have to include jquery and materialize js files at the end of  tag as below
<!doctype html>

<!-- Compiled and minified CSS -->
<!--link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/css/materialize.min.css"-->
<link rel="stylesheet" href="assets/materialize/css/materialize.min.css">

<!-- Compiled and minified JavaScript -->
<!--script src="https://cdnjs.cloudflare.com/ajax/libs/materialize/1.0.0/js/materialize.min.js"></script-->
<script src="assets/materialize/js/materialize.min.js"></script>

<!--Let browser know website is optimized for mobile-->
<meta name="viewport" content="width=device-width, initial-scale=1.0"/>

<link rel="stylesheet" type="text/css" href="assets/themify-icons-font/themify-icons/themify-icons.css">

Storkwhite