feat(dashboard): add azure ad provider settings

feat(graphql): add azuread to signinmethods query
feat(dashboard-settings): add azuread provider settings component
feat(dashboard-settings): add azuread provider to settings

Closes #1130

I couldn’t generate the graphql SDK using codegen as I don't have the access to required queries in the local instance.
For the logo, if this seems good, i can add it https://worldvectorlogo.com/logo/azure-2

I couldn’t generate the graphql SDK using codegen as I don't have the access to required queries in the local instance.
For the logo, if this seems good, i can add it https://worldvectorlogo.com/logo/azure-2

@eugene-reuka could you please prepare an icon for us? 🙏🏼

@szilarddoro I have corrected it. Thank you :)

Is it possible to configure Azure AD in nhost without this being merged? I see it's supported by hasura-auth - just not yet exposed in the nhost admin UI - i think. Thanks!

If you are using the Nhost cloud, it's not currently possible to configure this -- this is because each app needs to be aware of what these variables mean
```
 authAzureADEnabled
 authAzureADClientId
 authAzureADClientSecret
 authAzureADTenantId
```
and this requires changes in the way we deploy these applications (infrastructure.) Good news is that every other requirement is mostly ready (hasura-auth, front-end, our db.) We'll keep this issue updated.

I'm thinking that for this we could add a boolean flag in our database indicating that that the backend is not ready (nhost cloud) this way we could merge it, and open another more specific issue for the required infra changes.

Hey @dipakparmar! Sorry for not getting back to you regarding this feature earlier. We have changed how sign-in methods are managed on the Settings page, so this PR will most likely need to be reworked. As far as I know, the provider is now supported by Hasura Auth. Would you like to pick this up again? Let me know if you have any questions.

Sure, @szilarddoro I'll have some time on the weekend to work on this! Thanks

As for the scope removal: At the moment, managing scopes is not supported anywhere on the UI. In the future, it will be supported by some kind of multi-select component, but at the moment we should just get rid of it, and let Hasura Auth decide the default scopes.

Codecov Report

Merging #1163 (6e1f03e) into main (ac174b5) will not change coverage.
The diff coverage is n/a.

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@           Coverage Diff           @@
##             main    #1163   +/-   ##
=======================================
  Coverage   87.18%   87.18%
=======================================
  Files          83       83
  Lines        8972     8972
  Branches      537      537
=======================================
  Hits         7822     7822
  Misses       1150     1150

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


error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol

PHP Driver version or file name
pdo_sqlsrv.so

pdo_sqlsrv support
enabled

ExtensionVer
5.9.0

SQL Server version
Microsoft SQL Server 2008 R2 (SP3) - 10.50.6000.34 (X64)   Aug 19 2014 12:21:34   Copyright (c) Microsoft Corporation  Web Edition (64-bit) on Windows NT 6.3 <X64> (Build 9600: ) (Hypervisor)
Client operating system
I am running two docker containers one with NGINX and one with PHP. I would expect the client in this case is the PHP container as it connects to the database.
PHP version
7.4.27
Microsoft ODBC Driver version
[Microsoft][ODBC Driver 17 for SQL Server]
Problem description
I have previous (1-2 years ago) run these docker containers locally without this problem and I have the same docker setup running in production that dosen't have this issue. I needed to make some changes to the code so I pulled the repo, and build the containers again. Now all of the sudden I have this error trying to connect to the database.
SQLSTATE[08001]: [Microsoft][ODBC Driver 17 for SQL Server]SSL Provider: [error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol]
Expected behavior and actual behavior
I would expect to get a valid connection to the MSSQL database via PHP.
Instead I get this error;
{
    "meta": {
        "code": "08001",
        "message": "SQLSTATE[08001]: [Microsoft][ODBC Driver 17 for SQL Server]SSL Provider: [error:1425F102:SSL routines:ssl_choose_client_version:unsupported protocol]",
        "file": "/application/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDO/Exception.php",
        "line": 18,
        "trace": [
            {
                "file": "/application/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOConnection.php",
                "line": 42,
                "function": "new"
            },
            {
                "file": "/application/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOSqlsrv/Connection.php",
                "line": 22,
                "function": "__construct"
            },
            {
                "file": "/application/vendor/doctrine/dbal/lib/Doctrine/DBAL/Driver/PDOSqlsrv/Driver.php",
                "line": 35,
                "function": "__construct"
            },
            {
                "file": "/application/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php",
                "line": 362,
                "function": "connect"
            },
            {
                "file": "/application/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php",
                "line": 427,
                "function": "connect"
            },
            {
                "file": "/application/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php",
                "line": 387,
                "function": "getDatabasePlatformVersion"
            },
            {
                "file": "/application/vendor/doctrine/dbal/lib/Doctrine/DBAL/Connection.php",
                "line": 330,
                "function": "detectDatabasePlatform"
            },
            {
                "file": "/application/vendor/doctrine/orm/lib/Doctrine/ORM/Persisters/Entity/BasicEntityPersister.php",
                "line": 212,
                "function": "getDatabasePlatform"
            },
            {
                "file": "/application/vendor/doctrine/orm/lib/Doctrine/ORM/UnitOfWork.php",
                "line": 3115,
                "function": "__construct"
            },
            {
                "file": "/application/vendor/doctrine/orm/lib/Doctrine/ORM/EntityManager.php",
                "line": 457,
                "function": "getEntityPersister"
            },
            {
                "file": "/application/var/cache/dev/ContainerF61cva1/EntityManager_9a5be93.php",
                "line": 136,
                "function": "find"
            },
            {
                "file": "/application/vendor/doctrine/orm/lib/Doctrine/ORM/EntityRepository.php",
                "line": 151,
                "function": "find"
            },
            {
                "file": "/application/vendor/sensio/framework-extra-bundle/src/Request/ParamConverter/DoctrineParamConverter.php",
                "line": 142,
                "function": "find"
            },
            {
                "file": "/application/vendor/sensio/framework-extra-bundle/src/Request/ParamConverter/DoctrineParamConverter.php",
                "line": 91,
                "function": "find"
            },
            {
                "file": "/application/vendor/sensio/framework-extra-bundle/src/Request/ParamConverter/ParamConverterManager.php",
                "line": 84,
                "function": "apply"
            },
            {
                "file": "/application/vendor/sensio/framework-extra-bundle/src/Request/ParamConverter/ParamConverterManager.php",
                "line": 48,
                "function": "applyConverter"
            },
            {
                "file": "/application/vendor/sensio/framework-extra-bundle/src/EventListener/ParamConverterListener.php",
                "line": 72,
                "function": "apply"
            },
            {
                "file": "/application/vendor/symfony/event-dispatcher/Debug/WrappedListener.php",
                "line": 117,
                "function": "onKernelController"
            },
            {
                "file": "/application/vendor/symfony/event-dispatcher/EventDispatcher.php",
                "line": 230,
                "function": "__invoke"
            },
            {
                "file": "/application/vendor/symfony/event-dispatcher/EventDispatcher.php",
                "line": 59,
                "function": "callListeners"
            },
            {
                "file": "/application/vendor/symfony/event-dispatcher/Debug/TraceableEventDispatcher.php",
                "line": 151,
                "function": "dispatch"
            },
            {
                "file": "/application/vendor/symfony/http-kernel/HttpKernel.php",
                "line": 145,
                "function": "dispatch"
            },
            {
                "file": "/application/vendor/symfony/http-kernel/HttpKernel.php",
                "line": 79,
                "function": "handleRaw"
            },
            {
                "file": "/application/vendor/symfony/http-kernel/Kernel.php",
                "line": 196,
                "function": "handle"
            },
            {
                "file": "/application/public/index.php",
                "line": 31,
                "function": "handle"
            }
        ]
    },
    "links": {
        "self": "/customers/111111"
    },
    "errors": [
        {
            "status": "500",
            "code": "INTERNAL_SERVER_ERROR",
            "title": "Internal Server Error"
        }
    ]

I know to the similar issues stated here https://github.com/microsoft/msphpsql/issues/1056 and I have tried to create a openssl.cnf with the changes mentioned but it seems to have on effect when applied both to the NGINX and PHP image.

I have added openssl_conf = default_conf in the top of the file.
ess_cert_id_alg = sha1 under [ tsa_config1 ]
and the rest in the bottom;

[default_conf]
ssl_conf = ssl_sect

[ssl_sect]
system_default = system_default_sect

[system_default_sect]
MinProtocol = TLSv1.0
CipherString = DEFAULT@SECLEVEL=1

But as I mention this have no effect.
The only thing I can see that differs is;

The image running in production was build a long time ago.
The image runs on the same network as the database.
When I develop locally I go though a VPN to get access to the network where the DB is located (same procedure when is was working earlier).

I tried adding a connection to the server via PHPStorm and the error message does indicate that the MSSQL server requires TLS 1.0 and not above as enforced by PHPStorm.

Oh that was weird. I got it working by copying the file mentioned here https://github.com/r-dbi/odbc/issues/460#issuecomment-968339477
I must have written something wrong!


[add] default readable setting to config

Coverage decreased (-0.2%) to 70.544% when pulling 7bad8b32f4f68fe14111be72aaa730d4b922ab01 on sunny4381:features/gws-default-readable-setting into 0788bee55d57a22f32c0db7c90d32e16d6c6e89c on shirasagi:master.


Cannot build vol2bird on v0.19

Flavor vol2bird / build-naavre-cell-runtime / Build naavre-cell-runtime-vol2bird:
#12 [ 6/11] RUN conda install -c bioconda bioconductor-rhdf5lib
#12 0.797 Channels:
#12 0.797  - bioconda
#12 0.797  - defaults
#12 0.797 Platform: linux-64
#12 0.797 Collecting package metadata (repodata.json): ...working... done
#12 2.563 Solving environment: ...working... failed
#12 2.847
#12 2.847 LibMambaUnsatisfiableError: Encountered problems while solving:
#12 2.847   - nothing provides libblas >=3.8.0,<4.0a0 needed by bioconductor-rhdf5lib-1.10.0-r40h037d062_0
#12 2.847
#12 2.847 Could not solve for environment specs
#12 2.847 The following packages are incompatible
#12 2.847 ├─ bioconductor-rhdf5lib =* * is installable with the potential options
#12 2.847 │  ├─ bioconductor-rhdf5lib [1.0.0|1.2.1] would require
#12 2.847 │  │  └─ r-base [=3.4.1 *|>=3.4.1,<<IP_ADDRESS>a0 *], which requires
#12 2.847 │  │     └─ icu =54 *, which does not exist (perhaps a missing channel);
#12 2.847 │  ├─ bioconductor-rhdf5lib [1.10.0|1.12.0|1.12.1|1.14.0|1.16.0] would require
#12 2.847 │  │  └─ libblas >=3.8.0,<4.0a0 *, which does not exist (perhaps a missing channel);
#12 2.847 │  ├─ bioconductor-rhdf5lib [1.16.0|1.20.0|1.22.0|1.24.0|1.28.0] would require
#12 2.847 │  │  └─ libblas >=3.9.0,<4.0a0 *, which does not exist (perhaps a missing channel);
#12 2.847 │  ├─ bioconductor-rhdf5lib [1.2.1|1.4.2|1.4.3|1.6.0] would require
#12 2.847 │  │  └─ r-base >=3.5.1,<<IP_ADDRESS>a0 *, which requires
#12 2.847 │  │     └─ libcurl >=7.61.1,<8.0a0 *, which can be installed;
#12 2.847 │  ├─ bioconductor-rhdf5lib 1.4.2 would require
#12 2.847 │  │  └─ libgfortran >=3.0 *, which does not exist (perhaps a missing channel);
#12 2.847 │  └─ bioconductor-rhdf5lib [1.6.0|1.8.0] would require
#12 2.847 │     └─ r-base >=3.6,<3.7.0a0 *, which requires
#12 2.847 │        └─ libcurl >=7.62.0,<8.0a0 *, which can be installed;
#12 2.847 └─ mamba =* * is not installable because it requires
#12 2.847    └─ libmamba ==2.0.5 hf72d635_0, which requires
#12 2.847       └─ libcurl >=8.11.1,<9.0a0 *, which conflicts with any installable versions previously reported.
#12 2.847
#12 ERROR: process "/bin/sh -c conda install -c bioconda bioconductor-rhdf5lib" did not complete successfully: exit code: 1

This worked for v0.18 and scheduled run on Nov 25 but failed on scheduled run on Dec 5

In ghcr.io/qcdis/naavre/naavre-cell-runtime-vol2bird, we have
bioconductor-rhdf5lib     1.24.0          r43ha9d7317_2          bioconda
libblas                   3.9.0           23_linux64_openblas    conda-forge

When building v0.19, libblas >=3.9.0 is a dependency for bioconductor-rhdf5lib [1.16.0|1.20.0|1.22.0|1.24.0|1.28.0] but cannot be installed from bioconda. Not sure how it got installed from conda-forge in the v0.18 image.


TextField is hidden by keyboard inside of a Modal Bottom Sheet

import 'package:flutter/material.dart';

void main() => runApp(MyApp());

class MyApp extends StatelessWidget {
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: '',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: MyHomePage(title: ''),
    );
  }
}

class MyHomePage extends StatefulWidget {
  MyHomePage({Key key, this.title}) : super(key: key);

  final String title;

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

class _MyHomePageState extends State<MyHomePage> {
  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(title: Text('')),
      body: Container(),
      floatingActionButton: FloatingActionButton(onPressed: () {
        showModalBottomSheet(
            context: context,
            builder: (context) {
              return SizedBox(
                height: 300.0,
                child: Scaffold(
                  body: ListView.builder(
                    itemBuilder: (context, index) {
                      return TextField(
                        decoration:
                            InputDecoration(labelText: index.toString()),
                      );
                    },
                    itemCount: 30,
                  ),
                ),
              );
            });
      }),
    );
  }
}

Result

Clicked on 4th item

Perfectly, Modal Bottom Sheet should be lifted up till a TextField is visible, just like FAB
Flutter Doctor
[√] Flutter (Channel master, v0.5.5-pre.46, on Microsoft Windows [Version 10.0.17134.112], locale en-US)
\Error retrieving device properties for ro.product.cpu.abi:
error: closed
                                                                                [
!] Android toolchain - develop for Android devices (Android SDK 27.0.3)
    X Android license status unknown.
[√] Android Studio (version 3.1)
[√] VS Code, 64-bit edition (version 1.24.0)
[√] Connected devices (1 available)

! Doctor found issues in 1 category.

Please add the output of flutter doctor

@zoechi Done, also updated the code. TextField is visible if the bottom sheet is high enough, else it's covered, like on a screenshot

I'm not sure if it's related, but take a look at this gist: https://gist.github.com/andrelsmoraes/9e4af0133bff8960c1feeb0ead7fd749
Behavior after fix: https://youtu.be/ESiCr0juFG8

Any fixes? The problem still persists. Please do Fix it because we Love #Flutter.

@mohith7548 As of now, make sure your ModalBottomSheet is high enough  (at least keyboard height + TextView height), then TextField will be visible. Else don't use MBS for your input

Hey did you use showDialog method. When there is a text field in it. The keyboard automatically shifts the dialog up and appears on screen when the text field is tapped. Why it doesn't happen in case of ModalBottom sheet. This is a bug and it needs to be fixed soon

@andrelsmoraes Could u provide more codes for your youtube demo? This is exactly what I want achieve.

@jinfagang Added some comments in my gist, please check it out and tell me if you need more details.

Please fix this. See #20638

This may not work for all situations, but I have a modalBottomSheet that contains only a TextField, and it was quite simple to make it move up with the keyboard:
Padding(
  padding: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
  child: TextField()
)

None update on that yet ?

I made a modification and the issue is fixed you can check it out here: https://gist.github.com/crimsonsuv/b25d5ebd04236f9be2aa66accba19446

Hi @crimsonsuv , your temporarily solution almost worked perfectly. The modal is not dismissed by clicking outside the content anymore 😢 .

When the keyboard appears, the body of the Scaffold that contains the input focus is resized. So to ensure that the focused list item scrolls into view when the keyboard appears it made sense to put the bottom sheet in a Scaffold. Unfortunately, fixing the scaffold's height to 300 prevented it from being resized.
Here's a version of the example (I've just removed the SizedBox constraint) that does work:
https://gist.github.com/HansMuller/9c0c89623650d55e84ba55d78f384fad

just add resizeToAvoidBottomPadding: true in scaffold widget

I hope the BottomSheet can scroll to the focused TextField automatically.

Hi, I was looking around for the solution for a while. I was use resizeToAvoidBottomInset: true, inside the Scaffold Widget. I also have my forms under the SingleChildScrollView. Here is my example code for login
return Scaffold(
resizeToAvoidBottomInset: true,
appBar: AppBar(
title: Text('$title'),
),
body: SingleChildScrollView(
child: Container(
child: Column(
children: [
login()
],
),
),
),
);

Hi, I found the solution to be scattered.
I fixed this issue where my the bottom Sheet expands towards top dynamically when input with multiple lines.
Thanks to @jbg. I used @jbg way of implementing the padding
I tried @andrelsmoraes gist but i couldn't edit shapes in that.
Finally without using fully customised bottom_sheet.dart,
Changing the value of 9.0 to 10.0 in bottom_sheet.dart , I achieved what i actually wanted.
maxHeight: isScrollControlled         ? constraints.maxHeight         : constraints.maxHeight * 9.0 / 16.0,
Thanks to @crimsonsuv , setting the maxHeight this way gives full screen on demand.
maxHeight: constraints.maxHeight

I have same problem.  #19300 #24856 #18564
I'm working many hours and googling unfortunately I can't solve this problem.

This may not work for all situations, but I have a modalBottomSheet that contains only a TextField, and it was quite simple to make it move up with the keyboard:
Padding(
  padding: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
  child: TextField()
)

I made a modification and the issue is fixed you can check it out here: https://gist.github.com/crimsonsuv/b25d5ebd04236f9be2aa66accba19446

I'm using many variations but It doesn't works. I also tried this article EnsureVisibleWhenFocused and I also wrapped Scaffold's body with SingleChildScrollView all of them not worked.
I'm tried different sdk's on different emulators, re-install app etc. it doesn't work, text field always behind the keyboard its very frustrating 😈.
I added example code with  flutter-doctor results, here.

I have same problem.  #19300 #24856
I'm working many hours and googling unfortunately I can't solve this problem.

This may not work for all situations, but I have a modalBottomSheet that contains only a TextField, and it was quite simple to make it move up with the keyboard:
Padding(
  padding: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
  child: TextField()
)

I made a modification and the issue is fixed you can check it out here: https://gist.github.com/crimsonsuv/b25d5ebd04236f9be2aa66accba19446

I'm using many variations but It doesn't works. I also tried this article EnsureVisibleWhenFocused and I also wrapped Scaffold's body with SingleChildScrollView all of them not worked.
I'm tried different sdk's on different emulators, re-install app etc. it doesn't work, text field always behind the keyboard its very frustrating 😈.
I added example code with  flutter-doctor results, here.

Not sure about all of the repercussions yet, but this is the solution I came up with for now.
https://gist.github.com/drewpayment/08e963f8cf0fa715711408a2bf33d899

bug and it need

Is this fixed now as I am stuck with it and got no solution so far.
Can you please update.

constraints.maxHeight

Hi, this made my view into scrolling. I added padding to child view and bottomsheet height did not change when keyboard opens rather whole view goes to scroll with focus on textfield i tried to edit. Can size of sheet be increased when keyboard opens?

I was fixed, let's check it:
showModalBottomSheet(
isScrollControlled: true,
builder: (BuildContext context) {
return SingleChildScrollView(
child:Container(
padding:
EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
child: AnyChild(),
)
);
});

I was fixed, let's check it, It's very simple::
showModalBottomSheet(
isScrollControlled: true,
builder: (BuildContext context) {
return SingleChildScrollView(
child:Container(
padding:
EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
child: AnyChild(),
)
);
});

Works fine. This should be the accepted solution, also pass the BuildContext

I was fixed, let's check it, It's very simple::
showModalBottomSheet(``
isScrollControlled: true,
builder: (BuildContext context) {
return SingleChildScrollView(
child:Container(
padding:
EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
child: AnyChild(),
)
);
});

Works perfectly!!! I tried it in landscape mode.

wrap the code inside Scaffold widget and give Scaffold and give SingleChildScrollView as a Child ...... return Container( height: screenHeight * .66, child: Scaffold( child: Form( key: _form, child: SingleChildScrollView( child:TextFormField() ) ) ) )

I'm closing this issue because I pointed out the small error that prevented the provided app from working some time ago: https://github.com/flutter/flutter/issues/18564#issuecomment-467539315
If you've run into a similar scenario that still fails, please open a new issue.

@HansMuller I see that your solution works for ListView because it can resize itself. However I have three text fields in a column in my app and still get an overflowing keyboard with your solution.
https://gist.github.com/denniske/ae5a6e5e448a7a86fedcd6420279f5ff

Is it possible to fix this?

I finally got it working with a combination of https://github.com/flutter/flutter/issues/17861#issuecomment-405017053 and https://github.com/flutter/flutter/issues/18564#issuecomment-519755653.
https://gist.github.com/denniske/d00cd0ffa44b1d7a14fccaece96a1fbc

showModalBottomSheet(
isScrollControlled: true, // Important: Makes content maxHeight = full device height
context: context,
builder: (context) {
// Does not work
return AnimatedPadding(
padding: MediaQuery.of(context).viewInsets,
duration: const Duration(milliseconds: 100),
curve: Curves.decelerate,
child: Container(
child: Wrap(
children: [
TextField(
decoration: InputDecoration(labelText: "1"),
),
TextField(
decoration: InputDecoration(labelText: "2"),
),
TextField(
decoration: InputDecoration(labelText: "3"),
),
],
)));

Thank you very much, this was the only solution that worked for me in case of a non-scrollable content on the bottom sheet.

This may not work for all situations, but I have a modalBottomSheet that contains only a TextField, and it was quite simple to make it move up with the keyboard:
Padding(
  padding: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
  child: TextField()
)

Yep worked!

I'm going to say this issue should not be closed. I have a modal bottom sheet with a text field and there is plenty of room on the screen for it to move up but it does not.

@HansMuller Requesting that this gets reopened

After combining different solutions I got this:
if you don't want it to be Full screen and don't want to use the Padding workaround use
  showModalBottomSheet(
      context: context,
      shape: RoundedRectangleBorder(
        borderRadius: BorderRadius.vertical(top: Radius.circular(20)),
      ),
      enableDrag: true,
      isDismissible: true,
      useRootNavigator: true,
      builder: (BuildContext ctx) {
        return Scaffold( // use CupertinoPageScaffold for iOS
          backgroundColor: Colors.transparent,
          resizeToAvoidBottomInset: true, // important
          body: SingleChildScrollView(
            child: Form(
              child: Container(
                child: Column(
                  crossAxisAlignment: CrossAxisAlignment.stretch,
                  children: <Widget>[
                    TextFormField(),
                    TextFormField(),
                  ],
                ),
              ),
            ),
          ),
        );
      },
    );

I was fixed, let's check it, It's very simple::
showModalBottomSheet(
isScrollControlled: true,
builder: (BuildContext context) {
return SingleChildScrollView(
child:Container(
padding:
EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
child: AnyChild(),
)
);
});

use context instead BuildContext so the code
showModalBottomSheet(
isScrollControlled: true,
context: context,
builder: (context) {
return SingleChildScrollView(
child:Container(
padding:
EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
child: AnyChild(),
)
);
});

this link works super fine try this one
https://gist.github.com/denniske/d00cd0ffa44b1d7a14fccaece96a1fbc

I was fixed, let's check it, It's very simple::
showModalBottomSheet(
isScrollControlled: true,
builder: (BuildContext context) {
return SingleChildScrollView(
child:Container(
padding:
EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
child: AnyChild(),
)
);
});

Work like a charm, you save my day. 👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏👏

I'm not sure if it's related, but take a look at this gist: https://gist.github.com/andrelsmoraes/9e4af0133bff8960c1feeb0ead7fd749
Behavior after fix: https://youtu.be/ESiCr0juFG8

Hi @andrelsmoraes , if I use the key property in the TextField a glitch happens, if possible, could you check it and fix it ?

hi, guys, I got it fixed by increasing the height of the child widget when the keyboard gets opened.
initially value of MediaQuery.of(context).viewInsets.bottom will be 0 it will change when the keyboard gets focused.
showModalBottomSheet<void>(
      enableDrag: true,
      isScrollControlled: true,
      context: context,
      builder: (BuildContext context) {
        return Card(
          color: Colors.white,
          child: Container(
            height: MediaQuery.of(context).size.height / 2 +
                MediaQuery.of(context).viewInsets.bottom,
            child: Column(
              children: <Widget>[
                TextField(),
                TextField(),
              ],
            ),
          ),
        );
      },
    );

With height in container it doesnt work

I was fixed, let's check it, It's very simple::
showModalBottomSheet(
isScrollControlled: true,
builder: (BuildContext context) {
return SingleChildScrollView(
child:Container(
padding:
EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
child: AnyChild(),
)
);
});

This works as expected. Thanks

A workaround for this issue is wrapping the inside widget with a Padding, giving the value of EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom) to its padding property.
showModalBottomSheet(
   context: context,
   builder: (context) => Padding(
     padding: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
     child: // your inside widget here...,
  )
);

For additional information, taka a look at MediaQuery and MediaQueryData.

none of this work for me.working on Samsung Galaxy S8 flutter sdk: ">=2.7.0 <3.0.0".there's no change ( which i though must have ) when the keyboard is opened

Padding(   padding: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),   child: TextField() )
Padding(
  padding: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
  child: TextField()
)

@cuong292 This solution worked for me on Samsung Galaxy S7,
return SingleChildScrollView(
child: Container(
padding: EdgeInsets.only(
bottom: (MediaQuery.of(context).viewInsets.bottom == 0)
? 50.0
: MediaQuery.of(context).viewInsets.bottom,
top: 16.0,
left: 16.0,
right: 16.0),

@jaganmohang it's feel like it's always padding 50 from bottom or padding equal to viewInsets.bottom.that doesnt make sense i guess.so i'm change to dialog

@jaganmohang it's feel like it's always padding 50 from bottom or padding equal to viewInsets.bottom.that doesnt make sense i guess.so i'm change to dialog

default bottom padding 50 is my requirement. And since the content is inside the SingleChildScrollView there will be no issue. Anyway you already opted for a different solution so no issues.

I was fixed, let's check it, It's very simple::
showModalBottomSheet(
isScrollControlled: true,
builder: (BuildContext context) {
return SingleChildScrollView(
child:Container(
padding:
EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
child: AnyChild(),
)
);
});

use context instead BuildContext so the code
showModalBottomSheet(
isScrollControlled: true,
context: context,
builder: (context) {
return SingleChildScrollView(
child:Container(
padding:
EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
child: AnyChild(),
)
);
});

Thanks a lot.. this helped my use case (form with 3-4 TextFormField, including a comments box). With your solution my modal bottom sheet sticks to the statusbar (acts like Scaffold with resizeToAvoidBottomInset: false) and allows to view the form fields and scroll through the form if it is still needed to view bottom text fields.

I was fixed, let's check it, It's very simple::
showModalBottomSheet(
isScrollControlled: true,
builder: (BuildContext context) {
return SingleChildScrollView(
child:Container(
padding:
EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
child: AnyChild(),
)
);
});

setting height for Container  will prevent the fix

This may not work for all situations, but I have a modalBottomSheet that contains only a TextField, and it was quite simple to make it move up with the keyboard:
Padding(
  padding: EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
  child: TextField()
)

What if I have a textfield and a submit button with it?

I was fixed, let's check it, It's very simple::
showModalBottomSheet(
isScrollControlled: true,
builder: (BuildContext context) {
return SingleChildScrollView(
child:Container(
padding:
EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
child: AnyChild(),
)
);
});

use context instead BuildContext so the code
showModalBottomSheet(
isScrollControlled: true,
context: context,
builder: (context) {
return SingleChildScrollView(
child:Container(
padding:
EdgeInsets.only(bottom: MediaQuery.of(context).viewInsets.bottom),
child: AnyChild(),
)
);
});

Thanks a lot.. this helped my use case (form with 3-4 TextFormField, including a comments box). With your solution my modal bottom sheet sticks to the statusbar (acts like Scaffold with resizeToAvoidBottomInset: false) and allows to view the form fields and scroll through the form if it is still needed to view bottom text fields.

I tried this, but because of isScrolledControlled set to true the modalbottomsheet takes the whole screen. Any idea how may I fix it?

This is how I tackled it!!
showModalBottomSheet(
context: context,
builder: (context) => AddTaskScreen());
},
The AddTaskScreen class
class AddTaskScreen extends StatelessWidget {
@override
Widget build(BuildContext context) {
return Scaffold(
resizeToAvoidBottomInset: true,
body: Container(
color: Color(0xFF757575),
child: SingleChildScrollView(
child: Container(
decoration: BoxDecoration(
borderRadius: BorderRadius.only(topLeft: Radius.circular(20.0), topRight: Radius.circular(20.0)),
color: Colors.white,
),
padding: EdgeInsets.all(45.0),
child: Column(
mainAxisAlignment: MainAxisAlignment.start,
children: [
Text(
'Add Task',
style: TextStyle(
fontSize: 30.0,
fontWeight: FontWeight.w500,
color: Colors.lightBlueAccent,
),
),
TextField(
autofocus: true,
textAlign: TextAlign.center,
cursorColor: Colors.lightBlueAccent,
            ),
            SizedBox(height: 10.0,),
            FlatButton(
              color: Colors.lightBlueAccent,
              onPressed: (){

              },
              child: Padding(
                padding: EdgeInsets.all(20.0),
                child: Center(
                  child: Text(
                    'Add',
                    style: TextStyle(
                      color: Colors.white,
                      fontSize: 20.0,
                    ),
                  ),
                ),
              )
            )
          ],
        ),
      ),
    ),
  ),
);

}
}

Scaffold did not work for me as it caused my modal bottom sheet to top align.
Instead, I used a combination of SingleChildScrollView and dynamic padding based on the viewInsets.bottom.
`showModalBottomSheet(
backgroundColor: Colors.transparent,
builder: (ctx) => FamFunPassSignUpSheet(),
context: ctx,
isScrollControlled: true,
);
bottomPadding(BuildContext ctx) {
var result = MediaQuery.of(ctx).viewInsets.bottom ?? 0;
if (result == 0) result = 10;
return result;
}
SingleChildScrollView(
child: Container(
child: Padding(
padding: EdgeInsets.fromLTRB(20, 30, 20, bottomPadding(ctx)),
child: Column(
mainAxisSize: MainAxisSize.min,
children: [
...
],
),
),
),
);
`

My solution is to put a child widget inside Scaffold and this worked.

none of these suggestions worked. :(

isScrollControlled and padding solve this problem. For everyone still having this problem, make sure you provide the correct context to showModalBottomSheet


[Todo List] implement editing and opening urls

Description
Implements changes requested in #460 (editing items and opening URLs), as well as fixes the extension to work with the new 1.30.0 update.
Screencast
https://user-images.githubusercontent.com/63619830/157789803-f7b0b766-36a1-4197-821e-a7d3ce4d72ce.mov
Checklist

[x] I read the extension guidelines
[x] I read the documentation about publishing
[x] I ran npm run build and tested this distribution build in Raycast
[x] I checked that files in the assets folder are used by the extension itself
[x] I checked that assets used by the README are placed in the media folder

Not sure what's happening; it works for me? DMed you on Slack to try to debug the problem.

As we spoke about @maggie-j-liu, you did everything right – we're looking into this, and it should be resolved later today 😄
I'll let you know when I have some new information in this case 😄


[Rules] Define guideline for rules for collection

How to add ARI rules for collection? Should it be part of the collection, if yes what should the collection be?

Let me close this issue


Links to SVG images don't work

I can't get links to SVG images to display the image -- the text of the SVG is displayed instead.
I'm using something like:
$(document).ready(function() {
$('.image-link').magnificPopup({type:'image'});
});
The SVG images are generated by PHP, but they work if opened directly in a browser, so I can't see that being an issue.
Any suggestions?

I am experiencing something similar. If the image is an SVG, the popup has the image portion of the SVG displayed faded out behind the overlay, while any text in the SVG is in clear focus as though it were the image.

+1

+1
A workaround is using type:inline and src as an html <img> tag.
CSS style adjustments may be necessary.

+1 SVG support would be great!

Obviously the min-width is not set and ends up with 0 pixel.
Solution by CSS:
.mfp-img {
min-width: 100vw;
}


lite: Add config option to enable benchmark_model

It's handy to have an option to enable the benchmark_model tool so that it can be built and installed using the all target which is preferable in some cases when packaging tensorflow-lite.
This is the benchmark_model equivalent of #60021.

Hi @arfaian Can you please review this PR ? Thank you!

Hi @arfaian Can you please review this PR ? Thank you!

Hi @arfaian Can you please review this PR ? Thank you!

Hi @jameshilliard Can you please resolve conflicts? Thank you!

rebased

Hi @arfaian Can you please review this PR ? Thank you!

Hi @arfaian Can you please review this PR ? Thank you!

Hi @arfaian Can you please review this PR ? Thank you!

Hi @arfaian Can you please review this PR ? Thank you!

Hi @arfaian Can you please review this PR ? Thank you!

Hi @arfaian , Can you please review this PR ? Thank you!

Hi @arfaian , Can you please review this PR ? Thank you!

Hi @arfaian , Can you please review this PR ? Thank you!

Hi @arfaian , Can you please review this PR ? Thank you!

Hi @arfaian , Can you please review this PR ? Thank you!

Hi @arfaian , Can you please review this PR ? Thank you!

Hi @arfaian , Can you please review this PR ? Thank you!


WIP:  MAISTRA-1575 create new SMCP structure for Istio 1.6

New SMCP structure that better organizes (I hope) configuration settings.

The first cut at a new structure for SMCP is complete.  Still to do:

Verify installation still works with 1.0/1.1
Integrate istio 1.6 charts
Write conversion code from v1 to v2
Add conversion webhook

@dgn, here's a link to some example yaml for the new structure: https://github.com/maistra/istio-operator/blob/6121c576086fbe56edb04f957f8fff24193d657c/pkg/apis/maistra/v2/smcp_new.yaml
I've also sprinkled the code with XXX comments where I'm unsure about things or need to come back and fix/decide what to do (e.g. maybe some settings don't map to values.yaml, but should be supported).

I'm currently using enabled = !null in a lot of places, and I'm not sure whether or not I should include an explicit "enabled" field.

SMCP reconciler has been converted to use v2 resource and all unit tests are passing.  I think there are some differences in the way things are defaulted, e.g. gateways.ingress and gateways.egress must be specified, as should policy, telemetry, and the various addons, which I think were all enabled by default.  (See my comment above about having a separate enabled field, as opposed to using enabled = field != nil.)

This is working for v1.1 installs.


ENH REQ: Database System/Autonomous name is not represented on the canvas

Even though it is possible to give a database system or autonomous database a name, this name is not presented on the OKIT canvas.
For putting architectures together to show and share, having all the elements visual and named is essential.

In release 0.12.0


Investigate support for ag-grid cell flashing on change

Ideally built in ag-grid flash on change setting could be enabled and partial updates made to store data via updateData would flash the relevant cells
However currently all cells will flash - assume this relates to our forcing a cell refresh in Grid to ensure custom renderers redraw
Not sure if we have many options here re built in ag support but potentially we could revisit prior ext projects and provide some helper renderers that could handle this...

Ideally built in ag-grid flash on change setting could be enabled and partial updates made to store data via updateData would flash the relevant cells
However currently all cells will flash - assume this relates to our forcing a cell refresh in Grid to ensure custom renderers redraw
Not sure if we have many options here re built in ag support but potentially we could revisit prior ext projects and provide some helper renderers that could handle this...

See https://www.ag-grid.com/javascript-grid-change-detection/ for relevant doc
We are calling the refresh cells method with force true - but I didnt see any place where we were setting suppressChangeDetection
Would like to ensure we aren't havinf the grid double up work or similar - even prior to looking at anything re flashing

Re flashing seems clear from https://www.ag-grid.com/example-runner/vanilla.php?section=javascript-grid-refresh&example=refresh-cells&generated=1&grid={"theme"%3A"ag-theme-balham"%2C"noStyle"%3A0%2C"height"%3A"100%25"%2C"width"%3A"100%25"%2C"enterprise"%3Anull} that our use of the force flag is what is flashing all


cherry pick improvement from Simon's fork 2

Cherry picks will be taken from the local simon branch, this way GitHub will mark it as merged instead of closed.


Update README.md

add info about desktop

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.


Fix or Enhance Python Scripts if existing is not working as expected

Hi, I’m Shrutika, and I was going through the repository and thought of contributing to this project.
I’d love to help update the Fix for Enhance Fix or Enhance Python Scripts if existing is not working as expected #256
I found out there are some typos in Emoji folder due to which script was not running. added some fix in it...
and Could I start working on this and raise a PR?

Hi @shrutikamahale , yes you can work on it

Hi, @DhanushNehru if the issue is still not resolved then I would like to contribute to this project.

Hi @AnsariZayd there is already a PR in review by @shrutikamahale
If you have any alternative way to do the script you can go ahead.
Please do update main readme and standards which is been followed for the existing ones

Hi, could you please give me some pointers on which files do I have to look
at ? I would highly appreciate your help.
Regards,
Zayd
On Tue, 17 Sep, 2024, 8:53 pm Dhanush, @.***> wrote:

Hi @AnsariZayd https://github.com/AnsariZayd there is already a PR in
review by @shrutikamahale https://github.com/shrutikamahale
If you have any alternative way to do the script you can go ahead.
Please do update main readme and standards which is been followed for the
existing ones
—
Reply to this email directly, view it on GitHub
https://github.com/DhanushNehru/Python-Scripts/issues/256#issuecomment-2356227496,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AXT7V34ZEKEEQ5IYHQVIGYLZXBCO3AVCNFSM6AAAAABKEB32ACVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGNJWGIZDONBZGY
.
You are receiving this because you were assigned.Message ID:
@.***>

HI @AnsariZayd just make sure you follow this


feat: adding pt-br translation for managing resources page

Changes

Brazilian portuguese translation for the managing resources page

Related issues
#13939

sorry... I tagged this PR in mistake.

Thanks!
/lgtm

Hello ThiagoGMF, would you be comfortable addressing the suggestions by @stormqueen1990 ?

Hello @ThiagoGMF , I am closing this PR since there has been no response from your end. Please reopen the PR once you're comfortable working on the suggestions by @stormqueen1990 .
/close


validation for bootstrap within EnvoyProxy res

Relates to https://github.com/envoyproxy/gateway/issues/31

Codecov Report

Merging #1109 (181e800) into main (aadebca) will increase coverage by 0.15%.
The diff coverage is 60.00%.

:exclamation: Current head 181e800 differs from pull request most recent head add887a. Consider uploading reports for the commit add887a to get more accurate results

:mega: This organization is not using Codecov’s GitHub App Integration. We recommend you install it so Codecov can continue to function properly for your repositories. Learn more
@@            Coverage Diff             @@
##             main    #1109      +/-   ##
==========================================
+ Coverage   62.42%   62.57%   +0.15%
==========================================
  Files          72       72
  Lines        9430     9476      +46
==========================================
+ Hits         5887     5930      +43
+ Misses       3136     3134       -2
- Partials      407      412       +5

Impacted Files
Coverage Δ

api/config/v1alpha1/validation/envoyproxy.go
68.18% <60.00%> (-21.82%)
:arrow_down:

internal/provider/kubernetes/helpers.go
81.08% <0.00%> (+1.35%)
:arrow_up:

internal/provider/kubernetes/controller.go
50.90% <0.00%> (+1.58%)
:arrow_up:

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


Benchmarks errors - byteswap and mergelines

Hello, noticed a couple of errors on two benchmarks.
Using Clang17 and QEMU user-mode v8.2.2.
Byteswap works with vlen=128, but fails with vlen=512

$ qemu-riscv64 -L /path/sysroot -cpu rv64,v=true,vext_spec=v1.0,vlen=128,elen=64,rvv_ma_all_1s=on,rvv_ta_all_1s=on byteswap
title: "byteswap32",
labels: ["0","scalar","scalar_autovec","SWAR_rev8","rvv_gather_m1","rvv_gather_m2","rvv_gather_m4","rvv_gather_m8","rvv_m1_gathers_m2","rvv_m1_gathers_m4","rvv_m1_gathers_m8",],
data: [
[1,4,7,11,15,20,25,31,38,46,55,65,77,91,107,125,145,168,195,225,260,300,345,397,456,524,601,689,790,905,],
[0.0046500,0.0165016,0.0266615,0.0376712,0.0468530,0.0555709,0.0631552,0.0694055,0.0767754,0.0821501,0.0878033,0.0923689,0.0972099,0.1010213,0.1019727,0.1057261,0.1086183,0.1115167,0.1137125,0.1153668,0.1175035,0.1192748,0.1211652,0.1222046,0.1239340,0.1251552,0.1258427,0.1256531,0.1279714,0.1278302,],
[0.0014713,0.0026027,0.0030008,0.0038378,0.0037826,0.0042062,0.0046242,0.0043641,0.0044947,0.0045521,0.0046614,0.0048028,0.0048593,0.0048084,0.0049773,0.0048881,0.0050663,0.0049632,0.0050065,0.0050328,0.0050012,0.0050286,0.0050001,0.0050195,0.0049937,0.0049708,0.0050973,0.0050261,0.0050519,0.0049986,],
[0.0049825,0.0173197,0.0304546,0.0428432,0.0559805,0.0669568,0.0754147,0.0847689,0.0916214,0.0970464,0.1064653,0.1108458,0.1155115,0.1173663,0.1197001,0.1215657,0.1259664,0.1288047,0.1309339,0.1355176,0.1373662,0.1383923,0.1427802,0.1434300,0.1458803,0.1467129,0.1455434,0.1488442,0.1468497,0.1478202,],
[0.0014785,0.0044116,0.0062943,0.0053854,0.0065697,0.0069725,0.0072769,0.0080157,0.0083903,0.0087342,0.0090036,0.0091369,0.0094278,0.0096013,0.0097712,0.0100587,0.0100582,0.0107297,0.0104014,0.0104191,0.0105666,0.0105055,0.0107629,0.0107234,0.0108763,0.0108005,0.0108411,0.0108356,0.0109395,0.0108678,],
[0.0013551,0.0040066,0.0058245,0.0075257,0.0084834,0.0071947,0.0079648,0.0083950,0.0086504,0.0091219,0.0095271,0.0097441,0.0102191,0.0105451,0.0106993,0.0108772,0.0109936,0.0111641,0.0112588,0.0114477,0.0116144,0.0117276,0.0118299,0.0118097,0.0119177,0.0120204,0.0119781,0.0120790,0.0121374,0.0122073,],
[0.0011696,0.0036005,0.0053128,0.0069343,0.0078912,0.0091112,0.0097462,0.0105503,0.0092220,0.0095850,0.0103388,0.0100930,0.0104965,0.0110938,0.0112841,0.0117006,0.0117801,0.0119972,0.0120910,0.0123152,0.0124819,0.0125629,0.0127869,0.0128397,0.0129573,0.0130012,0.0130398,0.0131275,0.0131873,0.0132576,],
[0.0003554,0.0013160,0.0021040,0.0030942,0.0038266,0.0047222,0.0055169,0.0062209,0.0070523,0.0078089,0.0084536,0.0082295,0.0086859,0.0092035,0.0098196,0.0103544,0.0104557,0.0108863,0.0112735,0.0115949,0.0118787,0.0121087,0.0123095,0.0125833,0.0128137,0.0129303,0.0130291,0.0132421,0.0132818,0.0134574,],
[0.0012097,0.0038954,0.0059402,0.0077870,0.0087719,0.0073405,0.0083107,0.0089218,0.0087027,0.0093048,0.0094767,0.0096255,0.0102275,0.0105066,0.0107003,0.0108150,0.0108046,0.0111121,0.0111394,0.0112618,0.0113717,0.0114867,0.0116322,0.0116001,0.0117121,0.0118493,0.0118084,0.0117919,0.0118795,0.0119491,],
[0.0009552,0.0031055,0.0048302,0.0065824,0.0075910,0.0089389,0.0099298,0.0109254,0.0089792,0.0096450,0.0103281,0.0099143,0.0105348,0.0112607,0.0112215,0.0117596,0.0116259,0.0117241,0.0118388,0.0118858,0.0121052,0.0122979,0.0125464,0.0125380,0.0125672,0.0127383,0.0127788,0.0128276,0.0129405,0.0129474,],
[0.0006662,0.0023483,0.0037179,0.0052322,0.0062513,0.0075045,0.0084042,0.0094338,0.0104652,0.0112006,0.0121532,0.0098240,0.0104670,0.0111270,0.0118574,0.0124812,0.0116400,0.0123124,0.0120734,0.0125895,0.0124900,0.0129648,0.0129154,0.0129544,0.0130211,0.0131163,0.0132427,0.0133981,0.0133794,0.0134595,],
]
}

$ qemu-riscv64 -L /path/sysroot -cpu rv64,v=true,vext_spec=v1.0,vlen=512,elen=64,rvv_ma_all_1s=on,rvv_ta_all_1s=on byteswap
{
title: "byteswap32",
labels: ["0","scalar","scalar_autovec","SWAR_rev8","rvv_gather_m1","rvv_gather_m2","rvv_gather_m4","rvv_gather_m8","rvv_m1_gathers_m2","rvv_m1_gathers_m4","rvv_m1_gathers_m8",],
data: [
[1,4,7,11,15,20,25,31,38,46,55,65,77,91,107,125,145,168,195,225,260,300,345,397,456,524,601,689,790,905,],
[0.0046232,0.0168279,0.0268096,0.0379506,0.0470662,0.0558815,0.0634759,0.0702072,0.0775668,0.0827635,0.0885739,0.0931699,0.0978647,0.1009484,0.1025591,0.1051613,0.1078708,0.1106209,0.1133490,0.1154349,0.1173523,0.1188730,0.1212525,0.1226179,0.1244558,0.1254218,0.1249857,0.1270209,0.1287231,0.1269480,],
[0.0014588,0.0025883,0.0030218,0.0038137,0.0036593,0.0041891,0.0045090,0.0043190,0.0044974,0.0046147,0.0046874,0.0048142,0.0047680,0.0049211,0.0048735,0.0048466,0.0049891,0.0049948,0.0050898,0.0049800,0.0050794,0.0049472,0.0049827,0.0051025,0.0049873,0.0050706,0.0050288,0.0049810,0.0049940,0.0050172,],
[0.0050505,0.0189259,0.0317676,0.0443906,0.0556173,0.0658761,0.0750750,0.0853406,0.0906596,0.0972207,0.1059424,0.1118953,0.1166136,0.1203942,0.1146101,0.1224769,0.1248546,0.1278587,0.1348547,0.1250243,0.1375479,0.1412761,0.1405266,0.1403893,0.1442034,0.1423313,0.1468252,0.1395810,0.1498383,0.1492131,],
[0.0013756,0.0040914,0.0059164,0.0077383,0.0085336,0.0072066,0.0080392,0.0085229,0.0086000,0.0090740,0.0095342,0.0097117,0.0103074,0.0104799,0.0106513,0.0107848,0.0108269,0.0111189,0.0112184,0.0113854,0.0114687,0.0115362,0.0117546,0.0118154,0.0118665,0.0119207,0.0118742,0.0118940,0.0120250,0.0120864,],
[0.0011532,0.0034171,0.0051336,0.0069887,0.0078001,0.0089849,0.0098609,0.0105338,0.0091402,0.0095520,0.0101833,0.0101041,0.0104680,0.0109363,0.0113258,0.0115639,0.0117853,0.0119617,0.0120667,0.0122801,0.0123838,0.0125980,0.0126651,0.0128561,0.0129542,0.0130202,0.0129671,0.0129660,0.0131470,0.0132038,],
[0.0003504,0.0012902,0.0021331,0.0031063,0.0038752,0.0047633,0.0055105,0.0063310,0.0071059,0.0078610,0.0085404,0.0082978,0.0088599,0.0093152,0.0099135,0.0104550,0.0106189,0.0110978,0.0114681,0.0117524,0.0120230,0.0123103,0.0125244,0.0127897,0.0129674,0.0131182,0.0132822,0.0134193,0.0135214,0.0136688,],
[0.0002018,0.0007586,0.0012931,0.0019323,0.0024856,0.0031519,0.0037317,0.0044095,0.0050598,0.0057171,0.0064036,ERROR: rvv_gather_m8 in byteswap32 at 65

mergelines 2/3 fails after latest commit - "don't do e8 mf8 operations on Zve32x"

$ qemu-riscv64 -L /path/sysroot -cpu rv64,v=true,vext_spec=v1.0,vlen=128,elen=64,rvv_ma_all_1s=on,rvv_ta_all_1s=on mergelines
{
title: "mergelines 2/3",
labels: ["0","scalar","rvv_vslide_m1","rvv_vslide_m2","rvv_vslide_m4","rvv_vslide_m8","rvv_vslide_skip_m1","rvv_vslide_skip_m2","rvv_vslide_skip_m4","rvv_vslide_skip_m8","rvv_mshift_m1","rvv_mshift_m2","rvv_mshift_m4","rvv_mshift_m8","rvv_mshift_skip_m1","rvv_mshift_skip_m2","rvv_mshift_skip_m4","rvv_mshift_skip_m8",],
data: [
[1,4,7,11,15,20,25,31,38,46,55,65,77,91,107,125,145,],
[0.0047551,0.0134748,0.0185185,0.0251055,0.0301537,0.0335598,0.0359453,0.0384973,0.0412013,0.0444315,0.0447318,0.0456444,0.0465439,0.0490486,0.0487127,0.0510381,0.0510096,],
[0.0047281,0.0006678,0.0011083,0.0016468,0.0021347,0.0015323,0.0018439,0.0022009,0.0018855,0.0022044,0.0020336,0.0023467,0.0022326,0.0022193,0.0022440,0.0022822,0.0023522,],
[0.0046544,0.0006635,0.0010994,0.0016342,0.0021172,0.0026722,0.0031885,0.0037434,0.0026113,0.0030026,0.0034305,0.0039428,0.0033048,0.0037234,0.0034429,0.0038392,0.0036572,],
[0.0047370,0.0006642,0.0010978,0.0016327,0.0021207,0.0026706,0.0031768,0.0037392,0.0042681,0.0048114,0.0052925,0.0058214,0.0042709,0.0047567,0.0052225,0.0056493,0.0049711,],
[0.0047003,0.0006641,0.0011000,0.0016393,0.0021290,0.0026776,0.0031858,0.0037369,0.0042869,0.0047973,0.0052971,0.0057497,0.0063244,0.0069388,0.0074540,0.0079079,0.0062214,],
[0.0041186,0.0011234,0.0012765,0.0016857,0.0020868,0.0017808,0.0018895,0.0021860,0.0020133,0.0021946,0.0021100,0.0023387,0.0022261,0.0022489,0.0022427,0.0022843,0.0023447,],
[0.0045787,0.0009839,0.0012597,0.0016954,0.0020838,0.0026026,0.0031062,0.0036344,0.0028346,0.0029712,0.0033538,0.0038688,0.0033025,0.0036474,0.0033883,0.0037620,0.0035885,],
[0.0047472,0.0009467,0.0012836,0.0016210,0.0020907,0.0026206,0.0031297,0.0036581,0.0041799,0.0046632,0.0051307,0.0054933,0.0042561,0.0046345,0.0050946,0.0055013,0.0048412,],
[0.0047950,0.0010649,0.0014533,0.0018101,0.0021539,0.0026203,0.0031245,0.0036500,0.0041553,0.0046539,0.0051120,0.0055509,0.0060875,0.0066366,0.0071343,0.0075295,0.0060216,],
[0.0044603,0.0009954,0.0016426,0.0023894,0.0030604,0.0022044,0.0026296,0.0030785,0.0027111,0.0031162,0.0029306,0.0033595,0.0032028,0.0032000,0.0032369,0.0032999,0.0033976,],
[0.0047517,0.0010020,0.0016359,0.0023997,0.0030359,ERROR: rvv_mshift_m2 in mergelines 2/3 at 20(

EDIT: I've seen that comment that says byteswap only works on <=256 bits.

Thanks, the merglines bug should be fixed now.
I'll look into converting the byteswap code to vrgatherei16.vv this weekend.
I think I'll just disable it for XTheadVector, LUT4 already covers what I really wanted to test here.
Hopefully well get the Milk-V Oasis soon, once we have a better core than the C920, I'll finally remove XTheadVector support completely.

Hello, I've tested a byteswap with vrgatherei16, use it if you wish.
#if MX_N == 4 || MX_N == 2 || MX_N == 1
# a0 = ptr, a1 = len
.global MX(byteswap32_rvv_gather_i16_)
MX(byteswap32_rvv_gather_i16_):
	vsetvli t0, x0, e16, MX2(), ta, ma
	vid.v v0
	vand.vi v8, v0, 3
	vrsub.vi v8, v8, 3
	vsrl.vi v0, v0, 2
	vsll.vi v0, v0, 2
	vadd.vv v0, v0, v8 # i/8*8 + (7-1%8)
1:
	vsetvli t0, a1, e32, MX(), ta, ma
	vle32.v v8, (a0)
	slli t1, t0, 2
	vsetvli x0, t1, e8, MX(), ta, ma
	vrgatherei16.vv v16, v8, v0
	vsetvli x0, t0, e32, MX(), ta, ma
	vse32.v v16, (a0)
	sub a1, a1, t0
	add a0, a0, t1
	bnez a1, 1b
	ret
#endif

I have a small nitpick, could the main.S macro file in instructions/rvv be swapped to gen.S? this way both rvv and scalar instructions can be build using the same command ${CC} ${CFLAGS} main.S main.c -o $@

Thanks a lot, your vrgatherei16 implementation is now integrated, and main.S renamed.
I've also added CI for the different vector length and both rv32 and rv64, that should hopefully catch this sooner next time.


[lexical] Feature: Add version identifier to LexicalEditor constructor

Description
New LexicalEditor.version static to help users diagnose installation issues.
Also refactors other __lexicalEditor code to avoid conflicts with multiple lexical builds on the page (RE #6481)
Inspecting the lexical editor's version can be done as follows (example assumes exactly one editor on the page):
> document.querySelector('[contenteditable]').__lexicalEditor.constructor.version
'0.17.0+dev.esm'

It does not have support for coming up with special build identifiers for the versions of lexical we build in CI and for the website that do not correspond to npm versions.
Closes #6145
Closes #5996
Test plan
There's an integration test that checks to make sure the version is set and accessible from the editor instance
Before
> oldLexical.createEditor().constructor.version
undefined
> lexical.createEditor().constructor.version
'0.17.0+dev.esm'

After
Using https://lexical-playground-git-fork-etrepum-version-a6c103-fbopensource.vercel.app/esm/

I think these are flaky collab test failures


Change folder name

Script still couldn't see the Neo Geo games when I got the .neo pack. Tried changing the folder name to match what I've got, and it worked. To make sure my folder name didn't get wonky, I renamed it and re-ran update-all, and it downloaded the folder as "NEOGEO". So I believe that's the current naming scheme, despite what the Neo Geo core's README says.

Nice! Thank you for testing and patching. Sounds good to me


Consolidate version dropdown code and fix library detail dropdown

Fixes #1488

DRY up various pieces of code getting version queryset for dropdown
This eliminated the special exclusion of the latest beta from the library detail page

@rbbeeston care to be final arbiter on this?


Bumped ccx-rules-ocp version

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:
:loudspeaker: Thoughts on this report? Let us know!.


Feature request: store filters in local storage

Is your feature request related to a problem? Please describe.
I'd like for PiGallery to preserve the filters I previously set when I come back to the page. The particular reason here being to maintain a filter that drops photos with no date info, since they get sorted to the top (an unrelated issue). I can solve this by having the filters persisted in local storage.
Describe the solution you'd like
Whenever filters are updated, persist those changes to local storage. When the page is loaded, pull that filter from local storage if present.
Describe alternatives you've considered

User-level server side persistence of filters
This is super heavy-handed and complex
Use url-query parameters
This isn't nuts, but it doesn't fully do what I want (come back to where I was when I navigate to http://mygallery), and it's more heavy-handed and represents a significantly larger change

I was thinking adding the 2nd alternative to the app. So when you share a folder it would possible to share the actual view that you are looking at.
Alternative 3 would be to use pg2conf files: src/common/PG2ConfMap.ts
User creates a *.pgconf file in the directory. That file auto goes to the client side and the client can read it and do something based in that.

I'm not 100% I want this feature in the app, but I'm not super against it. I see that you started working on some implementation. Can you please put this behind some flag (config) and make it disabled by default.
I'm doing something similar with sorting, if you want some pointers: https://github.com/bpatrik/pigallery2/blob/fc75be1b25f012b721c44238cac38d5f253cd2ac/src/frontend/app/ui/gallery/navigator/sorting.service.ts#L60-L67
There is GalleryCacheService that interacts with local storage.

I'm not 100% I want this feature in the app, but I'm not super against it. I see that you started working on some implementation. Can you please put this behind some flag (config) and make it disabled by default.

Yeah, if/when I actually get to any behavior changes I'll config-flag it.

I'm doing something similar with sorting, if you want some pointers:
https://github.com/bpatrik/pigallery2/blob/fc75be1b25f012b721c44238cac38d5f253cd2ac/src/frontend/app/ui/gallery/navigator/sorting.service.ts#L60-L67

Yes, behaviorally this is essentially what I was imagining for filters.

There is one more thing that worth considering when implementing this feature. I plan to add the following features sometime in the future:

filter photos on the server side (like hide some photos for certain users) This would also unblock sharing search results
Auto hide photos on the UI. I want to merge raw and edited photos to one directory and auto hide (in the client side filter tab) raw photos. It would be basically a special filter that would be on by default.


Create HNS instances when creating subNS with kubectl

Add the creation of the HNS instances in the kubectl plugin.
Tested on GKE cluster. I created a subnamespace using "kubectl hns
create -n parent child". The "child" hns instance was created in "parent"
namespace together with the "hierarchy" singleton hc instance by this
command. Then I saw the hns reconciler log on this hns instance in
Stackdriver.
Part of #457

/assign @adrianludwin


Add rule "NOSONAR" tags should not be used to switch off issues

Fixed in https://github.com/iwarapter/sonar-puppet/pull/34

PR Merged


"Multiple embedded objects not supported yet"?

I saw following line in Model source code:
Logger.debug("multiple embedded objects not supported yet");
Could you plz elaborate it more? what does it exactly imply to the model design?
Thanks.
BRs,
Yu

This is something we need badly. We're not able to load MorphiaFixtures that contain lists of embedded documents, which happens in almost every one of our collections.
We may try to fix it this week if you think it's something simple. Right now, our workaround is to instantiate a bunch of embedded documents programmatically within setUp(). It's pretty ugly.

Does JPA embedded object list supported now?

Looks like it does in 1.2.4:
https://play.lighthouseapp.com/projects/57987/tickets/74-fixtures-should-support-assigning-an-embedded-object

It's admitted that binding refactory work is not mature in play 1.2.4, and
Morphia is not be able to work well with this version. let's wait for 1.2.5
release and I will look back this issue then
On Tue, Jan 10, 2012 at 9:57 PM, bolinfest <
<EMAIL_ADDRESS>
wrote:

Unfortunately, I do not believe this is the case. I have been playing with
the code tonight, and I put together a pull request for Play that I believe
is required to support lists of @Embedded objects in PlayMorphia fixtures:
https://github.com/playframework/play/pull/433
Green, if you could provide any insight on this, it would be a big help.
With this change, I end up with instances of the @Embedded type in the
List, but none of the List's elements have its fields initialized (though
this is better than the NullPointerExceptions that were thrown previously).
Admittedly, much of the relevant classes that affect how fixtures are
instantiated (EmbeddedMapper, Mapper) are in Morphia rather than
PlayMorphia, but I'm guessing you are more familiar with them than I am.
On Mon, Jan 9, 2012 at 9:48 PM, chrislambert <
<EMAIL_ADDRESS>
wrote:

Looks like it does in 1.2.4:

https://play.lighthouseapp.com/projects/57987/tickets/74-fixtures-should-support-assigning-an-embedded-object

Reply to this email directly or view it on GitHub:

https://github.com/greenlaw110/play-morphia/issues/28#issuecomment-3425646

Reply to this email directly or view it on GitHub:
https://github.com/greenlaw110/play-morphia/issues/28#issuecomment-3428147

Well, unfortunately, we really need this functionality now, so I guess
we'll have to keep hacking the source ourselves :(
On Tue, Jan 10, 2012 at 4:15 AM, Green Luo <
<EMAIL_ADDRESS>
wrote:

It's admitted that binding refactory work is not mature in play 1.2.4, and
Morphia is not be able to work well with this version. let's wait for 1.2.5
release and I will look back this issue then
On Tue, Jan 10, 2012 at 9:57 PM, bolinfest <
<EMAIL_ADDRESS>
wrote:

Unfortunately, I do not believe this is the case. I have been playing
with
the code tonight, and I put together a pull request for Play that I
believe
is required to support lists of @Embedded objects in PlayMorphia
fixtures:
https://github.com/playframework/play/pull/433
Green, if you could provide any insight on this, it would be a big help.
With this change, I end up with instances of the @Embedded type in the
List, but none of the List's elements have its fields initialized (though
this is better than the NullPointerExceptions that were thrown
previously).
Admittedly, much of the relevant classes that affect how fixtures are
instantiated (EmbeddedMapper, Mapper) are in Morphia rather than
PlayMorphia, but I'm guessing you are more familiar with them than I am.
On Mon, Jan 9, 2012 at 9:48 PM, chrislambert <
<EMAIL_ADDRESS>
wrote:

Looks like it does in 1.2.4:

https://play.lighthouseapp.com/projects/57987/tickets/74-fixtures-should-support-assigning-an-embedded-object

Reply to this email directly or view it on GitHub:

https://github.com/greenlaw110/play-morphia/issues/28#issuecomment-3425646

Reply to this email directly or view it on GitHub:

https://github.com/greenlaw110/play-morphia/issues/28#issuecomment-3428147

Reply to this email directly or view it on GitHub:
https://github.com/greenlaw110/play-morphia/issues/28#issuecomment-3428921


[BUG]: NFS Export gets deleted when one pod is deleted from the multiple pods consuming the same PowerFlex RWX NFS volume

Bug Description
As per the implementation of PowerFlex 2.8.0 NFS feature, whenever a pod is deleted, the NFS export is also getting deleted. Considering a scenario where there are multiple pods consuming the same PowerFlex NFS volume running on different hosts, when one pod is deleted, its access should be removed from the NFS export but the other pod consuming that volume should still has access to it and the NFS export should be retained for this host.
Logs
PVC, PV created:
[root@master-1-XLAciAjAjp1SS templates]# k get pvc,pv
NAME                         STATUS   VOLUME           CAPACITY   ACCESS MODES   STORAGECLASS   AGE
persistentvolumeclaim/pvc0   Bound    k8s-4438caf3ab   8Gi        RWX            vxflexos-nfs   6m12s

NAME                              CAPACITY   ACCESS MODES   RECLAIM POLICY   STATUS   CLAIM          STORAGECLASS   REASON   AGE
persistentvolume/k8s-4438caf3ab   8Gi        RWX            Delete           Bound    default/pvc0   vxflexos-nfs            4m22s

Pods created consuming the same volume but present on different hosts
[root@master-1-XLAciAjAjp1SS templates]# k get po -owide
NAME        READY   STATUS    RESTARTS   AGE     NODE                            NOMINATED NODE   READINESS GATES
pod-nfs-0   1/1     Running   0          4m18s   worker-1-xlaciajajp1ss.domain   <none>           <none>
pod-nfs-1   1/1     Running   0          103s    worker-2-xlaciajajp1ss.domain   <none>           <none>

One pod deleted:
[root@master-1-XLAciAjAjp1SS templates]# k delete -f pod0.yaml
pod "pod-nfs-0" deleted

Not able to write any data on the second pod:
[root@master-1-XLAciAjAjp1SS templates]# k exec pod-nfs-1 -it /bin/bash
kubectl exec [POD] [COMMAND] is DEPRECATED and will be removed in a future version. Use kubectl exec [POD] -- [COMMAND] instead.
[root@pod-nfs-1 /]#
[root@pod-nfs-1 /]# ls
bin  data0  dev  etc  home  lib  lib64  lost+found  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@pod-nfs-1 /]# touch data0/test.txt
touch: setting times of 'data0/test.txt': Operation not permitted

Screenshots
No response
Additional Environment Information
No response
Steps to Reproduce

Install PowerFlex 2.8.0 driver
Create one RWX NFS volume
Create two pods consuming the same volume
Delete one pod
Try to write data to another pod

Expected Behavior
Should be able to write data to another pod since its access to the export should retain.
CSM Driver(s)
CSI Driver PowerFlex 2.8
Installation Type
Helm
Container Storage Modules Enabled
No response
Container Orchestrator
Kubernetes 1.26
Operating System
RHEL 8.6

Since the RECLAIM POLICY  on your PV is set to "Delete" isn't this expected?  You would need to set that to "Retain" if you don't want it to be deleted.

Since the RECLAIM POLICY on your PV is set to "Delete" isn't this expected? You would need to set that to "Retain" if you don't want it to be deleted.

When there are two pods consuming the same RWX volume and both are on different hosts, both the hosts are given access to the NFS export, if one pod is deleted then the other pod's host should still have access to the NFS export.

I didn’t read it properly the first time. I agree, the pod deletion shouldn’t remove the nfs export from the first pod. Sounds like a design flaw or bug.

link: 18467


Code needs to be made more robust

Flexibility in constraint inputs:

[x] A disjunct could be a code block (begin...end)
[x] A disjunct could be a code block with some or all named constraints
[x] A disjunct could be a single constraint
[x] A disjunct could be a named constraint
[x] A disjunct could be an anonymous constraint
[x] the constraint expressions could be defined in the macro itself. Create a disjunction object to extend JuMP.

Constrain splitting:

[x] When a constraint set is bounded (i.e. 0<= x <= 1), it needs to be split into two constraints to allow implementing CHR and BMR

Closed in v0.1.7


strings: document that order of pairs matters in NewReplacer

The current documentation doesn't specify the result of the following code (could be either "declare" or "decodel") because they both match at the same starting position:
strings.NewReplacer("decl", "declare", "dec", "decode").Replace("decl")

The actual result is "declare", i.e. the first pair takes precedence (not the longest old string).
I just run into a use case that would require this precedence to be guaranteed, but I can't rely on it because it's not documented.
Looking at the code I presume the precedence is intentional: the generic algorithm uses a lookup trie for prioritized key/value pairs, and keys are added with decreasing priority, see here (len(oldnew)-i is the priority).
Unless there is actually a reason for it to be left undefined, I propose something like:

Leftmost matches take precedence, and among those, the leftmost pair in NewReplacer's arguments takes precedence.

Ok, hopefully someone will come up with better words...

Leftmost matches take precedence, and among those, the leftmost pair in NewReplacer's arguments takes precedence.

I think this is clear. Maybe

Leftmost matches take precedence, and among those, the leftmost matching pair in NewReplacer's arguments takes precedence.

But maybe that's obvious 🤔

Thanks for your insight.
In both alternatives I find a little confusing that the first "leftmost" is relative to the target string while the second "leftmost" is relative to the order of the arguments.
We want to be sure that your "leftmost matching pair" is read as "the leftmost pair (in the pairs list) that matches", and not as "the pair that matches leftmost (in the target string)".
Here's another try:

The old string matching earlier in the target string is replaced first. If more than one old string matches at the same starting position, the one appearing earlier in NewReplacer's arguments is replaced first.

@pam4 I like this one! How about this? Sounds maybe a little simpler to me

When multiple matches are found at the same starting position, the matching pair appearing earlier in NewReplacer's arguments is used.

But I feel like we could go on forever 😄  Maybe it's time to submit a CL? Do you want to do it or should I go ahead?

@rentziass, your wording sounds fine to me. Please go ahead with the CL if you are willing. Thanks!


Support mocking SMTP

I'm circling back on https://github.com/mswjs/msw/discussions/751
I would like to make my sendEmail function easier to migrate between different email providers and using the SMTP standard is the easiest way to do this. But then I have to resort to doing weird things to mock it (nodemailer specifically) out during development and testing.
Any chance MSW could support mocking these kinds of requests?

Hey, @kentcdodds.
I took a look at how Nodemailer works, and as I suspected, they tap into a raw socket connection via the net module of Node.js. The Interceptors currently operate on a higher level http.ClientRequest class to provision HTTP interception since net is generally too low-level to gain much control over the request instances. At that level, Node is operating with socket messages that don't have any context of the sender (was it an HTTP request? Was it an SMTP message?) or don't have enough context to lower our implementation logic to the sockets.
Here's a rough representation of those network layers:
http
  http.ClientRequest
    IncomingMessage / OutgoingMessage
      Socket
        write / on('data')

The Socket layer seems to be the highest layer we can capture requests over SMTP and other non-HTTP protocols in Node.js. That's also how Nodemailer and other implementations do that since Node doesn't ship with a standard API to make SMTP requests easier as it does for HTTP requests.
My approach to interception is that it should be unified, as in I'm not eager to ship logic that's specific to certain libraries or even protocols. A good solution here would be to lower all the interception logic to the Socket layer, including the interception of HTTP requests. But, as I've mentioned, that can prove problematic in some use cases.
An incremental solution would be to try implementing something like a SocketInterceptor that is limited by design and may not support full HTTP interception like the ClientRequestInterceptor does. In turn, it could be utilized to implement SMTP interception since it is implemented on that layer and the consumer won't lose any context when tapping into it (it is dealing with raw sent/received messages).
I'm currently busy with the Fetch API primitives adoption in MSW and I'm excited it's reaching the finish line. I won't have any time to look into this feature in the nearest future, I'm afraid. This can be a great improvement for the upcoming releases though!

Thanks for explaining all of that! If this becomes a high enough priority for me then I'll signal in here that I've started looking into it myself. Cheers!

I also recall that one technical challenge was to parse socket messages. At the Socket level, you are operating with plain text sent over the network so you receive chunks like
GET /resource HTTP1.1
Host: api.com
X-Header: Value

These strings have to be parsed to do request matching and turn the finished request message into a Fetch Request instance. Sadly, Node doesn't expose their parser publicly (it's written in C).

@kentcdodds, I've given the Socket-based interceptor a try in #375 and it mostly works. I've managed to work around the actual socket connection and let the socket think it's always connected, even if to a non-existing host. Responding with a mock message also works based on the test I wrote.
If you ever get to play around with this, take a look at that pull request, it's a good starting point.

Wow! Very cool!

The main challenge at the moment is the import order. Since you're often using a dependency that imports net internally, the interceptor becomes sensitive to order:
// OK!
import './interceptor'
import { sendMail } from 'third-party'

// Nope :(
import { sendMail } from 'third-party'
import './interceptor'

Because of this, it cannot be applied lazily (i.e. in your beforeAll hook as it should be).
This must have a solution since it's not a problem for the http module and we already have an interceptor that works just fine with third-parties that depend on http.

When talking about consumable third-party packages like Nodemailer, the interception becomes more complex as a result of the implementation details of those packages. For example, Nodemailer can utilize three different protocols to implement email transfer and switch between them as it sees fit. A single interceptor cannot guarantee it will intercept an email sent with Nodemailer simply because of that.
This opens up a more interesting discussion about low-level interception and high-level usage needs. When you're using tools like Nodemailer, all you want to do is intercept that sent email and maybe mock the server's response. You don't want to think (or even know) how exactly that email transfer is being implemented under the hood—that's too low-level for you. But from the Interceptor's standpoint, it doesn't tackle specific tools but instead tries to provide an interception on the basis of common ground (e.g. let's patch http.ClientRequest so that any third-party using it would be intercepted). This principle makes sense but it doesn't scale to more complex third-party implementations.
This reminds me a lot about WebSockets and what makes their support challenging. No libraries are using the WebSocket standard API from the browser (at least by default). When talking about Node, there isn't even a standard API, to begin with, so every solution implements message transports as it sees fit. It's very hard to make the expectations from a tool like Interceptors and MSW predictable when the underlying (internal) implementation is unpredictable. This is the main reason why I revamped the architecture of the Interceptors to allow batched interceptors—compound interception mechanisms that can combine (and reuse) multiple low-level interceptors. For example, to intercept WebSocket transfer we have to

Intercept WebSocket server handshake (an HTTP request).
Then, intercept socket messages (actual data sent/received).

Which already gives us 2 different areas to work with. I think SMTP is very similar in this regard.
I suppose we can implement something like a SmtpInterceptor batched interceptor that would account for different protocols that third-parties may implement SMTP through. I just don't know how well this aligns with the low-level philosophy of this library and how that would integrate into MSW, where interceptors act as the source for incoming requests so you would always get SMTP interception logic even if you're not planning on intercepting anything related to that.

That makes sense. Might be more work than it's worth 😬

With #515, mocking SMTP and other protocols in Node.js becomes a matter of introducing a respective parser. So, it's possible!


Add pre-packaged formatter that includes file name and line number.

Save time setting up CocoaLumberjack
Serve as documentation on how to create own custom format.

This should probably be set as an example rather than included in the library, IMO.

@bpoplauschi Its up to you. I presented my justification in #403. ie, since its so commonly asked for, why make it necessary to read the docs on creating a formatter, implement one, plug it in,  and end up copy/pasting it between projects.

I think we can add those as long as they are not automatically imported by the main header files.
Also as @bpoplauschi says the formatter should be demonstrated somewhere to make it easy to test. To avoid a big number of bum demos we should probably add it to one of the existing formatter-related demos. Could you do that?

@jasperblues could you update the PR with our latest comments?

@jasperblues any updates?

Let's close this PR. I'm no longer interested in this feature. At the time I thought it might be useful for others. Not sure if this is the case, but presently I don't have sufficient time to work on this.

Ok. Thanks anyway.


ffmpeg > 6.0 should have oneVPL enabled

ffmpeg has enabled oneVPL support starting from Version 6.0 (Changelog).
Therefore I think that the NixOS Package should follow this, and build ffmpeg_6 with:
withVpl = true;
withMfx = false; # cannot be enabled together with oneVPL

@Atemu
You are the maintainer for the ffmpeg package. What do you think about this?

The problem is not enabling VPL but rather disabling MFX as that would remove support for older intel GPUs.
If there was VPL support for sufficiently old intel GPUs or if ffmpeg could be built with both VPL and MFX at the same time, we could enable VPL. Otherwise, you can always ffmpeg.override { withVPL = true; withMFX = false; } for yourself.
cc @evanrichter

I get that disabling MFX is an issue.
Is this change compared to upstream documented somewhere? I couldn't find anything. Could we improve the documentation, so that people know about this change and how to enable libvpl support in ffmpeg without having to look through the nixpkg?
Personally I was configuring hardware acceleration for jellyfin, the wiki of which specifically says that libva is enabled in ffmpeg > 6.0.
That this isn't the case in Nixpkg, not even with ffmpeg-jellyfin, isn't mentioned in the Jellyfin, Accelerated Video Playback or the Intel Graphics NixOS Wiki Pages.

libva != libvpl
VAAPI is enabled in all ffmpeg builds.
Please also note that, while the current NixOS wiki is now "official", the articles you linked were merely copied over from the unofficial wiki. They're not necessarily correct or up to date and do not constitute official documentation.

Sorry, I misspelled.
I know that these articels are only copied from the unoffical wiki. However, I still think that this should be documented somewhere.
However, if you don't think so that I guess this issue can be considred closed.

However, I still think that this should be documented somewhere.

Absolutely.
The problem is that we don't really have a place to properly document override flags yet. See https://github.com/NixOS/rfcs/pull/169 for progress on that.
Though in the mean time, we could at least document how to get specific things working and point users towards reading the source files to know which flags exist.
I don't have OneVPL working on my system, so I can't be of help here but if anyone has, it'd be great if you could expand the wiki on that topic :)

However, if you don't think so that I guess this issue can be considred closed.

No I do think so and I also think that libvpl should be enabled in ffmpeg. I'd prefer to keep this issue open in case anyone has a solution.

@Atemu Hey, I still think enabling libvpl for 6.0 and above should be the default! People with older GPUs can override it anyway for 6.0 and above.

@natto1784 as explained earlier, that would imply disabling support for older iGPUs which are still quite common. We cannot do that. Overriding ffmpeg system-wide is not feasible for most users.
With https://github.com/NixOS/nixpkgs/pull/315425 you should at least be able to use intel-media-sdk via VPL though. Could you try that? I'm also not really sure what exactly it is that you want to achieve using oneVPL that you couldn't achieve using libva.
Until it is possible to enable VPL and intel-media-sdk at the same time in ffmpeg, I'd consider this issue to be resolved. This issue is not actionable on our side.

Yes, well I have already got everything working with the said flags, that is a non-issue. I was just looking forward to making it the default. Well too bad that it is not feasible right now.

By "said flags", did you mean enabling oneVPL via override or using oneVPL via intel-media-sdk?
I'm also still curious what the use-case is over libva.

i meant simply enabling vpl, i just want to be able to get this, without rebuilding jellyfin every time, lol
nix shell --impure --expr 'with (import <nixpkgs> {}); jellyfin.override { ffmpeg = jellyfin-ffmpeg.override { ffmpeg_6-full = ffmpeg_6-full.override { withMfx = false; withVpl = true; };};}'

@Atemu Intels blog post about the new option in FFMPEG states "Users can switch to VPL in FFMPEG, even for older Intel hardware."  They explain that they have a layer which selects either actual VPL or the older Media SDK.
https://www.intel.com/content/www/us/en/developer/articles/technical/onevpl-in-ffmpeg-for-great-streaming-on-intel-gpus.html
Have you found this not to actually work on older intel iGPU's or was it an assumption that it wouldn't?

If it's possible to use VPL in ffmpeg without removing support for widely used GPUs, I'm all for it.
So far, I have simply not seen any report of it actually working however.

Hello,
I am exteremly intrested in getting ffmpeg with libvpl, please
I do not care if rest of GPUs do not work, but reather to have something work first
Best Regards
George

As mentioned previously in this thread, please simply override your ffmpeg: ffmpeg.override { withVPL = true; withMFX = false; }

Issue resurrection time!
From what I can untangle from the mess of the intel GPU stack, switching to libvpl in ffmpeg should not drop support for older hardware supported by libmfx, as libvpl should dispatch to the Media SDK when needed. This is mentioned by @PJungkamp in this comment, and I'm wondering, if someone can test this and confirm. If so, I'd say we're good to enable libvpl instead of libmfx.

As I said, I don't have older hardware to test.
And if we were to switch, every user of ffmpeg with Intel QSV needs to add intel-media-sdk to the graphics extra packages on those older CPUs.

I see, I was under the impression that we already needed to add intel-media-sdk to graphics extra packages.

@Atemu
FYI the LibVPL is just a loader that selects the appropriate runtime version automatically based on the generation of the Intel GPU - MediaSDK runtime for 10th Gen and older, and VPL runtime for 11th Gen and newer. To be compatible with both old and new GPUs, just make sure both runtimes are installed at the same time, which will not break anything.
Without VPL enabled, the av1_qsv hardware encoder in FFmpeg is not available.

Thanks for the input @nyanmisaka.
I am now convinced that this is a good idea. I'd like to invite interested users to create a PR against staging that flips the defaults to enable VPL. I'd then need somebody with a legacy GPU to confirm that the result still works for them and then we can merge.

As part of https://github.com/NixOS/nixpkgs/issues/356535, I tested VPL on i3-10100 (Gen11 graphics). It works with caveats, see https://github.com/NixOS/nixpkgs/issues/356535#issuecomment-2509811952 for more info.


Get the links of subtitles instead of downloading them

Hello,
I would like to get the links of the videos and of the subtitles without downloading them.
The purpose is to call youtube-dl from a server and to pass the links to a remote client. The server must not download the videos or the subtitles upon every request. (But the server could call youtube-dl multiple times for each request if the video and the subtitles cannot be obtained together. As there will not be many requests, this will not generate heavy traffic.)
The "-g" option does what I want with the videos, but this gives no link for the subtitles, even when adding "--write-auto-sub".
youtube-dl --write-auto-sub -g https://www.youtube.com/watch?v=...
-> Returns a link for the video, and a link for the audio, but no link for the subtitles.
If I remove the "-g" option (and I add "--skip-download"), the video is not downloaded but the subtitles are.
youtube-dl --write-auto-sub --skip-download https://www.youtube.com/watch?v=...
-> Downloads the subtitles in the working directory.
Am I missing an option to get only the link of the subtitles or is this option not implemented yet?
Sincerely,
E__Man.

--dump-json and parse.

--dump-json and parse.


Document Monitors

⚠ Please verify that this feature request has NOT been suggested before.

[X] I checked and didn't find similar feature request

🏷 Feature Request Type
Other
🔖 Feature description
Document each monitor and how it functions as well as it's configuration settings.
✔ Solution
Crowd source the documentation process.
❓ Alternatives
Do nothing.
📝 Additional Context
The documentation could be improved overall.

Since it is related to the wiki, I transferred to here.

I'd see it as best practice to document all the monitors and provide information on their operation and any caveats. It could save someone from searching for issues, putting in an issue and responding to problems with the monitor's documentation.
Just food for thought; I don't care anymore. I just found the uptimekuma documentation thin compared to other projects.


addon gateways appear DOA

Describe the bug
certificate error when accessing addon IPs.

Expected behavior
access to the https enabled endpoint
Steps to reproduce the bug
#!/bin/sh

helm install istio/install/kubernetes/helm/istio-init --name istio-init --namespace istio-system
# May neeed to increase this on slower cloud providers.
sleep 10
helm upgrade --install istio istio/install/kubernetes/helm/istio --namespace istio-system --timeout=600 --set global.tag=sdake --set global.hub=docker.io/sdake --set tracing.enabled=true --set grafana.enabled=true --set prometheus.enabled=true --set tracing.gateway.enabled=true --set grafana.gateway.enabled=true --set tracing.gateway.enabled=true --set prometheus.gateway.enabled=true

Version
istio 1.1.0 release
Installation
see reeproducer
Environment
kubeadm deployed cluster, kubernetes 1.14.4, metallb 0.7.3

I've recently encountered this as well. We should either move this back to being HTTP or fix the certs.

@wattli @myidpt @incfly

@JimmyCYJ

Do we know when/how this started breaking? I'm curious what changed to cause this to start failing.

We discussed this today.  Notes:
This is a P0 doc issue for @philrud to document how to use letsencrypt certs for the addon gateways.   Phil already has documentation for using the certs, but any doc that describes the addon gateways must describe/reference how to use the letsencrypt certs
There is also a P0 task for @douglas-reid to revert the new gateways.yaml from the addon directories

Thanks for the update, @duderino

@jmazzitelli the history is this:

addons were HTTP only and could be exposed only via port-forward
we added gateways to expose the HTTP endpoint in the ingressgateway
the HTTP endpoint was determined as insecure for prod, so HTTPS endpoints were added
The implementation of HTTPS endpoints didn't properly expose certs.
The PR at the end of all this activity indicated work left undone relating to certs.  Unfortunately that work was missed until the last few days, and the consensus was that the risk of implementing correct certs was too great to achieve in a few days of activity.

@duderino has explained well the corrective action we will take in this case.  This is a P0 documentation bug at this point and IMO must be documented as this likely blocks many production users of the addons.

Update:

[x] Merge PR to remove old gateways in 1.1
[ ] Merge Docs PR to cover setting up gateways

Doug's PR is merged, Istio 1.1 is out and updated docs are live. Closing.


Multiple merge steps results in incorrect result

This seems to be related to a closed issue: https://github.com/dask/dask/issues/3911
I'm getting different result from pandas and dask on the same merge pipeline. Set up a small example:
import dask.dataframe as dd
import pandas as pd

def do_merge_work(base, mapto):
    mapto_series = mapto.set_index('i')['a']
    base_ind_by_a = base.set_index("a")
    base_b = base_ind_by_a['b']
    base_c = base_ind_by_a['c']
    mapped_b = mapto_series.to_frame().merge(base_b.to_frame(), left_on='a', right_index=True, how='left')['b']
    mapped_c = mapto_series.to_frame().merge(base_c.to_frame(), left_on='a', right_index=True, how='left')['c']
    final_output = mapped_b.to_frame().merge(mapped_c.to_frame(), left_index=True, right_index=True, how='outer')
    return final_output

base = pd.DataFrame({'a': [1,2,3], 'b': ['a','b','c'], 'c': [123,44,12]})
mapto = pd.DataFrame({'i': range(10), 'a': [0,1,2,1,2,0,1,2,3,4]})
print("Pandas result: ")
print(do_merge_work(base, mapto))
print()

base = dd.from_pandas(base, npartitions=1)
mapto = dd.from_pandas(mapto, npartitions=1)

output = do_merge_work(base, mapto)
print("Dask result: ")
print(output.compute())

Output:
Pandas result:
     b      c
i
0  NaN    NaN
1    a  123.0
2    b   44.0
3    a  123.0
4    b   44.0
5  NaN    NaN
6    a  123.0
7    b   44.0
8    c   12.0
9  NaN    NaN

Dask result:
   b      c
i
1  a  123.0
2  b   44.0
3  a  123.0

I would have expected the two results to be the same.
By changing to npartitions=2 the join works correctly (though comes out unsorted?)
Dask result:
     b      c
i
0  NaN    NaN
2    b   44.0
3    a  123.0
4    b   44.0
5  NaN    NaN
6    a  123.0
7    b   44.0
8    c   12.0
1    a  123.0
9  NaN    NaN

Small update in looking at this deeper.
I realized that in the example i wasn't explicit about the on parameter, which highlights another difference/potential bug between pandas and dask, but is unrelated to the main problem.
Eg.
def merge_on(base, mapto):
    mapto_series = mapto.set_index('i')['a']
    base_ind_by_a = base.set_index("a")
    base_b = base_ind_by_a['b']
    mapped_b = mapto_series.to_frame().merge(base_b.to_frame(), on='a', right_index=True, how='left')['b']
    return mapped_b
base = pd.DataFrame({'a': [1,2,3,5], 'b': ['a','b','c', 'a'], 'c': [123,44,12,17]})
mapto = pd.DataFrame({'i': range(10), 'a': [0,1,2,1,2,0,1,2,3,4]})
print(merge_on(base, mapto))
print(merge_on(dd.from_pandas(base, npartitions=1), dd.from_pandas(mapto, npartitions=1)).compute())

Updated code for bug:

import dask.dataframe as dd
import pandas as pd

def do_merge_work(base, mapto):
    mapto_series = mapto.set_index('i')['a']
    base_ind_by_a = base.set_index("a")
    base_b = base_ind_by_a['b']
    base_c = base_ind_by_a['c']
    mapped_b = mapto_series.to_frame().merge(base_b.to_frame(), left_on='a', right_index=True, how='left')['b']
    mapped_c = mapto_series.to_frame().merge(base_c.to_frame(), left_on='a', right_index=True, how='left')['c']
    b_frame = mapped_b.to_frame()
    c_frame = mapped_c.to_frame()
    final_output = b_frame.merge(c_frame, left_index=True, right_index=True, how='outer')
    return final_output, b_frame, c_frame

base = pd.DataFrame({'a': [1,2,3], 'b': ['a','b','c'], 'c': [123,44,12]})
mapto = pd.DataFrame({'i': range(10), 'a': [0,1,2,1,2,0,1,2,3,4]})
print("Pandas result: ")
pandas_out, pandas_b, pandas_c = do_merge_work(base, mapto)
print(pandas_out)
print()

base = dd.from_pandas(base, npartitions=1)
mapto = dd.from_pandas(mapto, npartitions=1)

output, b_frame, c_frame = do_merge_work(base, mapto)
print("Dask result: ")
print(output.compute())

The result is now:
Pandas result:
     b      c
i
0  NaN    NaN
1    a  123.0
2    b   44.0
3    a  123.0
4    b   44.0
5  NaN    NaN
6    a  123.0
7    b   44.0
8    c   12.0
9  NaN    NaN

Dask result:
   b      c
i
1  a  123.0
2  b   44.0
3  a  123.0

Still highlighting the difference/problem.

Digging deeper into tests now (how this is happening, that divisions and index get out of sync):
In dask/dataframe/tests/test_multi.py::test_merge I see a bunch of list_eq rather than assert_eq (not sure the purpose of list_eq vs. the more common assert_eq throughout the tests).
Changing these to assert_eq raises errors based on the index being incorrect, which seems to be a sign of this problem (?).
I also tried updating list_eq to check indices, and came across many errors:
    if isinstance(aa, dd.DataFrame):
        a = aa.compute(scheduler='sync')
        a_index = aa.index.compute(scheduler='sync')
    else:
        a = aa
        a_index = aa.index

    if isinstance(bb, dd.DataFrame):
        b = bb.compute(scheduler='sync')
        b_index = bb.index.compute(scheduler='sync')
    else:
        b = bb
        b_index = bb.index

    tm.assert_numpy_array_equal(a_index.values, b_index.values)

I'd also like to do something to validate that the divisions are correct, but I'm not sure the best way to do this. I tried checking that dask_frame.divisions[0] == pandas_frame.index.min() and dask_frame.divisions[-1] == pandas_frame.index.max(), but found that there were None involved with divisions that I don't quite understand.
@mrocklin the last changes in these tests were from you 3 years ago, so I'm a bit worried I'm heading down the wrong path and misunderstanding indices / divisions in dask.
Any suggestion about where to focus to fix this bug?

@jcrist do you have a moment to check this out?

I think I was able to chase down this bug (was reproducible as a test, and then fixable) see: https://github.com/dask/dask/pull/4636
A semi-separate (but clarification question about intention in dask that came up in chasing this):
Is it the case that the result of merge of dataframes that are not indexed do not guarantee any indexing uniqueness?
Eg.
df1 = pd.DataFrame({'x': [1,2,3,4], 'z': list("qcce")})
df2 = pd.DataFrame({'x': [3,4,5,6], 'y': list("haaa")})
df1_dd = dd.from_pandas(df1, npartitions=2)
df2_dd = dd.from_pandas(df2, npartitions=3)
print(df1_dd.merge(df2_dd, left_on='x', right_on='x', how='outer').compute())
print(df1.merge(df2, left_on='x', right_on='x', how='outer'))

Here, pandas re-indexes the resulting frame to have 1->6, while dask has an index in the resulting table 0,0,1,2,3,4.
Or is this another bug / something to be considered? This does not affect my use-case, so I am less concerned, but wanted to ask to be thorough while looking at this part of the code.

In general any time a range index would be applied to a Pandas dataframe Dask dataframe won't be able to follow.  We don't know how many elements are in each partition up front, so it's hard/expensive to coordinate index values across partitions.

(hopefully that answered your question, I have to admit I'm rushing through things a bit at the moment)

I guess I understand that it can't keep up in the interim (would be expensive), but what surprises me is that after a .compute() and gather to a local in memory pandas frame, there are 2 differences from the pandas result:

Index isn't necessarily sorted (even for indexed inputs), and
Index isn't necessarily unique (for non-indexed input dfs)

I think for (1) it's a non issue, since any operation that will happen later has the index values to rely on still, it's more for presentation, and it's always an option to call sort_index() if that is result is required. and (2) is just a bit surprising, but ultimately a non issue, if not explicitly using indexed frames, maybe it's not so bad that the resulting index isn't unique, and can always call reindex. I think I just have a mental "requirement" that indexes (even auto-generated ones) are always unique.
Ultimately, both of these are nearly cosmetic and unrelated to the issue here / PR. Just wanted to validate understanding~ Thanks for your help!

Thanks for finding, diagnosing, and fixing this issue @bluecoconut !


[Wannier90] Add supoprt for Wannier90 library

TODO:

[x] run the code for Si example, confirm that it crashes or hangs, find a root cause of the problem
[ ] provide a mechanism to pass input files to W90 using json input file
[ ] take a decision how wave-functions on the IBZ will be saved
[ ] fix intel-oneapi-mkl package for the case of gfortran+mkl: shoul link witj -lmkl_gf_lp64 instead of -lmkl_intel_lp64
[ ] debug the segfault in __w90_io_MOD_io_print_timings
[ ] find a way to compile w90 with debug information
[ ] find a way to install development branch of W90 package using spack

cscs-ci run default

fix intel-oneapi-mkl package for the case of gfortran+mkl: shoul link witj -lmkl_gf_lp64 instead of -lmkl_intel_lp64

TODO: Check if the issue if fixed by https://github.com/spack/spack/pull/37637