Calling WidgetsBinding.attachRootWidget throws an Exception

Using latest flutter beta (Flutter 3.8.0-10.1.pre) throws an exception when calling WidgetsBinding.attachRootWidget.
Steps to reproduce

Using macos and Flutter 3.8.0-10.1.pre from the beta channel
Run flutter create beta_crash
Replace contents of main.dart with:

import 'dart:async';

import 'package:flutter/material.dart';

void main() {
  var binding = WidgetsFlutterBinding.ensureInitialized();

  Timer.run(() {
    binding.attachRootWidget(MyApp());
  });
  binding.scheduleWarmUpFrame();
}

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(home: Text('BAR'));
  }
}

Run flutter run -d macos
When the application launches you get this error

══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞═══════════════════════════════════════════════════════════
The following assertion was thrown building Builder:
No MediaQuery widget ancestor found.
ScaffoldMessenger widgets require a MediaQuery widget ancestor.
The specific widget that could not find a MediaQuery ancestor was:
  ScaffoldMessenger
The ownership chain for the affected widget is: "ScaffoldMessenger ← Builder ← DefaultTextStyle ←
  CustomPaint ← Banner ← CheckedModeBanner ← Title ← Directionality ←
  _LocalizationsScope-[GlobalKey#0a912] ← Semantics ← ⋯"
No MediaQuery ancestor could be found starting from the context that was passed to MediaQuery.of().
This can happen because you have not added a WidgetsApp, CupertinoApp, or MaterialApp widget (those
widgets introduce a MediaQuery), or it can happen if the context you use comes from a widget above
those widgets.

The relevant error-causing widget was:
  MaterialApp MaterialApp:file:///Users/fertrig/development/scratch/pop/lib/main.dart:20:12

When the exception was thrown, this was the stack:
#0      debugCheckHasMediaQuery.<anonymous closure> (package:flutter/src/widgets/debug.dart:297:7)
#1      debugCheckHasMediaQuery (package:flutter/src/widgets/debug.dart:312:4)
#2      MediaQuery._of (package:flutter/src/widgets/media_query.dart:1017:12)
#3      MediaQuery.accessibleNavigationOf (package:flutter/src/widgets/media_query.dart:1208:63)
#4      ScaffoldMessengerState.didChangeDependencies (package:flutter/src/material/scaffold.dart:192:50)
#5      StatefulElement._firstBuild (package:flutter/src/widgets/framework.dart:5103:11)
#6      ComponentElement.mount (package:flutter/src/widgets/framework.dart:4928:5)
...     Normal element mounting (315 frames)
#321    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3940:16)
#322    Element.updateChild (package:flutter/src/widgets/framework.dart:3677:18)
#323    RenderObjectToWidgetElement._rebuild (package:flutter/src/widgets/binding.dart:1196:16)
#324    RenderObjectToWidgetElement.mount (package:flutter/src/widgets/binding.dart:1165:5)
#325    RenderObjectToWidgetAdapter.attachToRenderTree.<anonymous closure> (package:flutter/src/widgets/binding.dart:1112:18)
#326    BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2689:19)
#327    RenderObjectToWidgetAdapter.attachToRenderTree (package:flutter/src/widgets/binding.dart:1111:13)
#328    WidgetsBinding.attachRootWidget (package:flutter/src/widgets/binding.dart:945:7)
#329    main.<anonymous closure> (package:pop/main.dart:10:13)
#333    _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:192:26)
(elided 3 frames from class _Timer and dart:async-patch)

════════════════════════════════════════════════════════════════════════════════════════════════════

If you create a different sample project using Flutter stable 3.7.3 or prior, and use the same code above, the application loads successfully.
The error should be reproducible in other platforms and targets.
I suspect the error is related to this commit. Is this a breaking change?

Hi @fertrig, this issue seems to have been fixed on the latest master channel (3.8.0-14.0.pre.25) as I cannot reproduce it there.

flutter doctor -v (stable, beta, master)
[✓] Flutter (Channel stable, 3.7.4, on macOS 13.0.1 22A400 darwin-x64, locale en-EE)
    • Flutter version 3.7.4 on channel stable at /Users/huynq/Documents/GitHub/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision b4bce91dd0 (27 hours ago), 2023-02-21 09:50:50 +0800
    • Engine revision 248290d6d5
    • Dart version 2.19.2
    • DevTools version 2.20.1

[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    • Android SDK at /Users/huynq/Library/Android/sdk
    • Platform android-33, build-tools 31.0.0
    • ANDROID_HOME = /Users/huynq/Library/Android/sdk
    • Java binary at: /Users/huynq/Library/Java/JavaVirtualMachines/corretto-1.8.0_302/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment Corretto-8.302.08.1 (build 1.8.0_302-b08)
    • All Android licenses accepted.

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

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

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

[✓] IntelliJ IDEA Community Edition (version 2022.1.1)
    • IntelliJ at /Users/huynq/Library/Application Support/JetBrains/Toolbox/apps/IDEA-C/ch-0/221.5591.52/IntelliJ IDEA CE.app
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart

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

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-x64     • macOS 13.0.1 22A400 darwin-x64
    • Chrome (web)    • chrome • web-javascript • Google Chrome 110.0.5481.100

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

! Doctor found issues in 1 category.

[!] Flutter (Channel master, 3.8.0-14.0.pre.25, on macOS 13.0.1 22A400 darwin-x64, locale en-EE)
    • Flutter version 3.8.0-14.0.pre.25 on channel master at /Users/huynq/Documents/GitHub/flutter_master
    ! Warning: `flutter` on your path resolves to /Users/huynq/Documents/GitHub/flutter/bin/flutter, which is not inside your current Flutter SDK checkout at /Users/huynq/Documents/GitHub/flutter_master. Consider adding /Users/huynq/Documents/GitHub/flutter_master/bin to the front of your path.
    ! Warning: `dart` on your path resolves to /Users/huynq/Documents/GitHub/flutter/bin/dart, which is not inside your current Flutter SDK checkout at /Users/huynq/Documents/GitHub/flutter_master. Consider adding /Users/huynq/Documents/GitHub/flutter_master/bin to the front of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 4c25587b71 (5 hours ago), 2023-02-21 16:10:25 -0800
    • Engine revision 3aa112c75c
    • Dart version 3.0.0 (build 3.0.0-261.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.

[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    • Android SDK at /Users/huynq/Library/Android/sdk
    • Platform android-33, build-tools 31.0.0
    • ANDROID_HOME = /Users/huynq/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.15+0-b2043.56-8887301)
    • All Android licenses accepted.

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

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

[✓] Android Studio (version 2022.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.15+0-b2043.56-8887301)

[✓] IntelliJ IDEA Community Edition (version 2022.1.1)
    • IntelliJ at /Users/huynq/Library/Application Support/JetBrains/Toolbox/apps/IDEA-C/ch-0/221.5591.52/IntelliJ IDEA CE.app
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart

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

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-x64     • macOS 13.0.1 22A400 darwin-x64
    • Chrome (web)    • chrome • web-javascript • Google Chrome 110.0.5481.100

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

! Doctor found issues in 1 category.

[!] Flutter (Channel beta, 3.8.0-10.1.pre, on macOS 13.0.1 22A400 darwin-x64, locale en-EE)
    • Flutter version 3.8.0-10.1.pre on channel beta at /Users/huynq/Documents/GitHub/flutter_beta
    ! Warning: `flutter` on your path resolves to /Users/huynq/Documents/GitHub/flutter/bin/flutter, which is not inside your current Flutter SDK checkout at /Users/huynq/Documents/GitHub/flutter_beta. Consider adding /Users/huynq/Documents/GitHub/flutter_beta/bin to the front of your path.
    ! Warning: `dart` on your path resolves to /Users/huynq/Documents/GitHub/flutter/bin/dart, which is not inside your current Flutter SDK checkout at /Users/huynq/Documents/GitHub/flutter_beta. Consider adding /Users/huynq/Documents/GitHub/flutter_beta/bin to the front of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 1a0a03a41d (5 days ago), 2023-02-16 22:03:58 -0600
    • Engine revision 639e313f99
    • Dart version 3.0.0 (build 3.0.0-218.1.beta)
    • 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.

[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    • Android SDK at /Users/huynq/Library/Android/sdk
    • Platform android-33, build-tools 31.0.0
    • ANDROID_HOME = /Users/huynq/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.15+0-b2043.56-8887301)
    • All Android licenses accepted.

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

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

[✓] Android Studio (version 2022.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.15+0-b2043.56-8887301)

[✓] IntelliJ IDEA Community Edition (version 2022.1.1)
    • IntelliJ at /Users/huynq/Library/Application Support/JetBrains/Toolbox/apps/IDEA-C/ch-0/221.5591.52/IntelliJ IDEA CE.app
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart

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

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-x64     • macOS 13.0.1 22A400 darwin-x64
    • Chrome (web)    • chrome • web-javascript • Google Chrome 110.0.5481.100

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

! Doctor found issues in 1 category.

I'll be closing this issue since it has already been fixed on the latest master channel. If you still experience this issue, kindly leave a comment below and I will reopen this. Thank you!

@fertrig It's weird as the error appears now. Sorry for the quick conclusion. I reopen this for further investigation.
This issue is reproducible on the latest master and beta channels whilst it works as expected on the latest stable(3.7.4).

stable 3.7.4
beta 3.8.0-10.1.pre
master 3.8.0-14.0.pre.25

✅
❌
❌

✅: No Issue ❌: Issue reproduced

flutter doctor -v (stable, beta, master)
[✓] Flutter (Channel stable, 3.7.4, on macOS 13.0.1 22A400 darwin-x64, locale en-EE)
    • Flutter version 3.7.4 on channel stable at /Users/huynq/Documents/GitHub/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision b4bce91dd0 (27 hours ago), 2023-02-21 09:50:50 +0800
    • Engine revision 248290d6d5
    • Dart version 2.19.2
    • DevTools version 2.20.1

[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    • Android SDK at /Users/huynq/Library/Android/sdk
    • Platform android-33, build-tools 31.0.0
    • ANDROID_HOME = /Users/huynq/Library/Android/sdk
    • Java binary at: /Users/huynq/Library/Java/JavaVirtualMachines/corretto-1.8.0_302/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment Corretto-8.302.08.1 (build 1.8.0_302-b08)
    • All Android licenses accepted.

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

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

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

[✓] IntelliJ IDEA Community Edition (version 2022.1.1)
    • IntelliJ at /Users/huynq/Library/Application Support/JetBrains/Toolbox/apps/IDEA-C/ch-0/221.5591.52/IntelliJ IDEA CE.app
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart

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

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-x64     • macOS 13.0.1 22A400 darwin-x64
    • Chrome (web)    • chrome • web-javascript • Google Chrome 110.0.5481.100

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

! Doctor found issues in 1 category.

[!] Flutter (Channel master, 3.8.0-14.0.pre.25, on macOS 13.0.1 22A400 darwin-x64, locale en-EE)
    • Flutter version 3.8.0-14.0.pre.25 on channel master at /Users/huynq/Documents/GitHub/flutter_master
    ! Warning: `flutter` on your path resolves to /Users/huynq/Documents/GitHub/flutter/bin/flutter, which is not inside your current Flutter SDK checkout at /Users/huynq/Documents/GitHub/flutter_master. Consider adding /Users/huynq/Documents/GitHub/flutter_master/bin to the front of your path.
    ! Warning: `dart` on your path resolves to /Users/huynq/Documents/GitHub/flutter/bin/dart, which is not inside your current Flutter SDK checkout at /Users/huynq/Documents/GitHub/flutter_master. Consider adding /Users/huynq/Documents/GitHub/flutter_master/bin to the front of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 4c25587b71 (5 hours ago), 2023-02-21 16:10:25 -0800
    • Engine revision 3aa112c75c
    • Dart version 3.0.0 (build 3.0.0-261.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.

[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    • Android SDK at /Users/huynq/Library/Android/sdk
    • Platform android-33, build-tools 31.0.0
    • ANDROID_HOME = /Users/huynq/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.15+0-b2043.56-8887301)
    • All Android licenses accepted.

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

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

[✓] Android Studio (version 2022.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.15+0-b2043.56-8887301)

[✓] IntelliJ IDEA Community Edition (version 2022.1.1)
    • IntelliJ at /Users/huynq/Library/Application Support/JetBrains/Toolbox/apps/IDEA-C/ch-0/221.5591.52/IntelliJ IDEA CE.app
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart

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

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-x64     • macOS 13.0.1 22A400 darwin-x64
    • Chrome (web)    • chrome • web-javascript • Google Chrome 110.0.5481.100

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

! Doctor found issues in 1 category.

[!] Flutter (Channel beta, 3.8.0-10.1.pre, on macOS 13.0.1 22A400 darwin-x64, locale en-EE)
    • Flutter version 3.8.0-10.1.pre on channel beta at /Users/huynq/Documents/GitHub/flutter_beta
    ! Warning: `flutter` on your path resolves to /Users/huynq/Documents/GitHub/flutter/bin/flutter, which is not inside your current Flutter SDK checkout at /Users/huynq/Documents/GitHub/flutter_beta. Consider adding /Users/huynq/Documents/GitHub/flutter_beta/bin to the front of your path.
    ! Warning: `dart` on your path resolves to /Users/huynq/Documents/GitHub/flutter/bin/dart, which is not inside your current Flutter SDK checkout at /Users/huynq/Documents/GitHub/flutter_beta. Consider adding /Users/huynq/Documents/GitHub/flutter_beta/bin to the front of your path.
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 1a0a03a41d (5 days ago), 2023-02-16 22:03:58 -0600
    • Engine revision 639e313f99
    • Dart version 3.0.0 (build 3.0.0-218.1.beta)
    • 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.

[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    • Android SDK at /Users/huynq/Library/Android/sdk
    • Platform android-33, build-tools 31.0.0
    • ANDROID_HOME = /Users/huynq/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jbr/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.15+0-b2043.56-8887301)
    • All Android licenses accepted.

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

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

[✓] Android Studio (version 2022.1)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 11.0.15+0-b2043.56-8887301)

[✓] IntelliJ IDEA Community Edition (version 2022.1.1)
    • IntelliJ at /Users/huynq/Library/Application Support/JetBrains/Toolbox/apps/IDEA-C/ch-0/221.5591.52/IntelliJ IDEA CE.app
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart

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

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-x64     • macOS 13.0.1 22A400 darwin-x64
    • Chrome (web)    • chrome • web-javascript • Google Chrome 110.0.5481.100

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

! Doctor found issues in 1 category.

Since https://github.com/flutter/flutter/pull/119377 (part of the multi-window effort), MaterialApp no more insert a MediaQueryinto the tree.
runApp() was updated accordingly (see https://github.com/flutter/flutter/pull/116924).
The provided code sample can be updated in a similar way (adding a call to WidgetsFlutterBinding.wrapWithDefaultView which will take care of MediaQuery creation):

Updated code sample

import 'package:flutter/material.dart';

void main() {
  var binding = WidgetsFlutterBinding.ensureInitialized();

  Timer.run(() {
    binding.attachRootWidget(
      binding.wrapWithDefaultView(const MyApp()),
    );
  });
  binding.scheduleWarmUpFrame();
}

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

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(home: Text('BAR'));
  }
}


Allow user to update their programme

Good finding. This is currently not possible and we actually considered this a P1 as it is not possible in the current app anyway

Good finding. This is currently not possible and we actually considered this a P1 as it is not possible in the current app anyway

Right... i think me may want to push the whole programme thing to P1 then. Dosent make sense to be assigned a programme and not be able to update it

I agree ✅


Whats the recommended way to differentiate Characteristic handles?

Lets assume I have two or more Characteristics and want do differentiate between them on an write event easily. Whats the recommended way of doing this as the 'handle' field of 'Characteristic' is private to outside the crate? Do i need to build an outside table to link the handle number back to my characteristics?

    let mut bat_level = [23; 1];
    let battery_handle = {
        let mut svc = table.add_service(Service::new(0x1800));
        let _ = svc.add_characteristic_ro(0x2a00, id);
        let _ = svc.add_characteristic_ro(0x2a01, &appearance[..]);
        svc.build();

        // Generic attribute service (mandatory)
        table.add_service(Service::new(0x1801));

        // Battery service
        let mut svc = table.add_service(Service::new(0x180f));

        svc.add_characteristic(
            0x2a19,
            &[CharacteristicProp::Read, CharacteristicProp::Notify],
            &mut bat_level,
        )
        .build()
    };

    // Add custom Data Service
    let mut data_buffer = [0u8; 40];
    let data_characteristic_handle = {
        let mut svc = table.add_service(Service::new(DATA_SERVICE_UUID));

        svc.add_characteristic(
            DATA_CHARACTERISTIC_UUID,
            &[
                CharacteristicProp::Read,
                CharacteristicProp::Write,
                CharacteristicProp::Notify,
            ],
            &mut data_buffer,
        )
        .build()
    };

    // Add custom Data Service2
    let mut data_buffer2 = [0u8; 40];
    let data_characteristic_handle2 = {
        let mut svc = table.add_service(Service::new(DATA_SERVICE_UUID));

        svc.add_characteristic(
            DATA_CHARACTERISTIC_UUID,
            &[
                CharacteristicProp::Read,
                CharacteristicProp::Write,
                CharacteristicProp::Notify,
            ],
            &mut data_buffer,
        )
        .build()
    };

    let server = ble.gatt_server(&table);
    let mut adv_data = [0; 31];
    // Advertisement packets have a limit of 31 bytes!
    unwrap!(AdStructure::encode_slice(
        &[
            AdStructure::Flags(LE_GENERAL_DISCOVERABLE | BR_EDR_NOT_SUPPORTED),
            AdStructure::ServiceUuids16(&[Uuid::Uuid16([0x0f, 0x18])]),
            AdStructure::ServiceUuids16(&[DATA_SERVICE_UUID]),
            AdStructure::CompleteLocalName(b"Trouble"),
        ],
        &mut adv_data[..],
    ));

    info!("Starting advertising and GATT service");
    let _ = join3(
        ble.run(),
        async {
            loop {
                match server.next().await {
                    Ok(GattEvent::Write {
                        handle,
                        connection: _,
                    }) => {
                        // not possible as .handle is private
                        // if handle == data_characteristic_handle.handle
                        let _ = table.get(handle, |value| {
                            info!(
                                "Write event. Value written: {:?}  and handle {:?}",
                                value, handle
                            );
                            // This only provides the internal number of handle
                            // eg. Write event. Value written: [170, ..]  and handle Characteristic { cccd_handle: None, handle: 50 }
                        });
                    }
                    Ok(GattEvent::Read {
                        handle,
                        connection: _,
                    }) => {
                        info!("Read event");
                    }
                    Err(e) => {
                        error!("Error processing GATT events: {:?}", e);
                    }
                }
            }
        },

Good question... I think one way could be to have the CharacteristiBuilder::build() return Characteristic rather than AttributeHandle, and if we add PartialEq on Characteristic it should be possible to check and match?

yeah that seems like a good idea. A match on handles would be great.
Regarding "That way you can't construct handles that are not provided by trouble." I am not sure if i understand correctly what you mean by that. Is there a usecase for handles which are not handled by trouble?

yeah that seems like a good idea. A match on handles would be great.
Regarding "That way you can't construct handles that are not provided by trouble." I am not sure if i understand correctly what you mean by that. Is there a usecase for handles which are not handled by trouble?

No I don't think there are any such use case.
I was just thinking out louad that if it exposed the u16 and you could compare that, you'd not be able to guarantee that you always compared with a valid handle.

Thank you very much for implementing a fix that fast! Sadly i still have problems as it seems the equal check does not work correctly. It always enters the first one no matter the characteristic I actually write to. But the handle id is indeed different so maybe comparing on this number would be an option? Although I am still a little be confused what that number actually represents and why it's incrementing that often.
eg.

...
    let mut bat_level = [23; 1];
    let battery_lvl_handle = {
        let mut svc = table.add_service(Service::new(0x1800));
        let _ = svc.add_characteristic_ro(0x2a00, id);
        let _ = svc.add_characteristic_ro(0x2a01, &appearance[..]);
        svc.build();

        // Generic attribute service (mandatory)
        table.add_service(Service::new(0x1801));

        // Battery service
        let mut svc = table.add_service(Service::new(0x180f));

        svc.add_characteristic(
            0x2a19,
            &[CharacteristicProp::Read, CharacteristicProp::Notify],
            &mut bat_level,
        )
        .build()
    };

    // Event Service for all events that happened on device
    let mut event_buffer = [0u8; 40]; // Adjust size as needed
    let events_handle = {
        let mut svc = table.add_service(Service::new(EVENT_SERVICE_UUID));

        svc.add_characteristic(
            EVENT_CHARACTERISTIC_UUID,
            &[
                CharacteristicProp::Read,
                CharacteristicProp::Write,
                CharacteristicProp::Notify,
            ],
            &mut event_buffer,
        )
        .build()
    };

    info!("Starting advertising and GATT service");
    let _ = join3(
        ble.run(),
        async {
            loop {
                match server.next().await {
                    Ok(GattEvent::Write {
                        handle,
                        connection: _,
                    }) => {
                        info!("HANDLE Info {:?}", handle);

                        if handle == battery_lvl_handle {
                        // always enters here although its not the correct handle
                            info!("is battery_lvl_handle");
                        } else if handle == events_handle {
                            info!("is events_handle");
                        }

                    }
....

@lulf sadly cannot reopen issue myself :)

@Syphixs I think this fixes the issue #88 . The handles would not match because the event handle didn't contain the cccd field.
It doesn't explain the fact that you do match on the battery_lvl_handle though, I found that strange.

Could you try again with latest main?

Yeah now it works great! Thank you! :)
maybe it had something to do with a strange warning I also got which was:
0.201141 INFO  [host] initialized
└─ trouble_host::host::{impl#2}::run_with_handler::{async_fn#0}::{async_block#0} @ /Users/u/.cargo/git/checkouts/trouble-148cf413cadab653/12645f7/host/src/fmt.rs:143
0.201293 TRACE [host] enabling advertising
└─ trouble_host::host::{impl#2}::advertise::{async_fn#0} @ /Users/u/.cargo/git/checkouts/trouble-148cf413cadab653/12645f7/host/src/fmt.rs:117
14.504638 TRACE [host] connection with handle ConnHandle(1) established to BdAddr([dc, 1d, b9, 7d, d9, 59])
└─ trouble_host::host::{impl#2}::handle_connection @ /Users/u/.cargo/git/checkouts/trouble-148cf413cadab653/12645f7/host/src/fmt.rs:117
14.504760 TRACE [link][poll_accept] connection handle ConnHandle(1) in role Peripheral accepted
└─ trouble_host::connection_manager::{impl#1}::poll_accept @ /Users/u/.cargo/git/checkouts/trouble-148cf413cadab653/12645f7/host/src/fmt.rs:117
15.007537 WARN  [host] unsupported l2cap channel id 58
└─ trouble_host::host::{impl#2}::handle_acl @ /Users/u/.cargo/git/checkouts/trouble-148cf413cadab653/12645f7/host/src/fmt.rs:156
15.007568 WARN  [host] encountered error processing ACL data for ConnHandle(1): NotSupported
└─ trouble_host::host::{impl#2}::run_with_handler::{async_fn#0}::{async_block#2} @ /Users/u/.cargo/git/checkouts/trouble-148cf413cadab653/12645f7/host/src/fmt.rs:1

but now this also went away. I will keep an eye out for further strange behavior. Thanks again! Will close it as the issue is fixed.

Ah yes, that unsupported thing is iPhone specific. Basically iOS is probing using an illegal l2cap channel id, maybe for some Apple specific feature.
Should probably make that less error-y

@lulf I got the same unsupported l2cap channel id 58 error on both iOS and macOS. Then iOS and macOS would disconnect. It there any workaround for it right now?
my trace:
INFO  Connected
└─ rmk::ble::trouble::run_ble_task::{async_fn#0}::{async_block#1} @ /Users/haobogu/Projects/keyboard/rmk/rmk/src/ble/trouble.rs:269
WARN  [host] unsupported l2cap channel id 58
└─ trouble_host::host::{impl#2}::handle_acl @ /Users/haobogu/.cargo/git/checkouts/trouble-148cf413cadab653/d9d2e80/host/src/fmt.rs:156
WARN  [host] encountered error processing ACL data for ConnHandle(0): NotSupported
└─ trouble_host::host::{impl#2}::run_with_handler::{async_fn#0}::{async_block#2} @ /Users/haobogu/.cargo/git/checkouts/trouble-148cf413cadab653/d9d2e80/host/src/fmt.rs:156
TRACE [host] agreed att MTU of 185
└─ trouble_host::host::{impl#2}::handle_acl @ /Users/haobogu/.cargo/git/checkouts/trouble-148cf413cadab653/d9d2e80/host/src/fmt.rs:117
INFO  GATT next event
└─ rmk::ble::trouble::run_ble_task::{async_fn#0}::{async_block#0} @ /Users/haobogu/Projects/keyboard/rmk/rmk/src/ble/trouble.rs:221
ERROR Error processing GATT events: NotFound
└─ rmk::ble::trouble::run_ble_task::{async_fn#0}::{async_block#0}::{closure#0} @ /Users/haobogu/Projects/keyboard/rmk/rmk/src/ble/trouble.rs:252
INFO  [host] disconnection event on handle 0, reason: Remote User Terminated Connection
└─ trouble_host::host::{impl#2}::run_with_handler::{async_fn#0}::{async_block#2} @ /Users/haobogu/.cargo/git/checkouts/trouble-148cf413cadab653/d9d2e80/host/src/fmt.rs:143

Are you sure they are related? All iOS devices probes that l2cap channel id, but it should not cause a disconnect, at least that does not happen for me (nor for production firmware running trouble).
Are you using one of the example applications?

Are you using one of the example applications?

ah I'm running my own code using trouble, not the example. I got Error processing GATT events: NotFound after connected. Here is my implementation. I have no idea why my implementation is problematic...


[MM-28837] New data retention UI

Summary
Draft Pull request to create some test cases
Related Pull Requests
N/A

/cloud


OSError:   libsponv.so: undefined symbol: _ZN3c106Symbol14fromQualStringERKSs

(py36) [yzg@bogon second]$ python create_data.py create_kitti_info_file --data_p                                  ath=../../kittidata
Traceback (most recent call last):
File "create_data.py", line 9, in
from second.core import box_np_ops
File "/home/yzg/research/ljh/second/second.pytorch/second/core/box_np_ops.py",                                   line 5, in
from second.core.non_max_suppression.nms_gpu import rotate_iou_gpu_eval
File "/home/yzg/research/ljh/second/second.pytorch/second/core/non_max_suppres                                  sion/init.py", line 1, in
from second.core.non_max_suppression.nms_cpu import nms_jit, soft_nms_jit
File "/home/yzg/research/ljh/second/second.pytorch/second/core/non_max_suppres                                  sion/nms_cpu.py", line 7, in
from spconv.utils import (
File "/home/yzg/anaconda2/envs/py36/lib/python3.6/site-packages/spconv/_init                                  _.py", line 27, in
torch.ops.load_library(_LIB_PATH)
File "/home/yzg/anaconda2/envs/py36/lib/python3.6/site-packages/torch/_ops.py"                                  , line 102, in load_library
ctypes.CDLL(path)
File "/home/yzg/anaconda2/envs/py36/lib/python3.6/ctypes/init.py", line 34                                  8, in init
self._handle = _dlopen(self._name, mode)
OSError: /home/yzg/anaconda2/envs/py36/lib/python3.6/site-packages/spconv/libspc                                  onv.so: undefined symbol: _ZN3c106Symbol14fromQualStringERKSs

This issue is due to ABI problem between gcc 4 and gcc 5. solved by reinstall pytorch. closed.

这个问题是由于 gcc 4 和 gcc 5 之间的 ABI 问题。通过重新安装 pytorch 解决。关闭。

This issue is due to ABI problem between gcc 4 and gcc 5. solved by reinstall pytorch. closed.
What is the version of pytorch?, I use 1.5 to ask the same question. Thank you for your answer


Question: how to override the templates?

The default request spec template is quite useful but I would like to extend it to fit my needs instead of having to modify the end result. How can I do this?

Found it. Just need to create a file in lib/templates/rspec/scaffold/api_request_spec.rb


Add more details for compatibility and performances

This would be slightly better with an explanation of what the links are so people don't have to click through to find out what you mean, but now it has the links.
Maybe they'll have arm64 someday, or maybe we'll figure out a reliable way to use the amd64 with arm64. I'm pretty sure with tweaking that this could be made to work on macOS 13.4 Apple Silicon with the right settings on orbStack, Docker Desktop, and Colima. But just the right settings.

You're right. I added some details.
Thanks.

Thanks, don't forget to do a release when you have everything you want sorted.
I don't recommend automatic merging, I'll turn that off.


Refresh token does not add to cookies after login

Upon login, an accessToken cookie is added to the browser. Once accessToken expires, application uses refreshToken to generate a new accessToken but using refreshToken results in a NullPointerException.

Exception Thrown

RefreshTokenService fails to find refreshToken

I'm pretty sure the refreshToken bug was with its relationship to users, we had it as OneToOne, but a user will have multiple refresh tokens through its lifetime. Changing that fixed the login flow.


Release into master

The merge pattern is confusing, but can this be reviewed and merged into master?

Current coverage is 61.28% (diff: 95.74%)

Merging #536 into master will increase coverage by 0.80%

@@             master       #536   diff @@
==========================================
  Files            59         59
  Lines          2918       2950    +32
  Methods           0          0
  Messages          0          0
  Branches          0          0
==========================================
+ Hits           1765       1808    +43
+ Misses         1153       1142    -11
  Partials          0          0

Powered by Codecov. Last update 522c5f8...b7ea0df


Dist areas for some courses are corrupted in database

Might have an effect on whether or not the course shows up or counts for particular distribution requirements, so good to get this fixed asap.

The course does seem to show up, and works for the most part as usual.

But it doesn't seem to be counting for any distribution area. So I guess it's being treated effectively as if it were blank.
That's not a terrible fallback, but yeah, we should figure out why this is happening.


Remove error logging for expected failures, add requeues

Previously, we were stack-tracing quite regularly in circumstances that are to be expected, especially in a two-controller setup like we have.
This also adds a requeue (with info log) for the rare case where we see the RESTMapper of the gc admission plugin being out of date. This mostly happened in CI - I wasn't able to reproduce locally, even after 50 attempts.

lint and unit tests are going to fail, but I'm waiting for the integration tests until I push the fix

OCP integration tests passed. now force-pushing unit test fix. let's see if they pass again

Got it. It triggered again. But because I made a mistake, it didn't requeue:
 2024-03-06T21:31:27Z	INFO	ctrlr.istio	Reconciling	{"Istio": "default", "reconcileID": "b4b498ee-e6fb-4c47-b9d2-5357a3174478"}
2024-03-06T21:31:27Z	INFO	ctrlr.istio	Creating IstioRevision	{"Istio": "default", "reconcileID": "b4b498ee-e6fb-4c47-b9d2-5357a3174478", "IstioRevision": "default"}
2024-03-06T21:31:27Z	INFO	ctrlr.istio	APIServer seems to be not ready - RESTMapper of gc admission plugin is not up to date. Trying again in 5 seconds	{"Istio": "default", "reconcileID": "b4b498ee-e6fb-4c47-b9d2-5357a3174478", "IstioRevision": "default", "error": "istiorevisions.operator.istio.io \"default\" is forbidden: cannot set blockOwnerDeletion in this case because cannot find RESTMapping for APIVersion operator.istio.io/v1alpha1 Kind Istio: no matches for kind \"Istio\" in version \"operator.istio.io/v1alpha1\""}
2024-03-06T21:31:27Z	INFO	ctrlr.istio	Reconciliation done. Updating status.	{"Istio": "default", "reconcileID": "b4b498ee-e6fb-4c47-b9d2-5357a3174478"}
2024-03-06T21:31:27Z	INFO	ctrlr.istio	Reconciling	{"Istio": "default", "reconcileID": "46e2bc86-3743-4a32-8ce9-2ed85de88268"}
2024-03-06T21:31:27Z	INFO	ctrlr.istio	Creating IstioRevision	{"Istio": "default", "reconcileID": "46e2bc86-3743-4a32-8ce9-2ed85de88268", "IstioRevision": "default"}
2024-03-06T21:31:27Z	INFO	ctrlr.istio	APIServer seems to be not ready - RESTMapper of gc admission plugin is not up to date. Trying again in 5 seconds	{"Istio": "default", "reconcileID": "46e2bc86-3743-4a32-8ce9-2ed85de88268", "IstioRevision": "default", "error": "istiorevisions.operator.istio.io \"default\" is forbidden: cannot set blockOwnerDeletion in this case because cannot find RESTMapping for APIVersion operator.istio.io/v1alpha1 Kind Istio: no matches for kind \"Istio\" in version \"operator.istio.io/v1alpha1\""}
2024-03-06T21:31:27Z	INFO	ctrlr.istio	Reconciliation done. Updating status.	{"Istio": "default", "reconcileID": "46e2bc86-3743-4a32-8ce9-2ed85de88268"}

/retest


Add compute sample to demonstrate create and get

Unlike most of the grpc endpoint services that return a Foo when calling CreateFoo, compute simply returns its LRO Operation type. We should add a code sample to illustrate how to call CreateFoo with a callback to GetFoo to simulate that behavior.

If other languages have similar samples, consider using the region tags they do.


feat: lock version constraint

Reslove #698

I can't find the CI logs on the UI, the build and test are working on my local machine.

CI passed after re-push.


Plotting scripts may crash if no metadata (Ct values) available

We have an automated system that pulls metadata (collection dates and Ct values) for all samples prior to running artic & ncov-tools. We've recently run into a situation where no samples had metadata available (all NA values for date and ct in the metadata file).
The error we've run into is occuring in the plot_qc_sequencing.R script, where the merged dataframe here::
https://github.com/jts/ncov-tools/blob/7a19778c644594fe17ce4fc703560e97b149aa60/workflow/scripts/plot/plot_qc_sequencing.R#L5
...is empty, resulting in this error message:
Error: Faceting variables must have at least one value
Backtrace:
     █
  1. └─global::plot_depth_by_amplicon_and_ct(df, metadata, args$output)
  2.   └─ggplot2::ggsave(outname, width = 15, height = 10)
  3.     ├─grid::grid.draw(plot)
  4.     └─ggplot2:::grid.draw.ggplot(plot)
  5.       ├─base::print(x)
  6.       └─ggplot2:::print.ggplot(x)
  7.         ├─ggplot2::ggplot_build(x)
  8.         └─ggplot2:::ggplot_build.ggplot(x)
  9.           └─layout$setup(data, plot$data, plot$plot_env)
 10.             └─ggplot2:::f(..., self = self)
 11.               └─self$facet$compute_layout(data, self$facet_params)
 12.                 └─ggplot2:::f(...)
 13.                   ├─ggplot2:::unrowname(...)
 14.                   │ └─base::is.data.frame(x)
 15.                   └─ggplot2::combine_vars(data, params$plot_env, vars, drop = params$drop)
Execution halted

We haven't confirmed, but a similar error may arise in the other plotting functions in the script that use the metadata.

Any chance you can attach some example files:

metadata file
*.amplicon_depth.bed
*.per_base_coverage.bed
merged.qc.csv

I can generate some on Monday, but I think any normal inputs, along with a metadata.csv file that has all NA values for date and ct should trigger the error.

Thanks @dfornika.  Unfortunately I no longer have access to prior data as I have moved on from my role when I originally helped on the project.

Ok no problem, I'll dig something up as soon as I can.

I had to give them .txt extensions so they'd be accepted here for upload.
I grabbed a couple of SRA samples, downsampled them to ~25x coverage and ran them through our artic pipeline, then through ncov-tools v1.9.1.
I might need to follow up with the merged.qc.csv file. I think that file may be generated downstream of the error we're seeing.
metadata.txt
SRR27382851-1-25x.amplicon_depth.txt
SRR27382851-1-25x.per_base_coverage.txt
SRR27382852-1-25x.amplicon_depth.txt
SRR27382852-1-25x.per_base_coverage.txt

Hmm I don't see a merged.qc.csv in our outputs. It looks like that's being generated from the artic qc.csv file(?) I don't think we provide that as an input.

That sounds like a reasonable work-around. On our side, we discovered that there was an upstream issue in our process that pulls metadata from our database for use in this pipeline that was causing us to miss most of our Ct and collection date values for some recent runs. We've got that issue fixed now, so we're less likely to run into this in the near future.
But the fix seems fairly simple so it would be nice to have the issue resolved so it won't arise again, if possible.

@dfornika @DarianHole I created a branch which automatically addresses the metadata ct issue.  When the metadata is imported, if all the CT values are NA, it automatically fills them with 0:
https://github.com/jts/ncov-tools/blob/3028cc610830c13e0db1a1bce464e0feeb382fdf/workflow/scripts/plot/plot_qc_sequencing.R#L125
I also addressed issue #110 and added N as a key in the base dictionary:
https://github.com/jts/ncov-tools/blob/3028cc610830c13e0db1a1bce464e0feeb382fdf/workflow/scripts/format_pileup.py#L15
I noticed you addressed it on your end, but hopefully this helps.  Let me know if it works out and I can merge the code and do a release.


InkWell can show focusColor optional on touch device

Description
Currently, the focus highlight can only be shown when [FocusManager.highlightMode] is [FocusHighlightMode.traditional],
Sometimes, showing the focus highlight is useful for the touch device widget, such as highlight the selected item of DropdownButton, so I add a property alwaysShowFocusColor of InkWell to make it optinal.
I also improve some documentations about focusColor and [FocusManager.highlightMode] behavior.
Related Issues
Fixes #70294
Tests
I added the following tests:
See files.

Hi @xu-baolin,
Thanks for the PR, but I'd rather not add this parameter to InkWell, I think it's redundant.  You can already do what you want by setting FocusManager.instance.highlightStrategy to FocusHighlightStrategy.alwaysTraditional, which will enable focus highlights to be shown even on a device in touch mode.

But this doesn't seem to work  for this issue scenario. I just want to let some widget response instead of making all of them respond focus change.

I'd prefer to avoid adding one-off flags like alwaysShowFocusColor.
It's not possible to use the FocusManager, since it's a singleton and can't be used to override highlightStrategy within a subtree (i.e. for just one DropdownButton's menu).
I think what's really needed is a way to specify how menu item highlights are computed for the selected/focused/etc states. I think we could do that without hijacking the focus manager's highlightMode property, by exposing the per-item InkWell overlayColor property in DropdownButton and by folding in the MaterialState.selected state, so overlayColor (MaterialStateProperty<Color>)values could select a color based on each item's disabled, hovered, pressed, focused, and selected state.

Why not "expose the per-item InkWell overlayColor property in DropdownButton" so that the color of menu items for all states could be specified with DropdownButton.itemOverlayColor?

Why not "expose the per-item InkWell overlayColor property in DropdownButton" so that the color of menu items for all states could be specified with DropdownButton.itemOverlayColor?

Done.

How would a developer override the default overlayColor you've added?

Override the ThemeData for the subtree, the same as before this change.

Hi guys, Any thoughts about this patch?

I appreciate the work you've put into this PR, and I apologize for only being a "drive by" reviewer.
I think we're going to need to sort out a general solution per https://github.com/flutter/flutter/pull/70442#discussion_r528116468,  for all components that can take the focus when they're used in desktop applications.   I'm going to close this PR to give everyone a chance to think about how best to solve (and explain) a general solution.
Sorry about the long delay and for the effort you've put into this.

I appreciate the work you've put into this PR, and I apologize for only being a "drive by" reviewer.
I think we're going to need to sort out a general solution per https://github.com/flutter/flutter/pull/70442#discussion_r528116468,  for all components that can take the focus when they're used in desktop applications.   I'm going to close this PR to give everyone a chance to think about how best to solve (and explain) a general solution.
Sorry about the long delay and for the effort you've put into this.


feat(Table): Add scroll snapping

Adds Y-axis scroll snapping to table. Closes #378.

What happened here? 😀


Update compiler-hooks.md

describe your changes...

[x] Read and sign the CLA. PRs that haven't signed it won't be accepted.
[x] Make sure your PR complies with the writer's guide.
[x] Review the diff carefully as sometimes this can reveal issues.
Remove these instructions from your PR as they are for your eyes only.

文档已更新。

environment 准备好之前，执行插件。
这句是前还是后，有源码可以证明的吗？


Update FAQ on submitting subsets of the suite

We should probably review in light of the "data center" vs. "edge" subset.

@TheKanter  please update the language with the scenario requirements.

separate PR to do:
Section 4 wording update to "Each datacenter benchmarks require the following scenarios" etc.
medical image segmentation spelling check in sec 4.1


Fix event selection for daylight saving changes

On days where daylight saving is toggled the day does not last exactly
86400000 ms.  In the timezone Europe/Berlin for example daylight saving
time was toggled on 2022-03-27 at 02:00 hours.  This results in
2022-03-27T00:00:00 + 86400000 ms = 2022-03-28T01:00:00.  Therefore
events where displayed on the wrong day.

@Serhioromano thank you for merging. Do you mind tagging a release?  The last one is quite old and having a recent release could help new people coming to the repository to not ask #778 again.
Also it would help me to bundle the new version.


INITIAL COMMIT

Hey @Saikat2407  please check my pull request!

Remove name, github id and leetcode id from the all the files.

okay! done

let me know if you are done!!

yes done with changes, plz check

@Saikat2407  when i can see my contributions in hf profile


[RESOLVED] High ICMP ping response time

Problem started at 13:44:33 on 2023.06.15
Problem name: High ICMP ping response time
Host: S100-Santiago
Severity: Warning
Operational data: Value: 772ms
Original problem ID: 28729
Event details in Zabbix: http://<IP_ADDRESS>/tr_events.php?triggerid=23518&eventid=28729

Problem has been resolved in 13m 0s at 13:57:33 on 2023.06.15
Problem name: High ICMP ping response time
Host: S100-Santiago
Severity: Warning
Original problem ID: 28729


[BUG] Does not work when in the Notifications Tab

Info

Browser: Firefox 107.0 (64-bit)
Platform: macOS Ventura 13.0.1
Extension Version: 1.3
Location: US

What happened
Steps to reproduce the behavior:

Go to Notifications
Scroll down until you see someone with a checkmark
See the error

Screenshots

Expected behavior
I should have seen the money badge instead of the real one
Additional context
My settings:

@jaff80 Update to main, this has been fixed but not released yet

v1.4 has been released which includes a fix for this. Can you give it a go now? @jaff80

@wseagar I am unable to test it because @gonzoheadhuncho is somehow no longer in my notifications tab and I can not find anyone verified with Twitter Blue in my notifications tab

@wseagar I am unable to test it because @gonzoheadhuncho is somehow no longer in my notifications tab and I can not find anyone verified with Twitter Blue in my notifications tab

@noway do you want to like a tweet by @jaff80 ? 😆

@jaff80 what's your twitter handle?

@noway It is @jaff80_roblox Sorry for the late reply!

@noway It's working!

Sweet, closing.


Correct clientRateLimit defaults

Related issue
Closes https://github.com/kyverno/website/issues/668.
Proposed Changes
Just updates the documentation to be in line with the source.
Checklist

[x] I have read the contributing guidelines.
[x] I have inspected the website preview for accuracy.
[x] I have signed off my issue.

Updated the description to point to the correct issue.


Added 'posix=False' flag to shlex.split to allow windows paths

Usage on windows still has some peculiarities, but at least it works with this addition. Without the posiix flag, all double backslashes are removed from the process path

Thanks for this, I added your suggestion to the new v0.4 release.


Consider adding links out to the oracle explorer with example contracts

A user could come to this screen and not understand what an offer is, if we link out to existing contracts on the oracle explorer to get an idea of what they look like and that they can copy them into the text field
Maybe this link: https://oracle.suredbits.com/contract/enum
My proposed text
New to DLCs? Check out our [youtube tutorial](https://www.youtube.com/watch?v=oR0I0aHxNMM) or go grab a contract from the [Suredbits Contract Explorer](https://oracle.suredbits.com/contract/enum)

As mentioned on our call, the youtube video is going to need to be updated for the new UI on umbrel

This was addressed when adding the FAQ.


Polished Frontend

Note: The Dockerfile does say to checkout the demo_polish_frontend branch; When we’re about to merge, make sure to checkout the develop branch instead.

I cannot find the docker_polish_frontend submodule inside the ChimpDriver folder. Did you forget to import the submodule?
Also, when running: $ docker build -t chimpcheck .:
Error response from daemon: Dockerfile parse error line 7: unknown instruction: &&

You miss the \ at the end of line 6.

Fixed the error with the Dockerfile. That should be the only error.
The "git checkout docker_polish_frontend" lines talk about the specific branch it's currently pulling. It should not be a submodule.

The branch is called demo_docker_frontend and not docker_polish_frontend!
Just a tip: execute the docker build image (or any other test if you have tests cases in your program) next time you create a pull request. This was a dumb mistake that took me time to debug while it would have been immediate to solve for you.

Wait, no. The branch should be called docker_polish_frontend...


NOT ABLE TO SET ICONS

Not able to crate icons
A clear and concise description of what the bug is.
To Reproduce
Steps to reproduce the behavior:

Go to 'edit'
Click on 'add an image, and save
Scroll down to '....'
See error

Expected behavior
A clear and concise description of what you expected to happen.
2022-09-13 Log.txt
Screenshots
If applicable, add screenshots to help explain your problem.
Additional context
Add any other context about the problem here.
Log file
Please upload the latest log file (Help -> Export latest log)

The template is missing a lot of useful information. I can't reproduce it.
Can you clarify the problem?

Might be related to https://github.com/Macro-Deck-org/Macro-Deck/issues/263

I have the same problem.
Generally no icons are displayed and I can't create any icons.
Also a new installation has brought no change.
Operating system: Win11 22H2
excerpt logfile.txt


Update README to reflect new naming scheme

Following #16 and #18, some of the names in the README are out of date, for example:

references to data_utils.py should instead refer to climsim_utils.data_utils module of the installable python package
references to metrics_and_figures should be updated to reflect the new directory name, evaluation

This has been done as part of #44


07/04/2018 04:11 : Create Pull Request for branch prTesting_2018070404 -> master

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

split/updateTestCon.md
:white_check_mark:Succeeded

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


Any plans for port to Guava 15. or major?

Any plans for port Kite SDK to Guava 15. or major?
thanks in advance
regards

No current plans to update the version of Guava we use, though we recently shaded Guava (https://github.com/kite-sdk/kite/pull/257) which would make revving the version easier in the future.
Is there something you wanted to work on that needs a newer version of Guava?

hi,
there  are some project as Apache solr,hbase,hadoop,... have plans for update guava
we use for Apache flume...
for the shaded options see http://fedoraproject.org/wiki/Packaging:No_Bundled_Libraries#Why_no_Bundled_Libraries
we don't shade or use external libraries in every library and project
regards


Refactoring of smithy-rules-engine for code generation

The package smithy-rules-engine has undergone a major refactoring in an effort to improve validation, separate AWS and non-AWS concerns, add a specification, and better align with Smithy's coding standards. A code-stable pull request is available here. General notes are provided in individual commit messages. The format of the rules documents have not changed, meaning a successful migration to the refactored codebase will involve no changes to code generated for an SDK client.
The Smithy team plans to release this update on August 15th, 2023. Please reach out to us for any additional information or concerns.

To account for upcoming traits to simplify the AWS endpoints modeling story for service teams, the AWS-specific components in this work have moved from smithy-aws-rules-engine to smithy-aws-endpoints. No other changes to the code within the package has been made.
To accomodate this change, we're pushing the planned release of the refactoring to August 22nd, 2023.

That sounds good to me—I've verified that it is working in a branch. Note that I've pulled the tests out of Smithy and vended them in our own repo. This isn't ideal because it means we won't keep up with any updates to Smithy-provided rules language tests. It would be ideal if Smithy could vend these .smithy files to use for SDKs to run their own tests.

The coordinated release is being pushed to 09/06. This does not change or impact the required changes for the SDKs.

The coordinated release of this refactoring has been delayed until 09/20.


[Operator app] Display all queries on the Home page as clickable links

When the Home page of the operator app is opened, all of the measurements should be fetched automatically from /measurements endpoint
The measurements should be grouped by query id and displayed in a list (for example, if we have 4 measurements with the same query id, we should just display that query id in the list)
When an item in the list is clicked, the user should be redirected to the query's details page (the href can be for example /details?id={queryId}) - then, the query details should be fetched from this endpoint

Hints

React-query has a useQuery hook, which can be used to fetch data - it can just be copied from here
Next.js has a built-in Link component that can be used for navigation (we're already using that in the navBar)

Definition of done

When the user opens the Home page of the operator app, all the queries are displayed in a list - after clicking any of the queries, the user will be redirected to a page where that query's details will be fetched

closed by #84


[video_player] fixed markdown which causes pub.dev not show actu…

packages/video_player/README.md
Description
Edited the tag closing for readme.md for video player.
Related Issues
No issues
Checklist
Before you create this PR confirm that it meets all requirements listed below by checking the relevant checkboxes ([x]). This will ensure a smooth and quick review process.

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[x] My PR includes unit or integration tests for all changed/updated/fixed behaviors (See Contributor Guide).
[x] All existing and new tests are passing.
[x] I updated/added relevant documentation (doc comments with ///).
[x] The analyzer (flutter analyze) does not report any problems on my PR.
[x] I read and followed the Flutter Style Guide.
[x] The title of the PR starts with the name of the plugin surrounded by square brackets, e.g. [shared_preferences]
[x] I updated pubspec.yaml with an appropriate new version according to the pub versioning philosophy.
[x] I updated CHANGELOG.md to add a description of the change.
[x] I signed the CLA.
[x] I am willing to follow-up on review comments in a timely manner.

Breaking Change
Does your PR require plugin users to manually update their apps to accommodate your change?

[ ] Yes, this is a breaking change (please indicate a breaking change in CHANGELOG.md and increment major revision).
[x] No, this is not a breaking change.

@neolivz please follow the instructions to sign the CLA for future submissions. As this is a one-character change I'm not going to bother for this one.


How to install hover?

Error message that hint module hover is missing
Failed to run `config` for forester.nvim

...nl/.local/share/nvim/lazy/forester.nvim/lua/forester.lua:77: module 'hover' not found:
	no field package.preload['hover']
cache_loader: module hover not found
cache_loader_lib: module hover not found
	no file './hover.lua'
	no file '/usr/share/luajit-2.1/hover.lua'
	no file '/usr/local/share/lua/5.1/hover.lua'
	no file '/usr/local/share/lua/5.1/hover/init.lua'
	no file '/usr/share/lua/5.1/hover.lua'
	no file '/usr/share/lua/5.1/hover/init.lua'
	no file './hover.so'
	no file '/usr/local/lib/lua/5.1/hover.so'
	no file '/usr/lib/lua/5.1/hover.so'
	no file '/usr/local/lib/lua/5.1/loadall.so'

# stacktrace:
  - /forester.nvim/lua/forester.lua:77 _in_ **setup**

update: It seems just add a dependency { "lewis6991/hover.nvim" } in README


Host transactions improvements

Problem
Fiscal hosts have no way of interacting with a ledger of transactions in a way that is meaningful for them. They are used to seeing a tabulated list of transitions that they can filter to see precisely what they need before copying or exporting to another service to work with the data in more detail (i.e. with an accounting platform or spreadsheet application. More often than not we find ourselves doing work like this in metabase, which is problematic for a number of reasons.
Solution
Creating a tool for viewing and filtering transactions (including 'operational' and 'restricted' funds (i.e. host vs. hosted collectives):

Clicking into a transaction should show the details of this transaction:

Users should also be able to see related transactions, i.e. each of the components in the transaction group.
Finally, a host should be able to view the transactions and transaction group from a given expense or contribution.
for more see the original pitch on Coda:  https://coda.io/d/Make-Open-Collective_dnHLKv7oLV0/Currently_suFhs#CurrentProjects_tu75U/r132&view=modal

This week

[ ] Merge a first iteration behind a preview feature flag

Objectives for this week:

[ ] Enable a feature flag for all hosts
[ ] Create two options  of transactions list with a mechanism for a user to switch between the two: one with debit/credit columns and the other with value/type. Release this behind the hosts feature flag to collect feedback.
[ ] Enable (for now) filtering on expense type
[ ] Iterate on the drawer.

Summary of the weekly sync with myself and @gustavlrsn
The conversation once again touched on a core friction between an engineering desire for this to be a general platform tool and a product desire for this to be a tool specifically for fiscal hosts. The driver for this project was and continues to be an infrastructure for addressing fiscal host accounting needs (primary personas: fiscal host admin, accountant, auditor). We resolved this friction by agreeing that engineering can:

Decide if they want to invest right now the additional effort to make a generic transaction tool for all accounts.
If so, to do so without compromising on considerations that are unique to the primary personas of this project.
That a way to do this would be to fork the project into two features - one tailored for fiscal hosts and the other more general and applicable to all other accounts (this may require some changes to the preview features capability to discern between the two audiences).
In the future we can address the potentially unique needs of other accounts (as we are currently doing in the context of accounting) and if necessary address them with additional tailored modifications.

Then, the project has surfaced some potentially complex issues with the underlying models of the ledger and/or the API. These need to be addressed either within this project or to be shaped into followup work to be pitched:

The top "tab navigation" currently includes two options: "All" and "Host funds" and is MISSING "Collective Funds". This need represents a core accounting concept: the differentiation between funds that belong to the organization itself and the funds it managed on behalf of collectives (which are restricted to be used only in relation to collective expenses). This needs to be clearly surfaced in the transaction tool.
The concept of originating transaction (transactions such as contribution, expense and added funds that are the seed that causes other transactions in the ledger) has come up both in the vocabulary around the transactions UI and in the research into accounting-readiness. This information needs to be made available and surfaced in the transactions list. This inquiry has also surfaced that there is an issue with the transaction generating sequence: we generate host fee transactions before we generate contribution transactions. This should also be corrected and other transaction generating scenarios should be reviewed to make sure they all have internal logical integrity. One of the drivers for this project is to give users a view "under the hood" so that they can both understand and learn to trust the underlying ledger technology. We need to make sure that things are in order "under the hood."
An ability to, in the front end, link from contribution and expense views to their related transactions.
The recurring friction with the need to discern between actual expenses and other kinds of expenses (eg: grants and platforms settlements). The current resolution to this includes: visualizing the expense kind and adding filters for filtering by expense kind (which would make it possible to isolate grant and platform settlement transactions). We may continue to encounter frictions with this exception as we engage with more accounting-related work. Therefore, this may yet require a further enhancement of the "Transaction Kind" within the ledger itself.

There were also disagreements about:

An engineering preference to continue to use a "from to" language in both the transaction  list and drawer and a product preference to avoid that and use "opposite account." This has not been resolved.
The column display order and formatting in the transaction list. This disagreement can be solved by forking the project (as mentioned above) which would allow for separate views for fiscal hosts and all other accounts.

Another open issue is the surfacing of payment processor and payment method information in the details drawer. That is contingent on the outcomes of a workshop today, dedicated to how this information currently shows up on the ledger, the frictions it is causing and how they me be solved.

An engineering preference to continue to use a "from to" language in both the transaction list and drawer and a product preference to avoid that and use "opposite account." This has not been resolved.

@iamronen To be clear, I'm not suggesting we use "From account" and "To account" columns as in the mockups above, and I'm on board that this does not work as a single transaction is always happening on a single account, and that main account should be clear from the interface.
What I'm suggesting is that we can help the user make sense of the "opposite account" column by using "from to" language in relation to that entity, in other words it's technically the same as "opposite account" but helps the user what is going on.

The column display order and formatting in the transaction list. This disagreement can be solved by forking the project (as mentioned above) which would allow for separate views for fiscal hosts and all other accounts.

I'm hesitant to use "credit" and "debit" columns in an effort to make this "speak" accounting language, even for the fiscal hosts page, in my view this creates false assumptions on what this list is. The Open Collective ledger is more of a bank ledger than an accounting ledge. I've expanded a bit more on this and it's UX expectations in this document:
https://coda.io/d/_d8Ek7dqJNRN/Differences-between-accounting-and-bank-ledgers_susei


W1011 false positive

CloudFormation Lint Version
0.80.2
What operating system are you using?
Mac and ubuntu via github action
Describe the bug
I'm seeing W1011 rule violation because of missing keys in a mapping, but I think this is a false positive because I'm providing a DefaultValue, so it shouldn't matter that the key is missing.
Expected behavior
I expect not to see this rule violation when I run cfn-lint
Reproduction template
Mappings:
  dwS3BucketEnvironmentConfigMap:
    # Create an entry for each environment

    prod:
      BucketName: 'digital-workspace-v2-prod'
      DeletionPolicy: Delete
    hotfix:
      BucketName: 'digital-workspace-v2-hotfix'
      DeletionPolicy: Delete
    staging:
      BucketName: 'digital-workspace-v2-staging'
      DeletionPolicy: Delete
    training:
      BucketName: 'digital-workspace-v2-training'
      DeletionPolicy: Delete
    dev:
      BucketName: 'digital-workspace-v2-dev'
      DeletionPolicy: Delete

Conditions:
  dwS3BucketApplyRetentionPolicy: !Not
    - !Equals
      - !FindInMap
        - dwS3BucketEnvironmentConfigMap
        - !Ref Env
        - RetentionMode
        - DefaultValue: No retention
      - No retention
  dwS3BucketRetentionPolicyDurationIsInDays: !Equals
    - !FindInMap
      - dwS3BucketEnvironmentConfigMap
      - !Ref Env
      - RetentionDurationType
      - DefaultValue: Days
    - Days

EDIT: I'm seeing the same after upgrading to 0.86.0 and running locally on mac m1

Did you add the Transform AWS::LanguageExtensions?
https://docs.aws.amazon.com/AWSCloudFormation/latest/UserGuide/intrinsic-function-reference-findinmap-enhancements.html

Fixed and merged.  Closing and we will release today or tomorrow.

@kddejong thank you for looking into this, but I think it's still cropping up in 0.87.0
I'm running against this template
# Generated by platform-helper 6.1.0 / 2024-03-14 15:33:40
Transform: AWS::LanguageExtensions

Parameters:
  # Copilot required Parameters...
  App:
    Type: String
    Description: Your application's name.
  Env:
    Type: String
    Description: The environment name your service, job, or workflow is being deployed to.

Mappings:
  demodjangoS3BucketEnvironmentConfigMap:
    # Create an entry for each environment

    ant:
      BucketName: 'demodjango-s3-bucket-ant'
      DeletionPolicy: Delete
    toolspr:
      BucketName: 'demodjango-s3-bucket-toolspr'
      DeletionPolicy: Delete
    staging:
      BucketName: 'demodjango-s3-bucket-staging'
      DeletionPolicy: Delete
    jayesh:
      BucketName: 'demodjango-s3-bucket-jayesh'
      DeletionPolicy: Delete
    willg:
      BucketName: 'demodjango-s3-bucket-willg'
      DeletionPolicy: Delete
    dev:
      BucketName: 'demodjango-s3-bucket-dev'
      DeletionPolicy: Delete
    john:
      BucketName: 'demodjango-s3-bucket-john'
      DeletionPolicy: Delete
    yusuf:
      BucketName: 'demodjango-s3-bucket-yusuf'
      DeletionPolicy: Delete
    samm:
      BucketName: 'demodjango-s3-bucket-samm'
      DeletionPolicy: Delete
    gabe:
      BucketName: 'demodjango-s3-bucket-gabe'
      DeletionPolicy: Delete

Conditions:
  demodjangoS3BucketApplyRetentionPolicy: !Not
    - !Equals
      - !FindInMap
        - demodjangoS3BucketEnvironmentConfigMap
        - !Ref Env
        - RetentionMode
        - DefaultValue: No retention
      - No retention
  demodjangoS3BucketRetentionPolicyDurationIsInDays: !Equals
    - !FindInMap
      - demodjangoS3BucketEnvironmentConfigMap
      - !Ref Env
      - RetentionDurationType
      - DefaultValue: Days
    - Days

Resources:
  demodjangoS3BucketKMSKey:
    Type: "AWS::KMS::Key"
    DeletionPolicy: !FindInMap [demodjangoS3BucketEnvironmentConfigMap, !Ref Env, DeletionPolicy]
    UpdateReplacePolicy: Retain
    Properties:
      Description: "KMS Key for RDS encryption"
      KeyPolicy:
        Version: '2012-10-17'
        Id: !Sub '${App}-${Env}-demodjangoS3Bucket-key'
        Statement:
        - Sid: Enable IAM User Permissions
          Effect: Allow
          Principal:
            AWS: !Sub "arn:aws:iam::${AWS::AccountId}:root"
          Action: kms:*
          Resource: '*'

  demodjangoS3BucketKeyAlias:
    Type: 'AWS::KMS::Alias'
    DeletionPolicy: !FindInMap [demodjangoS3BucketEnvironmentConfigMap, !Ref Env, DeletionPolicy]
    UpdateReplacePolicy: Retain
    Properties:
      AliasName: !Sub 'alias/${App}-${Env}-demodjangoS3Bucket-key'
      TargetKeyId: !Ref demodjangoS3BucketKMSKey

  demodjangoS3BucketBucket:
    Metadata:
      'aws:copilot:description': 'An Amazon S3 bucket to store and retrieve objects for demodjangoS3Bucket'
    Type: AWS::S3::Bucket
    DeletionPolicy: !FindInMap [demodjangoS3BucketEnvironmentConfigMap, !Ref Env, DeletionPolicy]
    UpdateReplacePolicy: Retain
    Properties:
      BucketName: !FindInMap [demodjangoS3BucketEnvironmentConfigMap, !Ref Env, BucketName]
      AccessControl: Private
      BucketEncryption:
        ServerSideEncryptionConfiguration:
        - ServerSideEncryptionByDefault:
            SSEAlgorithm: aws:kms
            KMSMasterKeyID: !Ref demodjangoS3BucketKMSKey
      ObjectLockConfiguration:
        !If
        - demodjangoS3BucketApplyRetentionPolicy
        - ObjectLockEnabled: Enabled
          Rule:
            DefaultRetention: !If
              - demodjangoS3BucketRetentionPolicyDurationIsInDays
              - Mode: !FindInMap [demodjangoS3BucketEnvironmentConfigMap, !Ref Env, RetentionMode]
                Days: !FindInMap
                  - demodjangoS3BucketEnvironmentConfigMap
                  - !Ref Env
                  - RetentionDuration
              - Mode: !FindInMap [demodjangoS3BucketEnvironmentConfigMap, !Ref Env, RetentionMode]
                Years: !FindInMap
                  - demodjangoS3BucketEnvironmentConfigMap
                  - !Ref Env
                  - RetentionDuration
        - !Ref AWS::NoValue
      VersioningConfiguration:
        Status: Enabled
      PublicAccessBlockConfiguration:
        BlockPublicAcls: true
        BlockPublicPolicy: true
        IgnorePublicAcls: true
        RestrictPublicBuckets: true
      Tags:
        - Key: Copilot-application
          Value: !Ref App
        - Key: Copilot-environment
          Value: !Ref Env
        - Key: Copilot-deletion-policy
          Value: !FindInMap [demodjangoS3BucketEnvironmentConfigMap, !Ref Env, DeletionPolicy]

  demodjangoS3BucketBucketPolicy:
    Metadata:
      'aws:copilot:description': 'A bucket policy to deny unencrypted access to the bucket and its contents'
    Type: AWS::S3::BucketPolicy
    DeletionPolicy: !FindInMap [demodjangoS3BucketEnvironmentConfigMap, !Ref Env, DeletionPolicy]
    UpdateReplacePolicy: Retain
    Properties:
      PolicyDocument:
        Version: '2012-10-17'
        Statement:
          - Sid: ForceHTTPS
            Effect: Deny
            Principal: '*'
            Action: 's3:*'
            Resource:
              - !Sub ${ demodjangoS3BucketBucket.Arn}/*
              - !Sub ${ demodjangoS3BucketBucket.Arn}
            Condition:
              Bool:
                "aws:SecureTransport": false
      Bucket: !Ref demodjangoS3BucketBucket

Outputs:
  demodjangoS3BucketName:
    Description: "The name of a user-defined bucket."
    Value: !Ref demodjangoS3BucketBucket

  demodjangoS3BucketKMSKeyARN:
    Description: "ARN of the KMS Key"
    Value: !GetAtt demodjangoS3BucketKMSKey.Arn
    Export:
      Name: !Sub "${App}-${Env}-demodjangoS3Bucket-KMSKeyARN"

and getting the following errors:
[W1011 FindInMap second key "RetentionMode" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "ant" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/1/Mode/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:112:85

W1011 FindInMap second key "RetentionMode" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "toolspr" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/1/Mode/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:112:85

W1011 FindInMap second key "RetentionMode" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "staging" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/1/Mode/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:112:85

W1011 FindInMap second key "RetentionMode" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "jayesh" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/1/Mode/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:112:85

W1011 FindInMap second key "RetentionMode" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "willg" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/1/Mode/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:112:85

W1011 FindInMap second key "RetentionMode" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "dev" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/1/Mode/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:112:85

W1011 FindInMap second key "RetentionMode" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "john" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/1/Mode/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:112:85

W1011 FindInMap second key "RetentionMode" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "yusuf" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/1/Mode/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:112:85

W1011 FindInMap second key "RetentionMode" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "samm" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/1/Mode/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:112:85

W1011 FindInMap second key "RetentionMode" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "gabe" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/1/Mode/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:112:85

W1011 FindInMap second key "RetentionDuration" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "ant" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/1/Days/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:116:21

W1011 FindInMap second key "RetentionDuration" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "toolspr" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/1/Days/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:116:21

W1011 FindInMap second key "RetentionDuration" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "staging" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/1/Days/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:116:21

W1011 FindInMap second key "RetentionDuration" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "jayesh" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/1/Days/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:116:21

W1011 FindInMap second key "RetentionDuration" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "willg" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/1/Days/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:116:21

W1011 FindInMap second key "RetentionDuration" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "dev" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/1/Days/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:116:21

W1011 FindInMap second key "RetentionDuration" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "john" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/1/Days/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:116:21

W1011 FindInMap second key "RetentionDuration" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "yusuf" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/1/Days/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:116:21

W1011 FindInMap second key "RetentionDuration" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "samm" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/1/Days/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:116:21

W1011 FindInMap second key "RetentionDuration" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "gabe" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/1/Days/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:116:21

W1011 FindInMap second key "RetentionMode" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "ant" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/2/Mode/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:117:85

W1011 FindInMap second key "RetentionMode" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "toolspr" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/2/Mode/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:117:85

W1011 FindInMap second key "RetentionMode" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "staging" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/2/Mode/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:117:85

W1011 FindInMap second key "RetentionMode" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "jayesh" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/2/Mode/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:117:85

W1011 FindInMap second key "RetentionMode" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "willg" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/2/Mode/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:117:85

W1011 FindInMap second key "RetentionMode" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "dev" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/2/Mode/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:117:85

W1011 FindInMap second key "RetentionMode" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "john" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/2/Mode/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:117:85

W1011 FindInMap second key "RetentionMode" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "yusuf" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/2/Mode/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:117:85

W1011 FindInMap second key "RetentionMode" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "samm" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/2/Mode/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:117:85

W1011 FindInMap second key "RetentionMode" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "gabe" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/2/Mode/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:117:85

W1011 FindInMap second key "RetentionDuration" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "ant" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/2/Years/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:121:21

W1011 FindInMap second key "RetentionDuration" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "toolspr" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/2/Years/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:121:21

W1011 FindInMap second key "RetentionDuration" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "staging" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/2/Years/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:121:21

W1011 FindInMap second key "RetentionDuration" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "jayesh" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/2/Years/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:121:21

W1011 FindInMap second key "RetentionDuration" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "willg" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/2/Years/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:121:21

W1011 FindInMap second key "RetentionDuration" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "dev" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/2/Years/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:121:21

W1011 FindInMap second key "RetentionDuration" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "john" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/2/Years/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:121:21

W1011 FindInMap second key "RetentionDuration" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "yusuf" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/2/Years/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:121:21

W1011 FindInMap second key "RetentionDuration" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "samm" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/2/Years/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:121:21

W1011 FindInMap second key "RetentionDuration" doesn't exist in map "demodjangoS3BucketEnvironmentConfigMap" under "gabe" at Resources/demodjangoS3BucketBucket/Properties/ObjectLockConfiguration/Fn::If/1/Rule/DefaultRetention/Fn::If/2/Years/Fn::FindInMap
copilot/environments/addons/demodjango-s3-bucket.yml:121:21

@gabelton I might be missing something the Map demodjangoS3BucketEnvironmentConfigMap doesn't have the keys RetentionDuration or RetentionDuration ?  I don't see a part of AWS::LanguageExtensions that would fix that as there isn't a default specified for the FindInMap

I think i get what you are saying though... Since the condition is also calling out the FindInMap.  But even if demodjangoS3BucketRetentionPolicyDurationIsInDays is true or false you are doing a FindInMap to RetentionMode or RetentionDuration which isn't in the map.  Wouldn't you need to add a default for those as well?

Something like this...
ObjectLockConfiguration:
        !If
        - demodjangoS3BucketApplyRetentionPolicy
        - ObjectLockEnabled: Enabled
          Rule:
            DefaultRetention: !If
              - demodjangoS3BucketRetentionPolicyDurationIsInDays
              - Mode: !FindInMap [demodjangoS3BucketEnvironmentConfigMap, !Ref Env, RetentionMode, {"DefaultValue": "COMPLIANCE"}]
                Days: !FindInMap
                  - demodjangoS3BucketEnvironmentConfigMap
                  - !Ref Env
                  - RetentionDuration
                  - DefaultValue: 90
              - Mode: !FindInMap [demodjangoS3BucketEnvironmentConfigMap, !Ref Env, RetentionMode, {"DefaultValue": "COMPLIANCE"}]
                Years: !FindInMap
                  - demodjangoS3BucketEnvironmentConfigMap
                  - !Ref Env
                  - RetentionDuration
                  - DefaultValue: 1
        - !Ref AWS::NoValue

I'm doing a small tweak to help you out in v0.  This is resolved in v1.  V1 we have better context as we move down a template.

I think i get what you are saying though... Since the condition is also calling out the FindInMap. But even if demodjangoS3BucketRetentionPolicyDurationIsInDays is true or false you are doing a FindInMap to RetentionMode or RetentionDuration which isn't in the map. Wouldn't you need to add a default for those as well?

I think I already have defaults for both of those FindInMap though:
- DefaultValue: No retention
- DefaultValue: Days

I think i get what you are saying though... Since the condition is also calling out the FindInMap. But even if demodjangoS3BucketRetentionPolicyDurationIsInDays is true or false you are doing a FindInMap to RetentionMode or RetentionDuration which isn't in the map. Wouldn't you need to add a default for those as well?

I think I already have defaults for both of those FindInMap though:
- DefaultValue: No retention
- DefaultValue: Days

You do where it matters in the Condition.  I missed that at first.


docs: reorganize e2e demo

Reorganize setup instructions for end-to-end demo to expedite the process of getting started. Also, specifies that MicroK8s also works with Ubuntu 20.04.

Yeah. LGTM. Do it.


Client picks resource based on IP and port

Solves  https://github.com/firezone/firezone/issues/2030#issuecomment-2078027977
Currently the way we pick what gateway to send packets to works like this.

Select resource ID based on destination IP
Select gateway based on resource ID
Send packets to that gateway

For overlapping IPs on resources the selection is based on the longest match on the trie we use to store the IPs
However, now that we have traffic filters, we want to also consider that resources have associated port filters so how we  so we want to select the resource ID based on destination IP, protocol and destination port.
For this to work, we implemented #4994 so given the IP we could also know what's the FQDN that the packet is meant to be using and use that to resource select later on.
### Tasks
- [x] #4994
- [x] Portal sends traffic filters as part of the resource to the client
- [ ] Read filters on the client from the portal (done i
- [ ] Rework resource lookup
- [ ] Send TCP and UDP as part of the state machine tests
- [ ] Add resources filters to resources in state machine tests
- [ ] Encode new resource selection algorithm in state machine tests

Pre-requisite for #3133
Refactor here is to let the Portal select the Resource to use when there can be multiple. connlib would only need to send the dest:port to the portal to hint what Resource to access, but ultimately it's up to the portal to resolve the Resource / Gateway to use appropriately.

@jamilbk I think the portal doesn't need to do that selection, the client already has all the filtering rules so it can decide which resource to use locally

@AndrewDryga The issue involving the refactor here is that the Everyone Group with access to only port 443 conflicts with the DevOps group with access to only port 22.
This requires moving filters to policies so that the portal can find a policy to match the resource + port for access attempted.
At least that's the design we settled on the last time we went over the issues here: https://docs.google.com/document/d/1qiR-dVssjQFM3Ah6B9n3M8xLXoXSvjL3eaucYjpAsTY/edit

Call 8/26/24

[ ] Move traffic filters from resources to services
[ ] When defining a policy, select which services to allow
[ ] Connlib will need to determine which resource(s) to use based on packet, try them all (either one by one or in batch in the connection intent)
[ ] Implement #6158 for handling address/port conflicts (TODO)

^ above needs to be in a separate epic


Releases after 1.11.0 broke GLB loading that worked previously

Description
It seems like every release after 1.11.0 is not able to load a previously working GLB model.
Errors look as following: https://imgur.com/a/LvYONLo
THREE.GLTFLoader: Couldn't load texture blob:http://localhost:8081/1f74b052-d77c-4b46-a020-1df88543d5f8<EMAIL_ADDRESS>TypeError: s is null
    assignTexture model-viewer.js:47595
<EMAIL_ADDRESS>viewer error: {"isTrusted":false} [localhost:8081:98:21](http://localhost:8081/)
THREE.GLTFLoader: Couldn't load texture blob:http://localhost:8081/bc6c28de-7197-4080-bdfb-9b5e3735c344<EMAIL_ADDRESS>    h model-viewer.js:47542
THREE.GLTFLoader: Couldn't load texture blob:http://localhost:8081/415457a9-ee72-4d65-8dec-e3341d27865e<EMAIL_ADDRESS>    h model-viewer.js:47542

See attached zip for a GLB file, which can be successfully loaded in v1.11.0 but not in any version starting from v1.11.1.
corsita.zip
Version

model-viewer: v1.11.1 - v.1.12.0

Browser Affected

[x] Chrome, 103.0.5060.134 (Official Build) (64-Bit) (cohort: Stable)
[x] Edge
[x] Firefox

OS

[x] Windows 10

I'm not sure how that model could have worked previously.


Request for iOS: Cache images for off-line reading

So so good to see you back on iOS NetNewsWire!
Please can you add the option to cache images for off-line reading?
Thanks,
Vangeis

When are you reading off-line? I’m curious about the use case.

Hi Brent,
Many thanks for getting back to me.
I live in London and read my feeds while commuting with the tube. We don’t have wifi in the tunnels so having everything cached on the phone makes it so much easier.
What do you think?
Regards,
Vangelis

On 10 Mar 2020, at 20:59, Brent Simmons<EMAIL_ADDRESS>wrote:
When are you reading off-line? I’m curious about the use case.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub https://github.com/Ranchero-Software/NetNewsWire/issues/1873?email_source=notifications&email_token=AH6SXL4OEVABZIQNE7SVRH3RG2SZ3A5CNFSM4LFGTF22YY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOEONEALQ#issuecomment-597311534, or unsubscribe https://github.com/notifications/unsubscribe-auth/AH6SXL776CZV7UYLD2I6MP3RG2SZ3ANCNFSM4LFGTF2Q.

I want this one quite frequently.  I’ve often wanted to load up on articles while I’ve had good service, knowing that I won’t have service in transit or at my destination.
If you live on one of the US coasts, you rarely have a problem getting data cellular service. In the middle of America it is much more spotty. My brother lives in a suburb of Omaha, NE and I can’t get data at his house. Lots of times office buildings block your cellular data too and you might not be able to put a personal device on the company WiFi.
I would also like to cache Reader View article downloads for the same reason as images.

Like @vangeliis I often want to cache articles before going on the tube (London underground), and also on long train journeys across country when I know that there will be spotty cellular data coverage. With Reeder I would open the app and wait for the articles and images to be cached before setting off.
I think it's also worth considering that cellular data is expensive in many parts of the world.

This sounds like a good idea. Let’s remember this when we’re planning iOS 5.2.

Hi,
I would really appreciate it too if this feature could be added into NetNewsWire. I have a limited data plan and could not afford  to use my data to view all the images while on commute everyday, so I would usually download or cache some articles. Really hope that this feature would be added! Thanks.

I'm also very interested in this feature. I like to read articles on an iPad and often in trains and in other enviroments with no wifi. Hope this will be implemented in the near feature.

It looks like this is already tentatively planned but I’d like to add my plus one. My use case is for reading in cellular and wifi dead zones.
Before finding this issue I googled (DDG’d) to see if it’s possible and found a thread on Reddit  asking the same question so there’s a few of us wanting this ability.

Adding another +1 here. It would be great to be able to read comic feeds and other images while on an airplane or other data constrained environment.

Adding a plus one to this!

Hi, adding a +1 to this as well: I have the same use case that above, and would love this option!


More checks for None

See each commit message, thanks

@alexischr ping? can you review please? thanks!