Elevation and scrollUnderElevation depends on scrolling in NavigationDrawer

#91605
https://user-images.githubusercontent.com/102767277/216998500-414e2bbf-d0ad-4c86-88ab-bb9333f6f885.mp4
import 'package:flutter/material.dart';
import 'package:dynamic_color/dynamic_color.dart';
import 'package:google_fonts/google_fonts.dart';

void main() {
  runApp(const MyApp());
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return DynamicColorBuilder(
      builder: (lightDynamic, darkDynamic) {
        return MaterialApp(
          title: 'Test AppBar',
          debugShowCheckedModeBanner: false,
          theme: ThemeData(
            useMaterial3: true,
            brightness: Brightness.light,
            colorScheme: lightDynamic,
          ),
          darkTheme: ThemeData(
            useMaterial3: true,
            brightness: Brightness.dark,
            colorScheme: darkDynamic,
          ),
          home: IterableList(),
        );
      },
    );
  }
}

class IterableList extends StatelessWidget {
  const IterableList({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Small TopAppBar'),
        actions: [
          IconButton(onPressed: () {}, icon: Icon(Icons.favorite)),
          IconButton(onPressed: () {}, icon: Icon(Icons.favorite)),
        ],
        shape: Border.all(color: Colors.transparent),
        toolbarHeight: 64,
      ),
      drawer: MyNavigationDrawer(),
      body: ListView.builder(
        itemCount: 76,
        itemBuilder: (context, index) {
          return Padding(
            padding: EdgeInsets.only(left: 15, bottom: 6),
            child: Text(index.toString(), style: TextStyle(fontSize: 16)),
          );
        },
      ),
      floatingActionButton: FloatingActionButton.large(
        onPressed: () {},
        child: Icon(Icons.add),
      ),
    );
  }
}

class MyNavigationDrawer extends StatefulWidget {
  const MyNavigationDrawer({super.key});

  @override
  State<MyNavigationDrawer> createState() => _MyNavigationDrawerState();
}

class _MyNavigationDrawerState extends State<MyNavigationDrawer> {
  int selectedIndex = 0;

  void onDestinationSelected(int index) {
    setState(() {
      selectedIndex = index;
    });
  }

  @override
  Widget build(BuildContext context) {
    return NavigationDrawer(
      selectedIndex: selectedIndex,
      onDestinationSelected: onDestinationSelected,
      children: [
        /*Padding(
          padding: EdgeInsets.fromLTRB(28, 16, 16, 10),
          child: Text('Mail', style: Theme.of(context).textTheme.titleSmall),
        ),*/
        Padding(
          padding: EdgeInsets.only(left: 28),
          child: Text(
            'Navigation Drawer',
             style: GoogleFonts.manrope(
               fontWeight: FontWeight.w500,
               textStyle: Theme.of(context).textTheme.titleLarge,
               height: 3,
            ),
          ),
        ),
        NavigationDrawerDestination(
          icon: Icon(Icons.token_outlined),
          selectedIcon: Icon(Icons.token),
          label: Text('Inbox'),
        ),
        NavigationDrawerDestination(
          icon: Icon(Icons.mail_outline),
          selectedIcon: Icon(Icons.mail),
          label: Text('OutBox'),
        ),
        NavigationDrawerDestination(
          icon: Icon(Icons.favorite_border_outlined),
          selectedIcon: Icon(Icons.favorite),
          label: Text('Favorites'),
        ),
        NavigationDrawerDestination(
          icon: Icon(Icons.delete_outline),
          selectedIcon: Icon(Icons.delete),
          label: Text('Trash'),
        ),
        Divider(indent: 28, endIndent: 28),
        Padding(
          padding: EdgeInsets.fromLTRB(28, 16, 16, 10),
          child: Text('Labels', style: Theme.of(context).textTheme.titleSmall),
        ),
        NavigationDrawerDestination(
          icon: Icon(Icons.circle_outlined),
          label: Text('Label circle'),
        ),
        NavigationDrawerDestination(
          icon: Icon(Icons.change_history),
          label: Text('Label triagle'),
        ),
        NavigationDrawerDestination(
          icon: Icon(Icons.square_outlined),
          label: Text('Label square'),
        ),
        Divider(indent: 28, endIndent: 28),
        Center(
          child: TextButton(
            onPressed: () {},
            child: Text('Navigation Drawer'),
          ),
        ),
        Center(
          child: OutlinedButton(
            onPressed: () {},
            child: Text('Navigation Drawer'),
          ),
        ),
        Center(
          child: ElevatedButton(
            onPressed: () {},
            child: Text('Navigation Drawer'),
          ),
        ),
        Center(
          child: FilledButton(
            onPressed: () {},
            child: Text('Navigation Drawer'),
          ),
        ),
        Center(
          child: FilledButton.tonal(
            onPressed: () {},
            child: Text('Navigation Drawer'),
          ),
        ),
        Center(
          child: FilledButton.tonalIcon(
            onPressed: () {},
            icon: Icon(Icons.replay_circle_filled_outlined),
            label: Text('Cards screen'),
          ),
        ),
      ],
    );
  }
}

[✓] Flutter (Channel master, 3.8.0-5.0.pre.1, on Microsoft Windows [Version 10.0.22621.1105], locale ru-UA)
    • Flutter version 3.8.0-5.0.pre.1 on channel master at C:\Flutter-SDK\flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision bbca7ff693 (6 hours ago), 2023-02-06 11:02:37 +0200
    • Engine revision 2a104cdfcd
    • Dart version 3.0.0 (build 3.0.0-204.0.dev)
    • DevTools version 2.21.1

[✓] Windows Version (Installed version of Windows is version 10 or higher)

Checking Android licenses is taking an unexpectedly long time...[✓] Android toolchain - develop for Android devices (Android SDK version 32.1.0-rc1)
    • Android SDK at C:\Users\yablo\AppData\Local\Android\sdk
    • Platform android-TiramisuPrivacySandbox, build-tools 32.1.0-rc1
    • Java binary at: C:\Program Files\Eclipse Adoptium\jdk-<IP_ADDRESS>-hotspot\bin\java.exe
    • Java version OpenJDK Runtime Environment Temurin-17.0.5+8 (build 17.0.5+8)
    • All Android licenses accepted.

[✓] Chrome - develop for the web
    • Chrome at C:\Program Files\Google\Chrome\Application\chrome.exe

[✓] Visual Studio - develop for Windows (Visual Studio Community 2022 17.4.4)
    • Visual Studio at C:\Program Files\Microsoft Visual Studio\2022\Community
    • Visual Studio Community 2022 version 17.4.33213.308
    • Windows 10 SDK version 10.0.22000.0

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

[✓] IntelliJ IDEA Community Edition (version 2021.2)
    • IntelliJ at C:\Program Files\JetBrains\IntelliJ IDEA Community Edition 2021.2.1
    • Flutter plugin version 71.0.2
    • Dart plugin version 212.5744

[✓] VS Code (version 1.75.0)
    • VS Code at C:\Users\yablo\AppData\Local\Programs\Microsoft VS Code
    • Flutter extension version 3.58.0

[✓] Connected device (4 available)
    • sdk gphone64 x86 64 (mobile) • emulator-5554 • android-x64    • Android 13 (API 33) (emulator)
    • Windows (desktop)            • windows       • windows-x64    • Microsoft Windows [Version 10.0.22621.1105]
    • Chrome (web)                 • chrome        • web-javascript • Google Chrome 109.0.5414.120
    • Edge (web)                   • edge          • web-javascript • Microsoft Edge 109.0.1518.78

[!] HTTP Host Availability
    ✗ HTTP host "https://cocoapods.org/" is not reachable. Reason: An error occurred while checking the HTTP host: Failed host lookup: 'cocoapods.org'
    ✗ HTTP host "https://maven.google.com/" is not reachable. Reason: An error occurred while checking the HTTP host: Failed host lookup: 'maven.google.com'
    ✗ HTTP host "https://pub.dev/" is not reachable. Reason: An error occurred while checking the HTTP host: Failed host lookup: 'pub.dev'
    ✗ HTTP host "https://cloud.google.com/" is not reachable. Reason: An error occurred while checking the HTTP host: Failed host lookup: 'cloud.google.com'

! Doctor found issues in 2 categories.

Thanks for the report @MaxYablochkin
Can you please elaborate on what exactly is the actual behavior along with expected one ?
Also in order to narrow it down to just framework code, does the same reported behavior also persists without using dynamic_color and google_fonts packages ?

Hi @darshankawar
Preserves the same behavior as without using the dynamic_color and google_fonts packages.

The current AppBar color change behavior on scroll in NavigationDrawer is not the same as expected native behavior.

Current behaviour:
https://user-images.githubusercontent.com/102767277/217282644-52791186-5137-4c34-af47-192074d30895.mp4
Native behaviour:
https://user-images.githubusercontent.com/102767277/217278129-326f2c19-a5ad-4968-a95e-88fe4a029289.mp4

There is also a difference between the current and native behavior when opening a NavigationDrawer.

Current behaviour:
https://user-images.githubusercontent.com/102767277/217287166-8484f3b3-d386-407a-8f52-21b253543522.mp4
Native behaviour:
https://user-images.githubusercontent.com/102767277/217288005-9c75a008-6266-4ad5-9f12-b23426e31aa2.mp4

Thanks for the update. And this behavior is specific to material 3 ? And whether the expected behavior matches with native using material 2 ?

It's hard to say if my given examples of flutter and native behavior are specific to Material3 since I can't find it in the spec.  I think this needs clarification from the developers.

Thanks for the update and your patience @MaxYablochkin.
I am trying to narrow down the code sample you shared by removing the dynamic_color and google fonts package and came up with below, but have been getting  'constraints.biggest.isFinite': is not true. while running it.

 segregated code sample

import 'package:flutter/material.dart';
//import 'package:dynamic_color/dynamic_color.dart';
//import 'package:google_fonts/google_fonts.dart';

void main() {
  runApp(MaterialApp(
    home: MyApp(),
  ));
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return ListView.builder(
      itemBuilder: (lightDynamic, darkDynamic) {
        return MaterialApp(
          title: 'Test AppBar',
          debugShowCheckedModeBanner: false,
          theme: ThemeData(
            useMaterial3: true,
            brightness: Brightness.light,
            colorScheme: Theme.of(context).colorScheme.copyWith(
            background: const Color(0xFF000000),
            onBackground: const Color(0xFF2e2e2e),
            primary: const Color(0xFF6553D9),
            onPrimary: const Color(0xFFeeeeee),
            primaryVariant: const Color(0xFFeeeeee),
            brightness: Brightness.light,
          ),
          ),
          darkTheme: ThemeData(
            useMaterial3: true,
            brightness: Brightness.dark,
              colorScheme: Theme.of(context).colorScheme.copyWith(
            background: const Color(0xFF000000),
            onBackground: const Color(0xFF2e2e2e),
            primary: const Color(0xFF6553D9),
            onPrimary: const Color(0xFFeeeeee),
            primaryVariant: const Color(0xFFeeeeee),
            brightness: Brightness.dark,
          ),
          ),
          home: IterableList(),
        );
      },
    );
  }
}

class IterableList extends StatelessWidget {
  const IterableList({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Small TopAppBar'),
        actions: [
          IconButton(onPressed: () {}, icon: Icon(Icons.favorite)),
          IconButton(onPressed: () {}, icon: Icon(Icons.favorite)),
        ],
        shape: Border.all(color: Colors.transparent),
        toolbarHeight: 64,
      ),
      drawer: MyNavigationDrawer(),
      body: ListView.builder(
        itemCount: 76,
        itemBuilder: (context, index) {
          return Padding(
            padding: EdgeInsets.only(left: 15, bottom: 6),
            child: Text(index.toString(), style: TextStyle(fontSize: 16)),
          );
        },
      ),
      floatingActionButton: FloatingActionButton.large(
        onPressed: () {},
        child: Icon(Icons.add),
      ),
    );
  }
}

class MyNavigationDrawer extends StatefulWidget {
  const MyNavigationDrawer({super.key});

  @override
  State<MyNavigationDrawer> createState() => _MyNavigationDrawerState();
}

class _MyNavigationDrawerState extends State<MyNavigationDrawer> {
  int selectedIndex = 0;

  void onDestinationSelected(int index) {
    setState(() {
      selectedIndex = index;
    });
  }

  @override
  Widget build(BuildContext context) {
    return NavigationDrawer(
      selectedIndex: selectedIndex,
      onDestinationSelected: onDestinationSelected,
      children: [
        /*Padding(
          padding: EdgeInsets.fromLTRB(28, 16, 16, 10),
          child: Text('Mail', style: Theme.of(context).textTheme.titleSmall),
        ),*/
        Padding(
          padding: EdgeInsets.only(left: 28),
          child: Text(
            'Navigation Drawer',
            style: TextStyle(
              fontWeight: FontWeight.w500,
              //Theme.of(context).textTheme.titleLarge,
              height: 3,
            ),
          ),
        ),
        NavigationDrawerDestination(
          icon: Icon(Icons.token_outlined),
          selectedIcon: Icon(Icons.token),
          label: Text('Inbox'),
        ),
        NavigationDrawerDestination(
          icon: Icon(Icons.mail_outline),
          selectedIcon: Icon(Icons.mail),
          label: Text('OutBox'),
        ),
        NavigationDrawerDestination(
          icon: Icon(Icons.favorite_border_outlined),
          selectedIcon: Icon(Icons.favorite),
          label: Text('Favorites'),
        ),
        NavigationDrawerDestination(
          icon: Icon(Icons.delete_outline),
          selectedIcon: Icon(Icons.delete),
          label: Text('Trash'),
        ),
        Divider(indent: 28, endIndent: 28),
        Padding(
          padding: EdgeInsets.fromLTRB(28, 16, 16, 10),
          child: Text('Labels', style: Theme.of(context).textTheme.titleSmall),
        ),
        NavigationDrawerDestination(
          icon: Icon(Icons.circle_outlined),
          label: Text('Label circle'),
        ),
        NavigationDrawerDestination(
          icon: Icon(Icons.change_history),
          label: Text('Label triagle'),
        ),
        NavigationDrawerDestination(
          icon: Icon(Icons.square_outlined),
          label: Text('Label square'),
        ),
        Divider(indent: 28, endIndent: 28),
        Center(
          child: TextButton(
            onPressed: () {},
            child: Text('Navigation Drawer'),
          ),
        ),
        Center(
          child: OutlinedButton(
            onPressed: () {},
            child: Text('Navigation Drawer'),
          ),
        ),
        Center(
          child: ElevatedButton(
            onPressed: () {},
            child: Text('Navigation Drawer'),
          ),
        ),
        Center(
          child: FilledButton(
            onPressed: () {},
            child: Text('Navigation Drawer'),
          ),
        ),
        Center(
          child: FilledButton.tonal(
            onPressed: () {},
            child: Text('Navigation Drawer'),
          ),
        ),
        Center(
          child: FilledButton.tonalIcon(
            onPressed: () {},
            icon: Icon(Icons.replay_circle_filled_outlined),
            label: Text('Cards screen'),
          ),
        ),
      ],
    );
  }
}

Would be good if you could use this code sample and verify if the behavior persists or not still.

👋@darshankawar
Made a correction to the code due to the error 'constraints.biggest.isFinite': is not true., and checked that the behavior is still preserved, as in the flutter examples I have translated.

Code
import 'package:flutter/material.dart';
//import 'package:dynamic_color/dynamic_color.dart';
//import 'package:google_fonts/google_fonts.dart';

void main() {
  runApp(MaterialApp(
    home: MyApp(),
  ));
}

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Test AppBar',
      debugShowCheckedModeBanner: false,
      theme: ThemeData(
        useMaterial3: true,
        brightness: Brightness.light,
        colorScheme: Theme.of(context).colorScheme.copyWith(
              background: const Color(0xFF000000),
              onBackground: const Color(0xFF2e2e2e),
              primary: const Color(0xFF6553D9),
              onPrimary: const Color(0xFFeeeeee),
              primaryVariant: const Color(0xFFeeeeee),
              brightness: Brightness.light,
            ),
      ),
      darkTheme: ThemeData(
        useMaterial3: true,
        brightness: Brightness.dark,
        colorScheme: Theme.of(context).colorScheme.copyWith(
              background: const Color(0xFF000000),
              onBackground: const Color(0xFF2e2e2e),
              primary: const Color(0xFF6553D9),
              onPrimary: const Color(0xFFeeeeee),
              primaryVariant: const Color(0xFFeeeeee),
              brightness: Brightness.dark,
            ),
      ),
      home: IterableList(),
    );
  }
}

class IterableList extends StatelessWidget {
  const IterableList({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: Text('Small TopAppBar'),
        actions: [
          IconButton(onPressed: () {}, icon: Icon(Icons.favorite)),
          IconButton(onPressed: () {}, icon: Icon(Icons.favorite)),
        ],
        shape: Border.all(color: Colors.transparent),
        toolbarHeight: 64,
      ),
      drawer: MyNavigationDrawer(),
      body: ListView.builder(
        itemCount: 76,
        itemBuilder: (context, index) {
          return Padding(
            padding: EdgeInsets.only(left: 15, bottom: 6),
            child: Text(index.toString(), style: TextStyle(fontSize: 16)),
          );
        },
      ),
      floatingActionButton: FloatingActionButton.large(
        onPressed: () {},
        child: Icon(Icons.add),
      ),
    );
  }
}

class MyNavigationDrawer extends StatefulWidget {
  const MyNavigationDrawer({super.key});

  @override
  State<MyNavigationDrawer> createState() => _MyNavigationDrawerState();
}

class _MyNavigationDrawerState extends State<MyNavigationDrawer> {
  int selectedIndex = 0;

  void onDestinationSelected(int index) {
    setState(() {
      selectedIndex = index;
    });
  }

  @override
  Widget build(BuildContext context) {
    return NavigationDrawer(
      selectedIndex: selectedIndex,
      onDestinationSelected: onDestinationSelected,
      children: [
        /*Padding(
          padding: EdgeInsets.fromLTRB(28, 16, 16, 10),
          child: Text('Mail', style: Theme.of(context).textTheme.titleSmall),
        ),*/
        Padding(
          padding: EdgeInsets.only(left: 28),
          child: Text(
            'Navigation Drawer',
            style: TextStyle(
              fontWeight: FontWeight.w500,
              //Theme.of(context).textTheme.titleLarge,
              height: 3,
            ),
          ),
        ),
        NavigationDrawerDestination(
          icon: Icon(Icons.token_outlined),
          selectedIcon: Icon(Icons.token),
          label: Text('Inbox'),
        ),
        NavigationDrawerDestination(
          icon: Icon(Icons.mail_outline),
          selectedIcon: Icon(Icons.mail),
          label: Text('OutBox'),
        ),
        NavigationDrawerDestination(
          icon: Icon(Icons.favorite_border_outlined),
          selectedIcon: Icon(Icons.favorite),
          label: Text('Favorites'),
        ),
        NavigationDrawerDestination(
          icon: Icon(Icons.delete_outline),
          selectedIcon: Icon(Icons.delete),
          label: Text('Trash'),
        ),
        Divider(indent: 28, endIndent: 28),
        Padding(
          padding: EdgeInsets.fromLTRB(28, 16, 16, 10),
          child: Text('Labels', style: Theme.of(context).textTheme.titleSmall),
        ),
        NavigationDrawerDestination(
          icon: Icon(Icons.circle_outlined),
          label: Text('Label circle'),
        ),
        NavigationDrawerDestination(
          icon: Icon(Icons.change_history),
          label: Text('Label triagle'),
        ),
        NavigationDrawerDestination(
          icon: Icon(Icons.square_outlined),
          label: Text('Label square'),
        ),
        Divider(indent: 28, endIndent: 28),
        Center(
          child: TextButton(
            onPressed: () {},
            child: Text('Navigation Drawer'),
          ),
        ),
        Center(
          child: OutlinedButton(
            onPressed: () {},
            child: Text('Navigation Drawer'),
          ),
        ),
        Center(
          child: ElevatedButton(
            onPressed: () {},
            child: Text('Navigation Drawer'),
          ),
        ),
        Center(
          child: FilledButton(
            onPressed: () {},
            child: Text('Navigation Drawer'),
          ),
        ),
        Center(
          child: FilledButton.tonal(
            onPressed: () {},
            child: Text('Navigation Drawer'),
          ),
        ),
        Center(
          child: FilledButton.tonalIcon(
            onPressed: () {},
            icon: Icon(Icons.replay_circle_filled_outlined),
            label: Text('Cards screen'),
          ),
        ),
      ],
    );
  }
}

Thanks for the update. Using the updated code sample and running on latest versions (stable and master), I observed that the behavior is not specific to material 3. With material 2 and running the code on desktop for example, shows different appbar color upon scrolling navigationDrawer, as below:
https://user-images.githubusercontent.com/67046386/217815372-96ff1617-234e-44c2-a62c-4e6db73d9956.mov
Although, on mobile, the appbar color doesn't seem to change upon scrolling navigation drawer:
https://user-images.githubusercontent.com/67046386/217815493-e83c1be8-bc0e-4374-ba7b-960f716f6af4.mov

3. There is also a difference between the current and native behavior when opening a NavigationDrawer.

For this, I couldn't visibly tell the difference.

 stable, master flutter doctor -v
[!] Flutter (Channel stable, 3.7.0, on macOS 12.2.1 21D62 darwin-x64, locale
    en-GB)
    • Flutter version 3.7.0 on channel stable at
      /Users/dhs/documents/fluttersdk/flutter
    ! Warning: `flutter` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/flutter, which is not inside
      your current Flutter SDK checkout at
      /Users/dhs/documents/fluttersdk/flutter. Consider adding
      /Users/dhs/documents/fluttersdk/flutter/bin to the front of your path.
    ! Warning: `dart` on your path resolves to
      /Users/dhs/Documents/Fluttersdk/flutter/bin/dart, which is not inside your
      current Flutter SDK checkout at /Users/dhs/documents/fluttersdk/flutter.
      Consider adding /Users/dhs/documents/fluttersdk/flutter/bin to the front
      of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision b06b8b2710 (28 hours ago), 2023-01-23 16:55:55 -0800
    • Engine revision b24591ed32
    • Dart version 2.19.0
    • DevTools version 2.20.1
    • If those were intentional, you can disregard the above warnings; however
      it is recommended to use "git" directly to perform update checks and
      upgrades.

[!] Xcode - develop for iOS and macOS (Xcode 12.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    ! Flutter recommends a minimum Xcode version of 13.
      Download the latest version or update via the Mac App Store.
    • CocoaPods version 1.11.2

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

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

[✓] Connected device (5 available)
    • SM G975F (mobile)       • RZ8M802WY0X • android-arm64   • Android 11 (API 30)
    • Darshan's iphone (mobile)  • 21150b119064aecc249dfcfe05e259197461ce23 •
      ios            • iOS 14.4.1 18D61
    • iPhone 12 Pro Max (mobile) • A5473606-0213-4FD8-BA16-553433949729     •
      ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-3 (simulator)
    • macOS (desktop)            • macos                                    •
      darwin-x64     • Mac OS X 10.15.4 19E2269 darwin-x64
    • Chrome (web)               • chrome                                   •
      web-javascript • Google Chrome 98.0.4758.80

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

! Doctor found issues in 1 category.

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

[!] Xcode - develop for iOS and macOS (Xcode 12.3)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    ! Flutter recommends a minimum Xcode version of 13.
      Download the latest version or update via the Mac App Store.
    • CocoaPods version 1.11.2

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

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

[✓] Connected device (5 available)
    • SM G975F (mobile)       • RZ8M802WY0X • android-arm64   • Android 11 (API 30)
    • Darshan's iphone (mobile)  • 21150b119064aecc249dfcfe05e259197461ce23 •
      ios            • iOS 14.4.1 18D61
    • iPhone 12 Pro Max (mobile) • A5473606-0213-4FD8-BA16-553433949729     •
      ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-3 (simulator)
    • macOS (desktop)            • macos                                    •
      darwin-x64     • Mac OS X 10.15.4 19E2269 darwin-x64
    • Chrome (web)               • chrome                                   •
      web-javascript • Google Chrome 98.0.4758.80

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

! Doctor found issues in 1 category.

I faced this issue in my app as well. The easiest way to fix it is by doing the following:
First, give the widget you actually want to listen to a UniqueKey(). Then change the notificationPredicate property of your AppBar to something like this:
notificationPredicate: (notification) =>
    notification.context
        ?.findAncestorWidgetOfExactType<YourWidget>()
        ?.key == yourKey,

This way the AppBar only listens to scroll notifications that get created by the widget of type YourWidget that has the key yourKey.

This is obviously not a fix for the framework itself, but it does solve the problem, at least in my experience. Hope this is understandable and helpful!

Here is a simpler code sample

code sample
import 'package:flutter/material.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({super.key});

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      debugShowCheckedModeBanner: false,
      theme: ThemeData(useMaterial3: true),
      home: const Example(),
    );
  }
}

class Example extends StatelessWidget {
  const Example({super.key});

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      drawer: NavigationDrawer(
        children: <Widget>[
          SizedBox(
            height: 2000,
            child: Align(
              alignment: Alignment.topCenter,
              child: Text(
                'Scroll down here',
                style: Theme.of(context).textTheme.displayLarge,
                textAlign: TextAlign.center,
              ),
            ),
          )
        ],
      ),
      appBar: AppBar(
        title: const Text('AppBar'),
      ),
      body: ListView(
        children: <Widget>[
          SizedBox(
            height: 2000,
            child: Align(
              alignment: Alignment.topCenter,
              child: Text(
                'Scroll down here',
                style: Theme.of(context).textTheme.displayLarge,
                textAlign: TextAlign.center,
              ),
            ),
          )
        ],
      ),
    );
  }
}

cc: @Piinks
What do you think should be done? We must listen to the notification depth 0 but avoid one from drawers.

Oh! I see, the ScrollNotificationObserver is added by the Scaffold, and so it is receiving scroll notifications from both the scroller in the navigation drawer, and the scroller in the body.
Should a ScrollNotifcationObserver be added to the NavigationDrawer? That should close the scope between the two, and by returning true in that handler the notification will stop bubbling up further.

@Piinks Great idea!
I just added return true in NotificationListener and it no longer affects update app bar and  this seems to also pass all the tests locally. Not sure this would've any side affects.
    final bool isDrawerStart = DrawerController.maybeOf(context)?.alignment != DrawerAlignment.end;
    final DrawerThemeData defaults= useMaterial3 ? _DrawerDefaultsM3(context): _DrawerDefaultsM2(context);

    return Semantics(
      scopesRoute: true,
      namesRoute: true,
      explicitChildNodes: true,
      label: label,
      child: NotificationListener<Notification>(
        onNotification: (Notification notification) {
          return true;
        },
        child: ConstrainedBox(
          constraints: BoxConstraints.expand(width: width ?? drawerTheme.width ?? _kWidth),
          child: Material(
            color: backgroun

06:02 +12996 ~98: All tests passed!
However I was wondering if there should be a widget that just drops scroll notification just like we're returning true here uncoditionally, something like https://master-api.flutter.dev/flutter/widgets/ExcludeSemantics-class.html

However I was wondering if there should be a widget that just drops scroll notification just like we're returning true here uncoditionally

I dunno, it may still be relevant to people listening to notifications within the scope of the drawer. Plus, since the construct of returning true is already a long standing behavior, we likely wouldn't want to change it.

@Piinks
We could isBodyDescendant at the start of the scroll, like this:
notification.metrics.pixels == notification.metrics.minScrollExtent
By doing this we can reduce the number of Scaffold.isBodyDescendant calls
With notification.metrics.pixels == notification.metrics.minScrollExtent
https://user-images.githubusercontent.com/48603081/231744703-72c39776-652a-4706-8143-ec44b45e8464.mov
Without notification.metrics.pixels == notification.metrics.minScrollExtent
https://user-images.githubusercontent.com/48603081/231744760-e2d47d6b-5a0e-47c1-93cb-ca31424fb964.mov

You could check the notification type too!
if (notification is ScrollStartNotification)...

It is possible that the scroll position is never at 0, or the min scroll extent.
Then you could listen for ScrollEndNotification to reset it.
We do this in scrollbar and the overscroll indicators

You could check the notification type too!
if (notification is ScrollStartNotification)...

It is possible that the scroll position is never at 0, or the min scroll extent. Then you could listen for ScrollEndNotification to reset it.
We do this in scrollbar and the overscroll indicators

I did try this before but it only cuts the number by half or so. As the _handleScrollNotification  fires ScrollStartNotification several times.
    if (notification is ScrollStartNotification) {
      print(notification);
    }

ScrollStartNotification(depth: 0 (local), FixedScrollMetrics(4.0..[876.0]..1120.0))
ScrollStartNotification(depth: 0 (local), FixedScrollMetrics(45.9..[876.0]..1078.1))
ScrollStartNotification(depth: 0 (local), FixedScrollMetrics(215.5..[876.0]..908.5))
ScrollStartNotification(depth: 0 (local), FixedScrollMetrics(447.8..[876.0]..676.2))
ScrollStartNotification(depth: 0 (local), FixedScrollMetrics(743.5..[876.0]..380.5))
ScrollStartNotification(depth: 0 (local), FixedScrollMetrics(1067.5..[876.0]..56.5))
ScrollStartNotification(depth: 0 (local), FixedScrollMetrics(1124.0..[876.0]..0.0))
ScrollStartNotification(depth: 0 (local), FixedScrollMetrics(1120.0..[876.0]..4.0))
ScrollStartNotification(depth: 0 (local), FixedScrollMetrics(1037.9..[876.0]..86.1))

If I scroll slowly it gets as worse as ScrollUpdateNotification.
ScrollStartNotification(depth: 0 (local), FixedScrollMetrics(807.8..[876.0]..316.2))
ScrollStartNotification(depth: 0 (local), FixedScrollMetrics(538.0..[876.0]..586.0))
ScrollStartNotification(depth: 0 (local), FixedScrollMetrics(242.2..[876.0]..881.8))
ScrollStartNotification(depth: 0 (local), FixedScrollMetrics(0.0..[876.0]..1124.0))
ScrollStartNotification(depth: 0 (local), FixedScrollMetrics(0.5..[876.0]..1123.5))
ScrollStartNotification(depth: 0 (local), FixedScrollMetrics(0.9..[876.0]..1123.1))
ScrollStartNotification(depth: 0 (local), FixedScrollMetrics(5.3..[876.0]..1118.7))
ScrollStartNotification(depth: 0 (local), FixedScrollMetrics(14.2..[876.0]..1109.8))
ScrollStartNotification(depth: 0 (local), FixedScrollMetrics(23.1..[876.0]..1100.9))
ScrollStartNotification(depth: 0 (local), FixedScrollMetrics(32.0..[876.0]..1092.0))
ScrollStartNotification(depth: 0 (local), FixedScrollMetrics(36.3..[876.0]..1087.7))
ScrollStartNotification(depth: 0 (local), FixedScrollMetrics(47.5..[876.0]..1076.5))
ScrollStartNotification(depth: 0 (local), FixedScrollMetrics(56.4..[876.0]..1067.6))
ScrollStartNotification(depth: 0 (local), FixedScrollMetrics(67.5..[876.0]..1056.5))
ScrollStartNotification(depth: 0 (local), FixedScrollMetrics(76.4..[876.0]..1047.6))
ScrollStartNotification(depth: 0 (local), FixedScrollMetrics(80.8..[876.0]..1043.2))
ScrollStartNotification(depth: 0 (local), FixedScrollMetrics(89.7..[876.0]..1034.3))
ScrollStartNotification(depth: 0 (local), FixedScrollMetrics(98.6..[876.0]..1025.4))
ScrollStartNotification(depth: 0 (local), FixedScrollMetrics(102.9..[876.0]..1021.1))
ScrollStartNotification(depth: 0 (local), FixedScrollMetrics(109.5..[876.0]..1014.5))
ScrollStartNotification(depth: 0 (local), FixedScrollMetrics(111.6..[876.0]..1012.4))
ScrollStartNotification(depth: 0 (local), FixedScrollMetrics(113.6..[876.0]..1010.4))
ScrollStartNotification(depth: 0 (local), FixedScrollMetrics(115.6..[876.0]..1008.4))

I see. Hm. I wonder if we should go back to the idea of cutting off notification bubbling from the drawer. Since the drawer presents with the appearance of a new route, I don't know that there will be much expectation that things outside of the drawer receive notification from scrolling inside of the drawer.
For this then, WDYT of making it possible to configure the ScrollNotificationObserver to return true (stop bubbling) and putting it in place as an ancestor of the drawer?

For this then, WDYT of making it possible to configure the ScrollNotificationObserver to return true (stop bubbling) and putting it in place as an ancestor of the drawer?

I like the idea, it could be other use cases too when you have nested ScrollNotificationObserver?
I just tried a bool parameter for ScrollNotificationObserver to prevent notification bubbling, and it works.
But I can't come up with a good name fo this parameter if adding a parameter is the approach.

@TahaTesser and @Piinks I think the issue when having multiple scrolling views is at least a bit related to this issue and it needs a solution too.
It can be simply demonstrated with the official Material 3 demo app, that in desktop and big tablet size, has two list views that scroll "under" the AppBar.
Scroll one under, fine, two fine, scroll one of them away so it is no longer under, while the other ones is still under, and the scroll under tint disappears when it is no longer under, but it should still be tinted since one area is still under it. Move the area still under it a bit and the tint reappears, since it is still under.
This is just with two areas, with more it gets even more wonky, I have one with 5 so then it is really strange.
https://user-images.githubusercontent.com/39990307/235346280-023a606f-df67-4c47-ac16-708c2801e9b7.mov
For the scroll under tint to work as intended, as a visual cue to create the design intended separation between AppBar and background when something is scrolled under it, there needs to be a way for all regions that may scroll under the AppBar, to inform when they are under it, and AppBar should remain tinted as long as even just one of them is.

I think the issue when having multiple scrolling views is at least a bit related to this issue and it needs a solution too.

@rydmike please file a separate issue for that. It is not the same as this issue.


MethodNotAllowed response for all channels when deploying on azure with bot channels registration

Bot Info

SDK Platform: .NET
SDK Version: 3.15.3
Active Channels: Web Chat, Telegram
Deployment Environment: Azure App Service, local development with Emulator

Issue Description
I'm able to connect and talk to my bot normally on local emulator. However, after deploying the bot to Azure and using Bot Channel Registrations to connect the app service to channels, any channel I use is unable to communicate with the bot. Any message sent returns a "Sorry, my bot code is having an issue".
Using Application Insights I am able to see that there is a HTTP 405 when the sdk makes calls to the bot framework service. Examples of these calls can be seen from the screenshot of the live stream from application insights.

I've also got a stacktrace here which may be helpful:
Microsoft.Bot.Connector.ErrorResponseException: Operation returned an invalid status code 'MethodNotAllowed'
   at Microsoft.Bot.Connector.BotState.<GetConversationDataWithHttpMessagesAsync>d__8.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Bot.Connector.BotStateExtensions.<GetConversationDataAsync>d__7.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Bot.Builder.Dialogs.Internals.ConnectorStore.<Microsoft-Bot-Builder-Dialogs-Internals-IBotDataStore<Microsoft-Bot-Connector-BotData>-LoadAsync>d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Bot.Builder.Dialogs.Internals.CachingBotDataStore.<LoadFromInnerAndCache>d__8.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Bot.Builder.Dialogs.Internals.CachingBotDataStore.<Microsoft-Bot-Builder-Dialogs-Internals-IBotDataStore<Microsoft-Bot-Connector-BotData>-LoadAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Bot.Builder.Dialogs.Internals.BotDataBase`1.<LoadData>d__16.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Bot.Builder.Dialogs.Internals.BotDataBase`1.<LoadAsync>d__8.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Bot.Builder.Dialogs.Internals.DialogTaskManagerBotDataLoader.<LoadAsync>d__11.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Bot.Builder.Dialogs.Internals.PersistentDialogTask.<Microsoft-Bot-Builder-Dialogs-Internals-IPostToBot-PostAsync>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Bot.Builder.Dialogs.Internals.ExceptionTranslationDialogTask.<Microsoft-Bot-Builder-Dialogs-Internals-IPostToBot-PostAsync>d__2.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Bot.Builder.Dialogs.Internals.SerializeByConversation.<Microsoft-Bot-Builder-Dialogs-Internals-IPostToBot-PostAsync>d__4.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Bot.Builder.Dialogs.Internals.PostUnhandledExceptionToUser.<Microsoft-Bot-Builder-Dialogs-Internals-IPostToBot-PostAsync>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at Microsoft.Bot.Builder.Dialogs.Internals.PostUnhandledExceptionToUser.<Microsoft-Bot-Builder-Dialogs-Internals-IPostToBot-PostAsync>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Bot.Builder.Dialogs.Internals.LogPostToBot.<Microsoft-Bot-Builder-Dialogs-Internals-IPostToBot-PostAsync>d__3.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Bot.Builder.Dialogs.Conversation.<SendAsync>d__11.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at Microsoft.Bot.Builder.Dialogs.Conversation.<SendAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at empty_bot_template.MessagesController.<Post>d__0.MoveNext() in X:\Nyx Intelligence LLP\Code\empty-bot-template\empty-bot-template\Controllers\MessagesController.cs:line 22
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Threading.Tasks.TaskHelpersExtensions.<CastToObject>d__1`1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Controllers.ApiControllerActionInvoker.<InvokeActionAsyncCore>d__1.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Web.Http.Filters.ActionFilterAttribute.<CallOnActionExecutedAsync>d__6.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Filters.ActionFilterAttribute.<ExecuteActionFilterAsyncCore>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Controllers.ActionFilterResult.<ExecuteAsync>d__5.MoveNext()
--- End of stack trace from previous location where exception was thrown ---
   at System.Runtime.CompilerServices.TaskAwaiter.ThrowForNonSuccess(Task task)
   at System.Runtime.CompilerServices.TaskAwaiter.HandleNonSuccessAndDebuggerNotification(Task task)
   at System.Web.Http.Dispatcher.HttpControllerDispatcher.<SendAsync>d__15.MoveNext()

It seems the 405 cascades and causes a 500 resulting in the error message, but I can't pinpoint why I'm getting a 405. I have checked to ensure that my bot channels registration is indeed pointing to the /api/messages endpoint.

This also seems to only affect new bot channel registrations. My existing bots don't have an issue.
Code Example
I'm running an empty template that simply has a root dialog that returns the message sent and the length of the message. I can upload that if needed, but its basically the boilerplate bot template you can add into VS.
Reproduction Steps

Create your bot
Deploy it on an app service
Do the bot channels registration and add the app id/pw to your app service
Try to talk to it through webchat/telegram/etc

Expected Behavior
Not to get a 500 or 405.
If you guys need any more info I'm happy to give it to you guys.

Hi @corinagum, just bumping this as my account got flagged accidentally so I'm not sure if this post disappeared for a bit or not.

Ok so I think I figured it out, its the bot state service api being deprecated, I didn't catch it because all my previous bots worked till then. I got the answer from issue #4925 and solved it by adding an in-memory data storage from here: https://docs.microsoft.com/en-us/azure/bot-service/dotnet/bot-builder-dotnet-state?view=azure-bot-service-3.0

Great. Closing issue as resolved, glad you figured it out.


update default announcement

@ardalis Hey sorry I forgot to update this one.

@ardalis I put the wrong announcement this is the one that should be placed.

Small problem - Netlify does server side rendering and can't deal with localstorage there. Can you ignore the check there or catch the exception?

Thoughts?


Improved reassignment of mother/bud?

When doing cell cycle annotations for mother/bud pairs, sometimes I run into a bud that is assigned to the wrong mother due to proximity to another cell. When I try to manually reassign, it's often a messy process of going into the "edit annotations" table and trying to get the right ratio of S/G2/M to G1 to mother to bud cells. It would be nice if the appropriate changes to the table could be automated some way, and then that would be propagated to subsequent frames (whereas currently I have to do every frame manually until division).
Of course if there's already a tool to make this easier, please just point me in the right direction! None of the toolbar stuff seems to help with this right now.

Hi Jordan, technically, automating mother-bud pairing correction it's the super main feature of Cell-ACDC and probably the first thing we ever implemented 😁 so I feel there is something else going on.
We annotated many videos and we never had to manually edit the table. Did you try to just reassign the bud to another mother? It should automatically correct past and future frames, and if it can't it should tell you why.
To assign a bud to another mother, activate the relative button (which actually has the same icon as Cell-ACDC itself, because this is the main feature) then right click on the bud and then right click on the correct mother. Let me know if it works, thanks!

Hi Francesco,
When I try doing that, I usually get a popup saying I can't assign that cell as a mother mother because it's in G1, so then I go to the annotations table to change its phase to S, which leads to another popup saying there's a mismatch between the number of mothers and buds. So, I end up having to coordinate several changes through the table at once for it to work. I already got through it manually so I can't reproduce it right now, but I'll let you know if it comes up again.
For what it's worth, the tracking works really well normally! I think this was an instance of a bud appearing in the midst of a cluster of potential mothers, and the automated tracking kept assigning it to the wrong adjacent cell.

Oh ok, actually sorry, but I saw now that you originally wrote that none of the toolbar functions seem to help.
We tried to solve many edge cases with mother-bud pairing but of course there are other cases that we never encountered.
So if you find one of these cases next time, please do not save the correction and send me the data if you can, I'm really happy to try myself and find the reason why.
We consider cell cycle annotations as our core feature and in theory you should never need to manually edit the annotations. The more edge cases we cover the better it gets.

Anyway, let me know when it happens again, thanks!

That makes sense! I'll let you know if I run into another example like the aforementioned.
More generally, I can confirm now that the "edit annotations" table doesn't automatically propagate changes to future frames. I've also noticed an issue where it will sometimes have a mother-bud pair where both cells are listed as buds, and there's no error. See below:

Hi Jordan, let me answer point by point:

You are right, that should be caught and the user should be warned, thanks for finding that! I opened a dedicated issue #31
Yes, edit annotations cannot propagate to future and past frames. It is a very last resort and it should not be used often, otherwise, it means we need to improve on those situations
Nice idea, I will add an info button with explanations. Also, separating Relative ID and Relationship column might help to avoid this confusion? I opened a dedicated issue #32

Here are few tips to speed up the annotation process:

Try to correct a wrong mother-bud pairing as soon as possible. The more you wait the less likely is the automatic propagation to work. This is because the cell that you want to be the correct mother needs to be in G1 for the entire known duration of the bud, i.e., it cannot already have a bud assigned to it in the future. This is because automatic propagation will correct all the future G1 frames of the correct mother and it will change them to S/G2/M, but this would cause no G1 frames between this bud and the bud it already has in the future. By known duration I mean the frames that you already visited at least once in cell cycle annotation mode (which is also the last frame that can be visited with the slider).
When unsure use the second viewer window. This is where the second viewer window that you can open with the Eye-plus icon comes in handy. Instead of visiting the future frames with the annotation mode, you can check them with viewer window first, just to be prepared of what will happen and to correct as much as possible in the current frame. The viewer window is linked to main GUI, i.e. you can view the frames you want in the viewer, but as soon as you change frame in the main window that the viewer goes back to the current frame and it changes together with the main GUI.

An additional note, I just tested your issue of the two buds (point 2.) but it seems like I cannot replicate it. Please see issue #31 where I tried to replicate, but got warnings.
I guess that somehow you had that situation from editing annotations in previous frames?

These are good tips, thanks! And yeah, I probably caused some of the problems myself by going into the table manually. I'll be sure to try all other things before resorting to that going forward! Will let you know if I run into another instance of the uncaught budless mother that's not the result of manual table fidgeting.

See issue #32 for a new feature that can help with this issue

This is definitely clearer, thanks!

Yes, I agree, we need more documentation, tutorials and examples. We are working on putting that on a web page instead of a PDF manual, I hope we get funded to speed up that process, but it will definitely happen anyway!


iOS 16.2.0 test hangs on "Trying to set permissions..."

What happened?
Launching into the application with {notifications: 'NO'} seems to cause the app/test to hang and not be recoverable, causing it to fail;
...
  beforeEach(async () => {
    await device.launchApp({
      newInstance: true,
      // permissions: { notifications: 'NO' }, <-- when this line is present in the launch, the test fails to get started
    })
  })
...

thrown: "Exceeded timeout of 120000 ms for a hook.
    Use jest.setTimeout(newTimeout) to increase the timeout value, if this is a long-running test."

      18 |   // })
      19 |
    > 20 |   beforeEach(async () => {
         |   ^
      21 |     await device.launchApp({
      22 |       newInstance: true,
      23 |       permissions: { notifications: 'NO' },

      at e2e/tests/kbaFullSignup.test.ts:20:3
      at Object.<anonymous> (e2e/tests/kbaFullSignup.test.ts:13:1)

11:09:37.902 detox[95297] i user A worker process has failed to exit gracefully and has been force exited. This is likely caused by tests leaking due to improper teardown. Try running with --detectOpenHandles to find leaks. Active timers can also cause this, ensure that .unref() was called on them.

This issue only happens with latest simulator version; 16.2.0
What was the expected behaviour?
The permissions should be set successfully and the test continue
Was it tested on latest Detox?

[X] I have tested this issue on the latest Detox release and it still reproduces.

Did your test throw out a timeout?

[X] I have followed the instructions under Identifying which synchronization mechanism causes us to wait too much.

Help us reproduce this issue!
Run a test, setting a permission on launch in an iOS simulator using iOS version 16.2.0
In what environment did this happen?
Detox version: 20.1.0
React Native version: 0.70.5
Node version: 16.17.0
Device model: iPhone 11
iOS version: 16.2.0
macOS version:
Xcode version:
Test-runner (select one): jest
Detox logs
Detox logs
paste logs here!

Device logs
Device logs
paste logs here!

More data, please!
No response

This issue only happens with latest simulator version; 16.2.0

Thank you @alexborton for bringing this to our attention. I understand that you've attempted to reproduce this issue on previous versions of iOS.
Can you please provide more details, specifically device logs, here to assist with further investigation?


Changes comment-text anchor text to inline #715

Fixes #715 where comments link text should line break as regular text.

Thanks again @securingsincity !


ask a question. If the commit timeout, how to determine whether the transaction is successful, how to deal with this transaction?

Why you need it?
Is your feature request related to a problem? Please describe in details
ask a question. If the commit timeout, how to determine whether the transaction is successful, how to deal with this transaction?
How it could be?
A clear and concise description of what you want to happen. You can explain more about input of the feature, and output of it.
Other related information
Add any other context or screenshots about the feature request here.

OK,i see.THX


Web: alternative opt-out mechanism

We currently let web users opt out by adding #nobridge to their profile/homepage or by emailing us. I don't have numbers on how many sites do it via #nobridge, but more and more have been emailing us to do it, particularly more traditional (and often bigger) web publishers, 10-20 per day right now and growing. Opting them out manually only takes me maybe a couple minutes each, but still.
I'd like to figure out a self serve way to allow this that doesn't require them to change text on their home page, but still checks that they actually represent/own the site. Traditional domain auth via eg DNS or /.well-known/... are definitely too technical and heavyweight.
The one idea I have is setting up an automated email address that checks DKIM, SPF, etc, and then allows opting out a web site if the sender's address is on the site's domain. Not ideal either, but maybe it'd work?

Alternatively, a simpler, dumber idea here would be to just not require auth. We let anyone bridge a web site; maybe it'd be ok if we didn't check that it's them disabling it?


Mason Hack Club's website

Hi Victor :-) Just wanted to see if we could get https://masonhackclub.com added to our link. Thanks :):)

Closing since this repo doesn’t keep the data for clubs.


proxy::tests:: fail randomly, possibly due to env dependent code. ( In published 0.10.1 )

Maybe 1 in 20 times I get this:
target/debug/deps/reqwest-5859251927a84b66 --test-threads=2 proxy

running 7 tests
test proxy::tests::test_all ... ok
test proxy::tests::test_custom ... ok
test proxy::tests::test_get_sys_proxies_in_cgi ... ok
test proxy::tests::test_get_sys_proxies_parsing ... FAILED
test proxy::tests::test_http ... ok
test proxy::tests::test_https ... ok
test proxy::tests::test_proxy_scheme_parse ... ok

failures:

---- proxy::tests::test_get_sys_proxies_parsing stdout ----
thread 'proxy::tests::test_get_sys_proxies_parsing' panicked at 'assertion failed: `(left == right)`
  left: `true`,
 right: `false`', src/proxy.rs:777:9
note: run with `RUST_BACKTRACE=1` environment variable to display a backtrace

failures:
    proxy::tests::test_get_sys_proxies_parsing

Looking at the code says they concurrently manipulate env, but, as env is process global, it changing in one test while a different test that also changes it is running, the values being the expected ones becomes somewhat down to luck.
I'd be tempted to throw a Mutex in a lazy_static! like I did with https://github.com/sagiegurari/ci_info/pull/9

I'll revisit this when I re-test 0.10.3, just reqwest is so huge and my backlog is large enough I'm still polishing off 0.10.1 when 0.10.3 exists :)

Ah yes, that'd be an issue when running the tests in multiple threads. A simple static mutex should fix it.

We might want to try moving these tests from src/ to their own test in tests/, if possible, because as-is, this means these tests will run while all other tests in src/ run, not in their own binary.
And adding a Mutex has a really annoying side effect: Any test failures ( which are implemented in terms of assert!, which calls panic! ), causes the Mutex itself to become poisoned, and this can cause a cascade of unrelated failures.
At very least, the Mutex must be released before calling assert! in these tests, which means one has to reflow the control so the Mutex exists only for get/set, and then the result must be frozen, then the Mutex must be released, and then assert! can then be called on the results.

Bleck, the poisoning of the mutex is annoying. We can just have a fn env_lock() that ignores any poison...

But the only way to "ignore a poison" is to ignore lock/try_lock returning Err(). but if they return Err(), they don't return Ok(MutexGuard), so you don't actually get "a lock", so it degrades to "no locks are possible".
Though I guess that means the failure mode is the same as what its already doing, which might be fine. ( ci_info was a different case because it was doing dozens of different tests all locking env, all sensitive to env data races, whereas, this one seems to only have 2 or so data-race sensitive paths )


Added new file to fork

She is going to visit MariaParkskolan with her school friends.

 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.malar seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.

incorrect mapping

wrong mapping


Basic property value support

Add support for basic property values to the model.
This was originally developed as part of #238.

I think we need more work on the notebook to showcase the intent and capabilities of Capella's native property values

Feel free :)


Fix gulp/sass Windows 64bit

Error: Cannot find module 'gulp-sass'
gulp/sass doesnt work with Windows 64bit
need Version 3.1.0
https://github.com/jakearchibald/wittr/issues/20
Before submitting a pull request, make sure it's targeting the right branch:

For fixes to Ink 1.0, use master.
For fixes to Foundation for Emails 2, use v2.0.

Happy coding! :)

This fixed it for me to make it work out of the box (git clone -> npm install). No need to install bower, gulp, windows-build-tools globally like other solutions suggested.

windows-build-tools

This is needed for packages which are not available as prebundled binaries. Then you need node-gyp and also python2 which you can install with the windows-build-tools package.

This is superseded by https://github.com/foundation/foundation-emails/pull/971.


Consider starting a MIGRATION_GUIDE.md for breaking changes when Terraform provider is upgraded

Hello!

Vote on this issue by adding a 👍 reaction
If you want to implement this feature, comment to let us know (we'll work with you on design, scheduling, etc.)

Issue details

Affected area/feature
https://github.com/pulumi/pulumi-auth0/releases does not express the breaking changes caused by upgrading the Terraform provider without having to dive into a PR which touches a very large number of files and figure it out the hard way.
Arguably, Github releases are fine for other changes where the PR title can adequately sum up what's happened, but for these big ones such as a provider upgrade, calling out the breaking changes would be very helpful.
Things I spotted in my migration from v2.8.4 -> v3.0.0:

auth0.Email renamed to auth0.EmailProvider
Pulumi actions runtime: "node18-actions" is no longer legal -> change to node18
ClientSecret property removed from Client -> now requires use of ClientCredentials resource

Sorry peeps, I just noticed that on the Github release page there is in fact a link to the upstream breaking changes guide in the provider: https://github.com/auth0/terraform-provider-auth0/blob/main/MIGRATION_GUIDE.md#upgrading-from-v0x--v10
Closing this one.


Reorganize query documentation

Closes #25
@gregtatum how does this look? Made the the different types of queries a top-level section and added searchable text for each query name.

Going with it for now 😄

Oh wow, that's great. Thanks!


Members filter for bachelor/master student

Hello! I am not sure if it easy to implement, but I think it should be!
This issue arises from the fact that I am looking to find the amount of master and bachelor students that are a member of Inter-Actief!
I think this could be best implemented by a search filter under More Search options where one can use a cehckbox with the text Is master student or Is bachelor student! I also think that this could be a nice addition to the search filters.

You already can, just select by study. (M-CS, M-BIT)
Furthermore, we are not up-to-date on bachelor/master students, as people don't update their studies a lot.
Might be something to look into, that if someone logs in and we get their study from the UT auth, that we check if the study matches and can then ask 'Are you still studying X?'

You already can, just select by study. (M-CS, M-BIT)
Furthermore, we are not up-to-date on bachelor/master students, as people don't update their studies a lot.
Might be something to look into, that if someone logs in and we get their study from the UT auth, that we check if the study matches and can then ask 'Are you still studying X?'

This became a bit harder since we now have an intermediary login system, but luckily Keycloak caches this data for us in an attribute so we could request it from the keycloak service (or have it sent along with the login data), and then show a notification banner when someone logs in or views their profile for example. Nice idea


Migrate aws_dx_connection to new structure

@sinabakh can you please review this?

@aliscott Looks fine. Thanks 🚀


Can I change texture with onTap?

It would be so much better if I could change the texture bc Flutter Cube is the best 3d flutter package compatible with me.

  loadImageFromAsset('assets/texture.png').then((value) {
    object.mesh.texture = value;
    scene.updateTexture();
  });

Hi sorry to bother you again...
Let's say I have an obj with different textures like a tree obj which will have leaves texture and trunk texture.So I don't know how to change texture on specific location.
I'm wondering "What if we could change the mtl file of the obj?"
Thanks you for your effort.

Use Blend to separate tree to two objects, name “leaves” and “trunk”, then export to "tree.obj". Code:
object.find(RegExp('leaves')).mesh.texture = value1;
object.find(RegExp('trunk')).mesh.texture = value2;
scene.updateTexture();


Fix compatibility with latest filament versions

Fixes #11
Fixes a compatibility issue due to a change of the method visibility in Filament.

thanks!


The Combo box and the Python Environment list is not update when change the default environment.

Environment

Steps to Reproduce
1.Install Anaconda (downloads at https://www.anaconda.com/download/) if no Anaconda
2.Create a Python Application project
3.Right-click on Python Environments node in SE and select "View All Python Environments"
4.The python distributions installed should all displayed in the list

5.Select 'Python 3.1(64-bit)'
6.Overview -> 'Make this the default environment for new projects'
Expected behavior
The Combo box and the Python Environment list should all change to 'Python 3.1(64-bit)'
Actual behavior
The Python Environment list doesn't change to 'Python 3.1(64-bit)'
Additional context and screenshots

This is by design. Note that this option sets the default environment for NEW projects, if you save the options and create a new python project, it will use the default environment.


Support to Python 3.9 ?

Hello,
thanks a lot for your work!
While installing scikeras I noticed that Python 3.9 it is currently not supported. I was wondering if you plan to support it in future.
Thanks in advance!
All the best,
Luca

Hi!
We can only support Python versions supported by our dependencies. That said, I don't see any reason why we can't unpin the version and allow it to fail based on the deps. I'll make a PR for that.

@lviano let me know if this resolves the issue for you, if not we can reopen!


Enhance chisel printable to include f interpolator

Contributor Checklist

[ ] Did you add Scaladoc to every public function/method?
[ ] Did you add at least one test demonstrating the PR?
[ ] Did you delete any extraneous printlns/debugging code?
[ ] Did you specify the type of improvement?
[ ] Did you add appropriate documentation in docs/src?
[ ] Did you state the API impact?
[ ] Did you specify the code generation impact?
[ ] Did you request a desired merge strategy?
[ ] Did you add text to be included in the Release Notes for this change?

Type of Improvement

new feature / API

API Impact

Backend Code Generation Impact

Desired Merge Strategy

Squash: The PR will be squashed and merged

Release Notes

F interpolator for Chisel (cf) analogous to the one available within Scala
Reviewer Checklist (only modified by reviewer)

[ ] Did you add the appropriate labels?
[ ] Did you mark the proper milestone (Bug fix: 3.4.x, [small] API extension: 3.5.x, API modification or big change: 3.6.0)?
[ ] Did you review?
[ ] Did you check whether all relevant Contributor checkboxes have been checked?
[ ] Did you mark as Please Merge?

@jackkoenig  - still working on adding more tests (especially negative tests) - but was hoping to start getting feedback on the main code.

There is definite scope for refactoring the existing PrintableSpec.scala - like the checking part - which has a lot of common things (thanks to @debs-sifive  for pointing that out). As of now I have just reused the same pattern as that of p"" within that file.
To keep things focussed - I propose on doing the actual refactoring in a future PR and for this PR just ensure all interesting cases are covered based on new unit tests using the old template.

@jackkoenig  have incorporated all but one of your suggested changes (with some minor additions to fix some corner cases). Please take a look.

@mwachs5 - please review / approve when you can!
@jackkoenig  - not sure who will do the final merge of this PR - I am assuming it is you since I do not have merge privileges.


Req. #03 - Set up Vitis and/or Vivado workspace and project

Description: Set up workspace for Vitis &/or vivado.
Artifact: Those working on hardware will have a workspace and project set up in on their systems. A screenshot of at least one of those workspaces will be provided on this issue by the time Sprint 2 ends to show to the GTA.
Story Points: 2

Note the image was unexpectedly compressed/shrunk while sending via KU email...
Workspace has been created, with the appropriate board selected using the Arty-Z7 20 files from Digilent.


Slow down and mini freezes on all versions of PoB

Recently Path of building has been super slow. Whatever i do it takes up to 3 seconds to do it (even only hovering and higlighting a menu label) and inputs get sometimes lost if i click during this "mini freezes" that seem to occur costantly. I tried a couple of different versions of PoB and the problem is constant in all of them.

I can second this issue. Notably, closing and reopening will resolve it...this only seems to occur after the program has been open a while (maybe after a lock/sleep?).

For me its stuck like that, closing and reopening it does not change the issue, nor does it change when i shutdown and restart the pc, honestly i have no clue what's going on

Solved the issue by upgrading to the latest nvidia drivers, don't really know how this slipped my mind when i was trying to fix it XP

Ah. I should have suggested it though; out-of-date drivers can cause all kinds of issues with this program.


[public report]: Claim to Review has no UI Feedback or Redirect

User Impacted
0xc6Ac8FC10242771eA79B1Bdbb4d72f775AF9587F
Discord ID (including number)
danner.eth
Workflow Impacted
Brainstorm
Feature Impacted
Create Marketplace
Issue description

Shows transaction complete but does not indicate to me in any other way that I successfully claimed to review or that any rMETRIC balances changed
Blocking
no it is not
Relevant log output
No response

Claim to review formula = 5 rMETRIC per submission. i.e. 5 x 100 = 500 rMETRIC to claim
Claim to submit formula = rMETRIC minimum required to submit on challenges, whatever that value is based on the Marketplace parameter

#455 Closes part of this.
#336 will cover the rest


Falcon::Adapters::Input doesn't have #empty? method

in case of running rack application env['rack.input'] is a Falcon::Adapters::Input with body Protocol::HTTP1::Body::Fixed which has #empty? method.
Since body is not rewindable it's the only way to define if it has content or not.
this issue related to problem in general
https://github.com/rack/rack/issues/1148
this issue related to specific problem when using falcon sinja gems together
https://github.com/mwpastore/sinja/issues/19
not sure if it works correctly with http2 or not

We can try to fix this for Rack 3 since it requires an updated interface for rack.input IIRC.

This should be fixed: https://github.com/socketry/protocol-rack/blob/ec318a60b894553633a43e62d78de07153274cdd/lib/protocol/rack/input.rb#L84-L87
If there are further issues, please feel free to re-open on the protocol-rack repository.


get SNS controller to modern ACK runtime

Hooooooo boy, this was a rough one. :)
We had not updated the ACK runtime or aws-sdk-go in 2 years for the SNS controller, which means that a whole bunch of features in the code generator and runtime were not able to be activated for SNS.
This PR gets the SNS controller regenerated with the latest ACK runtime and aws-sdk-go based on a code-generator checkout (PR here) that contains a bunch of fixes for attribute-based APIs.
Signed-off-by: Jay Pipes<EMAIL_ADDRESS>By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.

/retest

/retest

/approve
/lgtm


Cask request: Dockstation

Cask details
Name: Dockstation
Homepage: https://dockstation.io
Download URL: https://dockstation.io
Description: DockStation is developer-centric application to managing projects based on Docker. Instead of lots of CLI commands you can monitor, configure, and manage services and containers using just a GUI.

https://github.com/caskroom/homebrew-cask/pull/35759


Add interactive loader

Add an interactive loader that matches with the current theme of the webpage.

Hello, I would like to work in this issue, can you suggest me ways to get started?

Hi, I would like to work on this issue, can you suggest ways to get started?

Hello @anishghimire603 @manavgakhar. Glad to know you are willing to work upon this issue
https://www.w3schools.com/howto/howto_css_loader.asp
https://stackoverflow.com/questions/40987309/react-display-loading-screen-while-dom-is-rendering
https://redstapler.co/add-loading-animation-to-website/
Here are some useful links that can help you get started, once you have done a bit of work we can discuss it over the PR also.
If you have some views & suggestions to add a more innovative loader you want to discuss, you can in the comments of the issues.

Hi, this is my first open source comtribution , would you help me get started with it?


Change the documentation

Dear,
you have been a good job. Congratulations!
Change your documentation, for use Custom Errors:
{"jquery-upload-file-error":"File already exists"}
you have set properties:
returnType: "json"
tks

Done. Thanks


Can we extrapolate SDSS colors to high z?

[ ] Plot all colors as a function of sigma and reshift to see if there are any trends we could exploit to extrapolate past redshift ~0.7
[ ] Same question for quasar painting, extrapolating color trends with redshift and mag_i

In short, we concluded that the answer was "no" - so will investigate templates instead.


Not installing on .NET 4.5.2

In the README says it supports .net framework however nugget complains that im not on a .net core project.

Hmm, that is unexpected. This lib is a net standard project:
https://github.com/tonerdo/dotnet-env/blob/master/src/DotNetEnv/DotNetEnv.csproj#L8
And has only one dependency, Sprache, which is also a net standard project:
https://github.com/sprache/Sprache/blob/develop/src/Sprache/Sprache.csproj#L9
So I'm not sure exactly what  is failing. What is the exact error you are getting? I'd like to be able to reproduce this to see what can be done about it.

Oh, perhaps the issue is that net standard 1.3 requires net framework 4.6:
https://docs.microsoft.com/en-us/dotnet/standard/net-standard
I will try changing down to net standard 1.0 since 1.3 is probably no longer needed thanks to sprache

Per MSDN, netstandard 1.3 is the minimum required for reading and writing env vars across platforms:
"Applies to" section: https://docs.microsoft.com/en-us/dotnet/api/system.environment.getenvironmentvariable?view=net-5.0#System_Environment_GetEnvironmentVariable_System_String_
That means you must use NET Core 1.0+ or NET Framework 4.6+ (not NET 4.5 or below -- which was last updated in 2014, when 4.6 was released, and reached EOL in 2016 / with the death of Windows 7, so I recommend updating).
Net standard versions: https://docs.microsoft.com/en-us/dotnet/standard/net-standard
EOL for 4.5: https://docs.microsoft.com/en-us/lifecycle/faq/dotnet-framework
The NET Framework did have this functionality in earlier versions, but those versions do not support the necessary netstandard version so this functionality is not available for those versions.


Is Gen5 available in Germany Central.

Is Gen5 available in Germany Central datacenter. If not, any ETA as to when this will be available.
Could not find much information in Azure regions productwise.

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

ID: 28ca1f7f-5a34-0f23-10ce-3ff24c76db97
Version Independent ID: 5c4a22c4-78fc-911d-9fa0-8dfab1653b6e
Content: Azure SQL Database Managed Instance Overview
Content Source: articles/sql-database/sql-database-managed-instance.md
Service: sql-database
GitHub Login: @bonova
Microsoft Alias: bonova

@Sethu2488 Thanks for the feedback. We are actively investigating and will get back to you soon.

@Sethu2488 see https://docs.microsoft.com/en-us/azure/sql-database/sql-database-managed-instance-resource-limits#supported-regions and https://azure.microsoft.com/en-us/global-infrastructure/services/?products=sql-database&regions=all

thank you for the information.

#please-close

@Sethu2488 We will now close this issue. If there are further questions regarding this matter, please reopen it and we will gladly continue the discussion.


Fix NPE in Reference Finding of Semantically invalid symbols

Purpose

$title

Fixes #38879
Approach

Samples

Remarks

Check List

[x] Read the Contributing Guide
[ ] Updated Change Log
[ ] Checked Tooling Support (#)
[x] Added necessary tests

[x] Unit Tests
[ ] Spec Conformance Tests
[ ] Integration Tests
[ ] Ballerina By Example Tests

[x] Increased Test Coverage
[ ] Added necessary documentation

[ ] API documentation
[ ] Module documentation in Module.md files
[ ] Ballerina By Examples

Seems like the build has failed

The Ubuntu build is successful when executed locally.
But the Github action is failing even though the build is successful.
@NipunaMadhushan any idea about this error?


Store only one NavStateIndex

This saves 8 bytes per track and a bunch of global memory accesses. Ideally, we would only save the NavIndex_t but there is no API to directly retrieve the member fNavInd (GetNavIndex expects a level and both getting and using that requires walking the hierarchy).

This makes sense with NavStateIndex because it can be handled on the stack, while this was not possible using the previous NavStatePath.

If NavStatePath cannot be on the stack, I would guess it involves dynamic memory allocation which doesn't work in Track anyway.

Indeed, we can make NavStateIndex constructible from a NavIndex_t and boundary flag since we manage the boundary flag in the track, then compose the NavStateIndex upon usage via the navigation interfaces, which will reduce the geometry state even more. To add a getter as well.

NavStateIndex is constructible from a NavIndex_t, but (as written in the commit message) there is no efficient way to get the index of an existing state. And we don't need to store the boundary flag, it is only used temporarily until a track is relocated.

The getter is of course trivial to add. The boundary flag will be needed if we have to expose the state to user code for scoring, even if we don't use it now.

See: https://gitlab.cern.ch/VecGeom/VecGeom/-/merge_requests/833


[Feature]: [FRSM-17] Does the software include provenance information that describe the development of the software?

D5.2 p22+p31
Detailed Description

Good provenance metadata clarifies the origins and intent behind the development of the software, and establishes authenticity and trust. As a type of metadata this overlaps with the metadata called for in guiding principles F2 and F4.
Domain-agnostic comments
It is hard to check the relevance / correctness of this information, but it is possible to automatically check for existence.
It may also be necessary to record information about the way that the software has been developed, such as the development environment used. The methodology for building the software is tested in FRSM-13.
CESSDA comments
Git repositories include a commit history as a matter of course. CESSDA uses git repos on GitHub, and uses a branching model where each branch is prefixed with the issue tracker ticket number that it addresses.
Context

R1.2: Software is associated with detailed provenance.
Possible Implementation

domain-agnostic

requirements
Software source code repository / forge

method
Check the development metadata available from the code repository / forge for the software

essential
The software source code repository / forge includes a commit history

important
The software source code repository links commits to issues / tickets

useful
The software project uses other tools to capture detailed machine readable provenance information.

CESSDA

requirements
Software source code repository

method
Check the commit history of the code repository

essential
Code repository contains commit messages

important
Code that addresses an issue is developed in a branch prefixed with the issue number.

useful
Links to Pull Requests are included in issue tracker tickets.

Skeleton evaluator: https://github.com/softwaresaved/fuji/blob/1778e730c80852f691e135a1b288bc2796914c46/fuji_server/evaluators/fair_evaluator_code_provenance.py#L10


Missing stone variant recipes

smooth stone slab variant recipes are pointing to tier 1
non loose cobble slab all point to tier 1 cobble slab
same goes for cobble walls
breaking stratified cobble walls gives tier 1 stones
crafting mortared stone bricks into slab gives tier 1

Fixed for next release


Added React Podcast

Updated React Round Up Podcast by DevChat.tv
What does this PR do?
Added React Round Up Podcast
For resources
Description
Added React Round Up Podcast by Devchat.tv.
Why is this valuable (or not)?
Dedicated for React by React Community members and not specific hosts. React Experts and React Open-source enthusiasts gives talk on even minor trade-offs which is very valuable for one who is interested in learning React in-depth.
How do we know it's really free?
It is totally free. We can listen to it on their respective websites, listen on Spotify and Apple Podcasts app.
For book lists, is it a book? For course lists, is it a course? etc.
Not a Book or Course.
Checklist:

[x] Not a duplicate
[ ] Included author(s) if appropriate
[ ] Lists are in alphabetical order
[ ] Needed indications added (PDF, access notes, under construction)

We don't add "By" anywhere else.

Oh Thanks for letting me know. Updated for Both the Links which I added #3999 and #4141. Updated.

Thanks :)


Call SignTypedDataV4 Failed

I want to call the eth_signTypedData_v4 method to complete the signature.
There is no corresponding case for unity-sdk. I tried to write the following method using Nethereum to call the seaport contract I deployed myself.
But the result failed.
Below is my code.
//generate typeddata
public TypedData<Domain> GetSignOrderEIP()
    {
        var ret =  new TypedData<Domain>
        {
            Domain = new Domain
            {
                Name = ContractConfig.MARKET_CONTRACT_NAME,
                Version = ContractConfig.MARKET_CONTRACT_VERSION,
                ChainId = 80001,
                VerifyingContract = ContractConfig.MARKET_CONTRACT_ADDRESS
            },
            Types = new Dictionary<string, MemberDescription[]>
            {
                ["EIP712Domain"] = new[]
                {
                    new MemberDescription {Name = "name", Type = "string"},
                    new MemberDescription {Name = "version", Type = "string"},
                    new MemberDescription {Name = "chainId", Type = "uint256"},
                    new MemberDescription {Name = "verifyingContract", Type = "address"},
                },
                ["OrderComponents"] = new[]
                {
                    new MemberDescription {Name = "offerer", Type = "address"},
                    new MemberDescription {Name = "zone", Type = "address"},
                    new MemberDescription {Name = "offer", Type = "OfferItem[]"},
                    new MemberDescription {Name = "consideration", Type = "ConsiderationItem[]"},
                    new MemberDescription {Name = "orderType", Type = "uint8"},
                    new MemberDescription {Name = "startTime", Type = "uint256"},
                    new MemberDescription {Name = "endTime", Type = "uint256"},
                    new MemberDescription {Name = "zoneHash", Type = "bytes32"},
                    new MemberDescription {Name = "salt", Type = "uint256"},
                    new MemberDescription {Name = "conduitKey", Type = "bytes32"},
                    new MemberDescription {Name = "counter", Type = "uint256"},
                },
                ["OfferItem"] = new[]
                {
                    new MemberDescription {Name = "itemType", Type = "uint8"},
                    new MemberDescription {Name = "token", Type = "address"},
                    new MemberDescription {Name = "identifierOrCriteria", Type = "uint256"},
                    new MemberDescription {Name = "startAmount", Type = "uint256"},
                    new MemberDescription {Name = "endAmount", Type = "uint256"},
                },
                ["ConsiderationItem"] = new[]
                {
                    new MemberDescription {Name = "itemType", Type = "uint8"},
                    new MemberDescription {Name = "token", Type = "address"},
                    new MemberDescription {Name = "identifierOrCriteria", Type = "uint256"},
                    new MemberDescription {Name = "startAmount", Type = "uint256"},
                    new MemberDescription {Name = "endAmount", Type = "uint256"},
                    new MemberDescription {Name = "recipient", Type = "address"},
                }
            },
            PrimaryType = "OrderComponents",
        };

        return ret;
    }

    // const signOrder = async function(orderComponents){
    //     let domain = {
    //         name: MARKET_CONTRACT_NAME,
    //         version: MARKET_CONTRACT_VERSION,
    //         chainId:chain.id,
    //         verifyingContract: MARKET_CONTRACT_ADDRESS,
    //     }

    //     let types = EIP_712_ORDER_TYPE

    //     let value = orderComponents

    //     const signature = await signer._signTypedData(domain,types,value)
    //     return signature
    // }
    public async Task<string> SignOrder(OrderComponents orderComponents)
    {
        TypedData<Domain> typedData = GetSignOrderEIP();
        string signature = await ThirdwebManager.Instance.SDK.wallet.SignTypedDataV4(orderComponents, typedData);
        return signature;
    }

I can successfully display the signature and corresponding parameters in the metamask wallet.

But eventually it will report an error.Some of my screenshots are in Chinese, I'm sorry.

The English meaning of the error is please check the application.At the same time, the asynchronous call of eth_signTypedData_v4 in the program has not been able to return. Whether it is success or failure.

The final input parameters are as follows:
0x1eb4a941fdD27BedB429923d9A2e76b83fA46AE8
{
  "types": {
    "EIP712Domain": [
      {
        "name": "name",
        "type": "string"
      },
      {
        "name": "version",
        "type": "string"
      },
      {
        "name": "chainId",
        "type": "uint256"
      },
      {
        "name": "verifyingContract",
        "type": "address"
      }
    ],
    "OrderComponents": [
      {
        "name": "offerer",
        "type": "address"
      },
      {
        "name": "zone",
        "type": "address"
      },
      {
        "name": "offer",
        "type": "OfferItem[]"
      },
      {
        "name": "consideration",
        "type": "ConsiderationItem[]"
      },
      {
        "name": "orderType",
        "type": "uint8"
      },
      {
        "name": "startTime",
        "type": "uint256"
      },
      {
        "name": "endTime",
        "type": "uint256"
      },
      {
        "name": "zoneHash",
        "type": "bytes32"
      },
      {
        "name": "salt",
        "type": "uint256"
      },
      {
        "name": "conduitKey",
        "type": "bytes32"
      },
      {
        "name": "counter",
        "type": "uint256"
      }
    ],
    "OfferItem": [
      {
        "name": "itemType",
        "type": "uint8"
      },
      {
        "name": "token",
        "type": "address"
      },
      {
        "name": "identifierOrCriteria",
        "type": "uint256"
      },
      {
        "name": "startAmount",
        "type": "uint256"
      },
      {
        "name": "endAmount",
        "type": "uint256"
      }
    ],
    "ConsiderationItem": [
      {
        "name": "itemType",
        "type": "uint8"
      },
      {
        "name": "token",
        "type": "address"
      },
      {
        "name": "identifierOrCriteria",
        "type": "uint256"
      },
      {
        "name": "startAmount",
        "type": "uint256"
      },
      {
        "name": "endAmount",
        "type": "uint256"
      },
      {
        "name": "recipient",
        "type": "address"
      }
    ]
  },
  "primaryType": "OrderComponents",
  "domain": {
    "name": "PaintWorlds",
    "version": "1.1",
    "chainId": 80001,
    "verifyingContract": "0x58E11EcA1b39E2476A8779E1E339C32f3B8aD076"
  },
  "message": {
    "offerer": "0x1eb4a941fdD27BedB429923d9A2e76b83fA46AE8",
    "zone": "0xaD1294F4D93E34c04D59Ec66E336df8838877dC5",
    "offer": [
      {
        "itemType": 3,
        "token": "0x8F568Da5cc4D05b540DD075e4834a39C1650aA97",
        "identifierOrCriteria":<PHONE_NUMBER>3417839727470837069803920848670238713774995884617330750029947731978,
        "startAmount": 2,
        "endAmount": 2
      }
    ],
    "consideration": [
      {
        "itemType": 0,
        "token": "0x0000000000000000000000000000000000000000",
        "identifierOrCriteria": 0,
        "startAmount":<PHONE_NUMBER>000000,
        "endAmount":<PHONE_NUMBER>000000,
        "recipient": "0x1eb4a941fdD27BedB429923d9A2e76b83fA46AE8"
      },
      {
        "itemType": 0,
        "token": "0x0000000000000000000000000000000000000000",
        "identifierOrCriteria": 0,
        "startAmount":<PHONE_NUMBER>000000,
        "endAmount":<PHONE_NUMBER>000000,
        "recipient": "0x1eb4a941fdD27BedB429923d9A2e76b83fA46AE8"
      },
      {
        "itemType": 0,
        "token": "0x0000000000000000000000000000000000000000",
        "identifierOrCriteria": 0,
        "startAmount":<PHONE_NUMBER>0000000,
        "endAmount":<PHONE_NUMBER>0000000,
        "recipient": "0x1eb4a941fdD27BedB429923d9A2e76b83fA46AE8"
      }
    ],
    "orderType": 3,
    "startTime":<PHONE_NUMBER>,
    "endTime":<PHONE_NUMBER>,
    "zoneHash": "0x0000000000000000000000000000000000000000000000000000000000000000",
    "salt":<PHONE_NUMBER>5375461160287880677150839275131602929444820338394601800124270513104,
    "conduitKey": "0x100CF84aA88C14b9a6C1B5115332F6dae0C6620a000000000000000000000000",
    "counter": 0
  }
}

I am running the program in editor mode. I want to use it on pc or mac in the future. Next, how should I fix this.

The problem is probably your bytes32 values, try converting them like we do with the uid in the above function. Nethereum doesn't handle them well with basic "toJson". Also the part you commented makes it safer to use types > int but it should be ok commented. Alternatively you can construct your typed data as a raw json that metamask understands and send it directly with ThirdwebManager.Instance.SDK.session.Request<string>("eth_signTypedData_v4", address, json);


Re-organise tests and examples

Now that we have a separate examples sub-repo we should start caring about the way we test internal functionality and how we demonstrate it by separating low-level feature and unit tests from full-scale example setups. The current test setups are all small examples and should thus be migrated to the examples repo eventually. In their place we require a whole range of additional low-level feature tests that cover the basic functionalities individually, for example:

Grid and field initialisation from file using different formats
Internally provided kernels, such as AdvectionRK4/EE should be tested against known solutions
Various constructs of our internal JIT kernel language
Particle trajectory and data output

As we add more and more features and cover a wider range of formats, this list should grow, while the examples repo will be used to maintain a useful set of setups that demonstrate complete scenarios.

So the idea now is to host all the netcdf data on a separate server (ideally oceanparcels.org, http://plasticadrift.org/parcelsdata/ for now). There will then be a script to download this data if users want it.
Following from some initial investigation by @Thomas-95, I've had a further look into pydap, and it seems that it doesn't play nice with hdf5. It gives strange error messages (also detailed in the old email thread here)
However, I'm not sure we actually need pydap; might it not be overkill? Since we simply want to download the entire set of files anyway, can't we use something much simpler like wget, or a python version of that (see here)?

Ok, I don't think we want a script to "bulk download" all test on install. Instead I would thing we integrate pydap into our Grid objects to allow users to access and cache their own remote files via OpenDAP and put the according addresses in the test_xxx.py files, ie.: grid=Grid.from_nemo("http://plasticadrift.org/parcelsdata/GlobCurrent_xxx.nc", ...)). In this scenario we need to make sure pydap buffers the files, so the download is only triggered the first time the test is run.
However, if pydap really doesn't work, the bulk download can be used as a temporary fix. Have you tried it yourself though (the bug report you link looks old)?

Sorry for not being clear that the pydap indeed fails.
The code
from pydap.client import open_url
dataset = open_url('http://test.opendap.org/dap/data/nc/coads_climatology.nc')
print 'read coads'
OAFM_simple_U = open_url('http://plasticadrift.org/parcelsdata/OFAM_example_data/OFAM_simple_U.nc')
print 'read ofam'
Returns
read coads
Traceback (most recent call last):   File "/Users/erik/Downloads/pull_data.py", line 6, in <module>     OAFM_simple_U = open_url('http://plasticadrift.org/parcelsdata/OFAM_example_data/OFAM_simple_U.nc')   File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pydap/client.py", line 60, in open_url     dataset = response(url)   File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pydap/client.py", line 210, in _ddsdas     dataset = DDSParser(dds).parse()   File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pydap/parsers/dds.py", line 26, in _dataset     self.consume('dataset')   File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pydap/parsers/dds.py", line 19, in consume     token = SimpleParser.consume(self, regexp)   File "/opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/pydap/parsers/__init__.py", line 25, in consume     raise Exception("Unable to parse token: %s" % self.buffer[:10]) Exception: Unable to parse token: <!DOCTYPE
So the example they provide seems to work; our file doesn't work. Not sure if it's HDF5, but that's what this old post seems to suggest, and their error message was quite similar...
I'm suggesting going for bulk download as a temporary fix yes

Ah ok, in that case, yes, let's go for a bulk download. We might still be able to use  the OpenDAP feature in netCDF4, or maybe even fix pydap in the future, but for now let's go with pycurl or wget.

Fixed by @Thomas-95 in PR #92 (which was based on branch examples_test_update)


blog post about 2.4.0

https://github.com/kairos-io/kairos/releases/tag/v2.4.0 already got some comments and warnings that we can reuse