Error while sending more throughout FlutterErrorDetails

Please describe the issue and how to reproduce it, or link to a small reproducible application:
I'm trying to get a better and more details error report but I get the following exception

E/FileObserver(13655): Unhandled exception in FileObserver io.sentry.android.core.EnvelopeFileObserver@94251ab
E/FileObserver(13655): java.lang.IllegalArgumentException: Invalid envelope. Item at index '1'. has no header delimiter.
E/FileObserver(13655): 	at io.sentry.EnvelopeReader.read(EnvelopeReader.java:80)
E/FileObserver(13655): 	at io.sentry.OutboxSender.processFile(OutboxSender.java:60)
E/FileObserver(13655): 	at io.sentry.OutboxSender.processEnvelopeFile(OutboxSender.java:100)
E/FileObserver(13655): 	at io.sentry.android.core.EnvelopeFileObserver.onEvent(EnvelopeFileObserver.java:58)
E/FileObserver(13655): 	at android.os.FileObserver$ObserverThread.onEvent(FileObserver.java:163)
E/FileObserver(13655): 	at android.os.FileObserver$ObserverThread.observe(Native Method)
E/FileObserver(13655): 	at android.os.FileObserver$ObserverThread.run(FileObserver.java:113)

To reproduce the issue checkout this branch  and press the Open Scaffold with UI error button.
It only happens on Android, iOS works just fine.

Include the output of the command flutter doctor below:

Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 1.22.5, on macOS 11.0.1 20B29 darwin-x64, locale de-DE)

[✓] Android toolchain - develop for Android devices (Android SDK version 30.0.2)
[✓] Xcode - develop for iOS and macOS (Xcode 12.2)
[!] Android Studio (version 4.1)
    ✗ Flutter plugin not installed; this adds Flutter specific functionality.
    ✗ Dart plugin not installed; this adds Dart specific functionality.
[✓] VS Code (version 1.51.1)
[✓] Connected device (1 available)

! Doctor found issues in 1 category.

Motivation
This change in the linked branch improve the error message from
FlutterError
A RenderFlex overflowed by 1175 pixels on the right.

to

════════ Exception caught by rendering library ═════════════════════════════════
The following assertion was thrown during layout:
A RenderFlex overflowed by 1175 pixels on the right.

The relevant error-causing widget was
Row
lib/scaffold_with_ui_error.dart:33
The overflowing RenderFlex has an orientation of Axis.horizontal.
The edge of the RenderFlex that is overflowing has been marked in the rendering with a yellow and black striped pattern. This is usually caused by the contents being too big for the RenderFlex.

Consider applying a flex factor (e.g. using an Expanded widget) to force the children of the RenderFlex to fit within the available space instead of being sized to their natural size.
This is considered an error condition because it indicates that there is content that cannot be seen. If the content is legitimately bigger than the available space, consider clipping it with a ClipRect widget before putting it in the flex, or using a scrollable container rather than a Flex, like a ListView.

The specific RenderFlex in question is: RenderFlex#550f0 OVERFLOWING
════════════════════════════════════════════════════════════════════════════════

This is really helpful as it includes the class from which the error was thrown.

@ueman checking this out, thanks

ok a thing we should improve is: an event triggered by FlutterError.onError could have a null errorDetails.stack but more information in the errorDetails itself, I think this could even be a Flutter issue tbh, parsing the  errorDetails would be very flakey as the format could be very vast.
Logging message: Message(detailedMessage) would make sense though, but only if there's no stack I'd say.
Now back to the Invalid envelope. Item at index '1'. has no header delimiter, I believe it is because of the detailedMessage which has \n and we use that as a delimiter to read the next item, it'd be a sentry-android bug which I am debugging right now.

Logging message: Message(detailedMessage) would make sense though, but only if there's no stack I'd say.

I do not think that works.
The following code
import 'package:flutter/material.dart';

class ScaffoldWithUiError extends StatelessWidget {
    @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('SecondaryScaffold'),
      ),
      body: Center(
        child: Column(
          children: [
            SizedBox(
              height: 500,
              width: 300,
              child: Builder(builder: (context) {
                return null;
              }),
            ),
            const Text(
              'You have added a navigation event '
              'to the crash reports breadcrumbs.',
            ),
            MaterialButton(
              child: const Text('Go back'),
              onPressed: () {
                Navigator.pop(context);
              },
            ),
          ],
        ),
      ),
    );
  }
}

also raises an error through FlutterError.onError. But it has a stacktrace which looks like this:

Stacktrace
FlutterError: A build function returned null.
The offending widget is:
  Builder
Build functions must never return null.
To return an empty space that causes the building widget to fill available room, return "Container()". To return an empty space that takes as little room as possible, return "Container(width: 0.0, height: 0.0)".
  File "debug.dart", line 302, col 7, in debugWidgetBuilderValue.<fn>
  File "framework.dart", line 3327, col 18, in Element.updateChild
  File "framework.dart", line 4652, col 16, in ComponentElement.performRebuild
  File "framework.dart", line 4800, col 11, in StatefulElement.performRebuild
  File "framework.dart", line 4343, col 5, in Element.rebuild
  File "framework.dart", line 4606, col 5, in ComponentElement._firstBuild
  File "framework.dart", line 4791, col 11, in StatefulElement._firstBuild
  File "framework.dart", line 4601, col 5, in ComponentElement.mount
  File "framework.dart", line 3569, col 14, in Element.inflateWidget
  File "framework.dart", line 3327, col 18, in Element.updateChild
  File "framework.dart", line 4652, col 16, in ComponentElement.performRebuild
  File "framework.dart", line 4800, col 11, in StatefulElement.performRebuild
  File "framework.dart", line 4343, col 5, in Element.rebuild
  File "framework.dart", line 4606, col 5, in ComponentElement._firstBuild
  File "framework.dart", line 4791, col 11, in StatefulElement._firstBuild
  File "framework.dart", line 4601, col 5, in ComponentElement.mount
  File "framework.dart", line 3569, col 14, in Element.inflateWidget
  File "framework.dart", line 3327, col 18, in Element.updateChild
  File "framework.dart", line 4652, col 16, in ComponentElement.performRebuild
  File "framework.dart", line 4343, col 5, in Element.rebuild
  File "framework.dart", line 4606, col 5, in ComponentElement._firstBuild
  File "framework.dart", line 4601, col 5, in ComponentElement.mount
  File "framework.dart", line 3569, col 14, in Element.inflateWidget
  File "framework.dart", line 3327, col 18, in Element.updateChild
  File "framework.dart", line 4652, col 16, in ComponentElement.performRebuild
  File "framework.dart", line 4343, col 5, in Element.rebuild
  File "framework.dart", line 4606, col 5, in ComponentElement._firstBuild
  File "framework.dart", line 4601, col 5, in ComponentElement.mount
  File "framework.dart", line 3569, col 14, in Element.inflateWidget
  File "framework.dart", line 3327, col 18, in Element.updateChild
  File "framework.dart", line 4652, col 16, in ComponentElement.performRebuild
  File "framework.dart", line 4800, col 11, in StatefulElement.performRebuild
  File "framework.dart", line 4343, col 5, in Element.rebuild
  File "framework.dart", line 4606, col 5, in ComponentElement._firstBuild
  File "framework.dart", line 4791, col 11, in StatefulElement._firstBuild
  File "framework.dart", line 4601, col 5, in ComponentElement.mount
  File "framework.dart", line 3569, col 14, in Element.inflateWidget
  File "framework.dart", line 3327, col 18, in Element.updateChild
  File "framework.dart", line 4652, col 16, in ComponentElement.performRebuild
  File "framework.dart", line 4343, col 5, in Element.rebuild
  File "framework.dart", line 4606, col 5, in ComponentElement._firstBuild
  File "framework.dart", line 4601, col 5, in ComponentElement.mount
  File "framework.dart", line 3569, col 14, in Element.inflateWidget
  File "framework.dart", line 3327, col 18, in Element.updateChild
  File "framework.dart", line 6118, col 14, in SingleChildRenderObjectElement.mount
  File "framework.dart", line 3569, col 14, in Element.inflateWidget
  File "framework.dart", line 3327, col 18, in Element.updateChild
  File "framework.dart", line 4652, col 16, in ComponentElement.performRebuild
  File "framework.dart", line 4343, col 5, in Element.rebuild
  File "framework.dart", line 4606, col 5, in ComponentElement._firstBuild
  File "framework.dart", line 4601, col 5, in ComponentElement.mount
  File "framework.dart", line 3569, col 14, in Element.inflateWidget
  File "framework.dart", line 3327, col 18, in Element.updateChild
  File "framework.dart", line 6118, col 14, in SingleChildRenderObjectElement.mount
  File "framework.dart", line 3569, col 14, in Element.inflateWidget
  File "framework.dart", line 3327, col 18, in Element.updateChild
  File "framework.dart", line 6118, col 14, in SingleChildRenderObjectElement.mount
  File "framework.dart", line 3569, col 14, in Element.inflateWidget
  File "framework.dart", line 3327, col 18, in Element.updateChild
  File "framework.dart", line 4652, col 16, in ComponentElement.performRebuild
  File "framework.dart", line 4800, col 11, in StatefulElement.performRebuild
  File "framework.dart", line 4343, col 5, in Element.rebuild
  File "framework.dart", line 4606, col 5, in ComponentElement._firstBuild
  File "framework.dart", line 4791, col 11, in StatefulElement._firstBuild
  File "framework.dart", line 4601, col 5, in ComponentElement.mount
  File "framework.dart", line 3569, col 14, in Element.inflateWidget
  File "framework.dart", line 6236, col 32, in MultiChildRenderObjectElement.mount
  File "framework.dart", line 3569, col 14, in Element.inflateWidget
  File "framework.dart", line 3327, col 18, in Element.updateChild
  File "framework.dart", line 4652, col 16, in ComponentElement.performRebuild
  File "framework.dart", line 4800, col 11, in StatefulElement.performRebuild
  File "framework.dart", line 4343, col 5, in Element.rebuild
  File "framework.dart", line 4606, col 5, in ComponentElement._firstBuild
  File "framework.dart", line 4791, col 11, in StatefulElement._firstBuild
  File "framework.dart", line 4601, col 5, in ComponentElement.mount
  File "framework.dart", line 3569, col 14, in Element.inflateWidget
  File "framework.dart", line 3327, col 18, in Element.updateChild
  File "framework.dart", line 6118, col 14, in SingleChildRenderObjectElement.mount
  File "framework.dart", line 3569, col 14, in Element.inflateWidget
  File "framework.dart", line 3327, col 18, in Element.updateChild
  File "framework.dart", line 4652, col 16, in ComponentElement.performRebuild
  File "framework.dart", line 4800, col 11, in StatefulElement.performRebuild
  File "framework.dart", line 4343, col 5, in Element.rebuild
  File "framework.dart", line 4606, col 5, in ComponentElement._firstBuild
  File "framework.dart", line 4791, col 11, in StatefulElement._firstBuild
  File "framework.dart", line 4601, col 5, in ComponentElement.mount
  File "framework.dart", line 3569, col 14, in Element.inflateWidget
  File "framework.dart", line 3327, col 18, in Element.updateChild
  File "framework.dart", line 6118, col 14, in SingleChildRenderObjectElement.mount
  File "framework.dart", line 3569, col 14, in Element.inflateWidget
  File "framework.dart", line 3327, col 18, in Element.updateChild
  File "framework.dart", line 4652, col 16, in ComponentElement.performRebuild
  File "framework.dart", line 4800, col 11, in StatefulElement.performRebuild
  File "framework.dart", line 4343, col 5, in Element.rebuild
  File "framework.dart", line 4606, col 5, in ComponentElement._firstBuild
  File "framework.dart", line 4791, col 11, in StatefulElement._firstBuild
  File "framework.dart", line 4601, col 5, in ComponentElement.mount
  File "framework.dart", line 3569, col 14, in Element.inflateWidget
  File "framework.dart", line 3327, col 18, in Element.updateChild
  File "framework.dart", line 6118, col 14, in SingleChildRenderObjectElement.mount
  File "framework.dart", line 3569, col 14, in Element.inflateWidget
  File "framework.dart", line 3327, col 18, in Element.updateChild
  File "framework.dart", line 4652, col 16, in ComponentElement.performRebuild
  File "framework.dart", line 4800, col 11, in StatefulElement.performRebuild
  File "framework.dart", line 4343, col 5, in Element.rebuild
  File "framework.dart", line 4606, col 5, in ComponentElement._firstBuild
  File "framework.dart", line 4791, col 11, in StatefulElement._firstBuild
  File "framework.dart", line 4601, col 5, in ComponentElement.mount
  File "framework.dart", line 3569, col 14, in Element.inflateWidget
  File "framework.dart", line 3327, col 18, in Element.updateChild
  File "framework.dart", line 4652, col 16, in ComponentElement.performRebuild
  File "framework.dart", line 4343, col 5, in Element.rebuild
  File "framework.dart", line 4606, col 5, in ComponentElement._firstBuild
  File "framework.dart", line 4601, col 5, in ComponentElement.mount
  File "framework.dart", line 3569, col 14, in Element.inflateWidget
  File "framework.dart", line 3327, col 18, in Element.updateChild
  File "framework.dart", line 4652, col 16, in ComponentElement.performRebuild
  File "framework.dart", line 4800, col 11, in StatefulElement.performRebuild
  File "framework.dart", line 4343, col 5, in Element.rebuild
  File "framework.dart", line 4606, col 5, in ComponentElement._firstBuild
  File "framework.dart", line 4791, col 11, in StatefulElement._firstBuild
  File "framework.dart", line 4601, col 5, in ComponentElement.mount
  File "framework.dart", line 3569, col 14, in Element.inflateWidget
  File "framework.dart", line 3327, col 18, in Element.updateChild
  File "framework.dart", line 6118, col 14, in SingleChildRenderObjectElement.mount
  File "framework.dart", line 3569, col 14, in Element.inflateWidget
  File "framework.dart", line 3327, col 18, in Element.updateChild
  File "framework.dart", line 4652, col 16, in ComponentElement.performRebuild
  File "framework.dart", line 4343, col 5, in Element.rebuild
  File "framework.dart", line 4606, col 5, in ComponentElement._firstBuild
  File "framework.dart", line 4601, col 5, in ComponentElement.mount
  File "framework.dart", line 3569, col 14, in Element.inflateWidget
  File "framework.dart", line 3327, col 18, in Element.updateChild
  File "framework.dart", line 6118, col 14, in SingleChildRenderObjectElement.mount
  File "framework.dart", line 3569, col 14, in Element.inflateWidget
  File "framework.dart", line 3327, col 18, in Element.updateChild
  File "framework.dart", line 4652, col 16, in ComponentElement.performRebuild
  File "framework.dart", line 4800, col 11, in StatefulElement.performRebuild
  File "framework.dart", line 4343, col 5, in Element.rebuild
  File "framework.dart", line 4606, col 5, in ComponentElement._firstBuild
  File "framework.dart", line 4791, col 11, in StatefulElement._firstBuild
  File "framework.dart", line 4601, col 5, in ComponentElement.mount
  File "framework.dart", line 3569, col 14, in Element.inflateWidget
  File "framework.dart", line 3327, col 18, in Element.updateChild
  File "framework.dart", line 4652, col 16, in ComponentElement.performRebuild
  File "framework.dart", line 4343, col 5, in Element.rebuild
  File "framework.dart", line 4606, col 5, in ComponentElement._firstBuild
  File "framework.dart", line 4601, col 5, in ComponentElement.mount
  File "framework.dart", line 3569, col 14, in Element.inflateWidget
  File "framework.dart", line 3327, col 18, in Element.updateChild
  File "framework.dart", line 4652, col 16, in ComponentElement.performRebuild
  File "framework.dart", line 4800, col 11, in StatefulElement.performRebuild
  File "framework.dart", line 4343, col 5, in Element.rebuild
  File "framework.dart", line 4606, col 5, in ComponentElement._firstBuild
  File "framework.dart", line 4791, col 11, in StatefulElement._firstBuild
  File "framework.dart", line 4601, col 5, in ComponentElement.mount
  File "framework.dart", line 3569, col 14, in Element.inflateWidget
  File "framework.dart", line 3327, col 18, in Element.updateChild
  File "framework.dart", line 4652, col 16, in ComponentElement.performRebuild
  File "framework.dart", line 4343, col 5, in Element.rebuild
  File "framework.dart", line 4606, col 5, in ComponentElement._firstBuild
  File "framework.dart", line 4601, col 5, in ComponentElement.mount
  File "framework.dart", line 3569, col 14, in Element.inflateWidget
  File "framework.dart", line 3327, col 18, in Element.updateChild
  File "framework.dart", line 6118, col 14, in SingleChildRenderObjectElement.mount
  File "framework.dart", line 3569, col 14, in Element.inflateWidget
  File "framework.dart", line 3327, col 18, in Element.updateChild
  File "framework.dart", line 4652, col 16, in ComponentElement.performRebuild
  File "framework.dart", line 4343, col 5, in Element.rebuild
  File "framework.dart", line 4606, col 5, in ComponentElement._firstBuild
  File "framework.dart", line 4601, col 5, in ComponentElement.mount
  File "framework.dart", line 3569, col 14, in Element.inflateWidget
  File "framework.dart", line 3327, col 18, in Element.updateChild
  File "framework.dart", line 4652, col 16, in ComponentElement.performRebuild
  File "framework.dart", line 4800, col 11, in StatefulElement.performRebuild
  File "framework.dart", line 4343, col 5, in Element.rebuild
  File "framework.dart", line 4606, col 5, in ComponentElement._firstBuild
  File "framework.dart", line 4791, col 11, in StatefulElement._firstBuild
  File "framework.dart", line 4601, col 5, in ComponentElement.mount
  File "framework.dart", line 3569, col 14, in Element.inflateWidget
  File "framework.dart", line 3327, col 18, in Element.updateChild
  File "framework.dart", line 6118, col 14, in SingleChildRenderObjectElement.mount
  File "framework.dart", line 3569, col 14, in Element.inflateWidget
  File "framework.dart", line 3327, col 18, in Element.updateChild
  File "framework.dart", line 4652, col 16, in ComponentElement.performRebuild
  File "framework.dart", line 4343, col 5, in Element.rebuild
  File "framework.dart", line 4606, col 5, in ComponentElement._firstBuild
  File "framework.dart", line 4601, col 5, in ComponentElement.mount
  File "framework.dart", line 3569, col 14, in Element.inflateWidget
  File "framework.dart", line 3327, col 18, in Element.updateChild
  File "framework.dart", line 4652, col 16, in ComponentElement.performRebuild
  File "framework.dart", line 4343, col 5, in Element.rebuild
  File "framework.dart", line 4606, col 5, in ComponentElement._firstBuild
  File "framework.dart", line 4601, col 5, in ComponentElement.mount
  File "framework.dart", line 3569, col 14, in Element.inflateWidget
  File "framework.dart", line 3327, col 18, in Element.updateChild
  File "framework.dart", line 4652, col 16, in ComponentElement.performRebuild
  File "framework.dart", line 4800, col 11, in StatefulElement.performRebuild
  File "framework.dart", line 4343, col 5, in Element.rebuild
  File "framework.dart", line 4606, col 5, in ComponentElement._firstBuild
  File "framework.dart", line 4791, col 11, in StatefulElement._firstBuild
  File "framework.dart", line 4601, col 5, in ComponentElement.mount
  File "framework.dart", line 3569, col 14, in Element.inflateWidget
  File "framework.dart", line 3327, col 18, in Element.updateChild
  File "framework.dart", line 5705, col 32, in RenderObjectElement.updateChildren
  File "framework.dart", line 6246, col 17, in MultiChildRenderObjectElement.update
  File "framework.dart", line 3314, col 15, in Element.updateChild
  File "framework.dart", line 4652, col 16, in ComponentElement.performRebuild
  File "framework.dart", line 4800, col 11, in StatefulElement.performRebuild
  File "framework.dart", line 4343, col 5, in Element.rebuild
  File "framework.dart", line 4832, col 5, in StatefulElement.update
  File "framework.dart", line 3314, col 15, in Element.updateChild
  File "framework.dart", line 4652, col 16, in ComponentElement.performRebuild
  File "framework.dart", line 4343, col 5, in Element.rebuild
  File "framework.dart", line 4987, col 5, in ProxyElement.update
  File "inherited_notifier.dart", line 183, col 11, in _InheritedNotifierElement.update
  File "framework.dart", line 3314, col 15, in Element.updateChild
  File "framework.dart", line 6125, col 14, in SingleChildRenderObjectElement.update
  File "framework.dart", line 3314, col 15, in Element.updateChild
  File "framework.dart", line 4652, col 16, in ComponentElement.performRebuild
  File "framework.dart", line 4800, col 11, in StatefulElement.performRebuild
  File "framework.dart", line 4343, col 5, in Element.rebuild
  File "framework.dart", line 4832, col 5, in StatefulElement.update
  File "framework.dart", line 3314, col 15, in Element.updateChild
  File "framework.dart", line 6125, col 14, in SingleChildRenderObjectElement.update
  File "framework.dart", line 3314, col 15, in Element.updateChild
  File "framework.dart", line 6125, col 14, in SingleChildRenderObjectElement.update
  File "framework.dart", line 3314, col 15, in Element.updateChild
  File "framework.dart", line 4652, col 16, in ComponentElement.performRebuild
  File "framework.dart", line 4343, col 5, in Element.rebuild
  File "framework.dart", line 4708, col 5, in StatelessElement.update
  File "framework.dart", line 3314, col 15, in Element.updateChild
  File "framework.dart", line 4652, col 16, in ComponentElement.performRebuild
  File "framework.dart", line 4343, col 5, in Element.rebuild
  File "framework.dart", line 4987, col 5, in ProxyElement.update
  File "framework.dart", line 3314, col 15, in Element.updateChild
  File "framework.dart", line 4652, col 16, in ComponentElement.performRebuild
  File "framework.dart", line 4800, col 11, in StatefulElement.performRebuild
  File "framework.dart", line 4343, col 5, in Element.rebuild
  File "framework.dart", line 2730, col 33, in BuildOwner.buildScope
  File "binding.dart", line 913, col 20, in WidgetsBinding.drawFrame
  File "binding.dart", line 302, col 5, in RendererBinding._handlePersistentFrameCallback
  File "binding.dart", line 1117, col 15, in SchedulerBinding._invokeFrameCallback
  File "binding.dart", line 1055, col 9, in SchedulerBinding.handleDrawFrame
  File "binding.dart", line 971, col 5, in SchedulerBinding._handleDrawFrame
  File "zone.dart", line 1190, col 13, in _rootRun
  File "zone.dart", line 1093, col 19, in _CustomZone.run
  File "zone.dart", line 997, col 7, in _CustomZone.runGuarded
  File "hooks.dart", line 251, col 10, in _invoke
  File "hooks.dart", line 209, col 3, in _drawFrame

while the detailedMessage looks like this
══╡ EXCEPTION CAUGHT BY WIDGETS LIBRARY ╞════════════════════════
The following assertion was thrown building Builder(dirty):
A build function returned null.
The offending widget is:
  Builder
Build functions must never return null.
To return an empty space that causes the building widget to fill
available room, return "Container()". To return an empty space
that takes as little room as possible, return "Container(width:
0.0, height: 0.0)".

The relevant error-causing widget was:
  Builder
  file:///Users/jonas/Documents/projects/sentry-dart/flutter/example/lib/scaffold_with_ui_error.dart:36:22

When the exception was thrown, this was the stack:
#0      debugWidgetBuilderValue.<anonymous closure> (package:flutter/src/widgets/debug.dart:302:7)
#1      debugWidgetBuilderValue (package:flutter/src/widgets/debug.dart:323:4)
#2      ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4632:7)
#3      Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
#4      ComponentElement._firstBuild (package:flutter/src/widgets/framework.dart:4606:5)
#5      ComponentElement.mount (package:flutter/src/widgets/framework.dart:4601:5)
...     Normal element mounting (4 frames)
#9      Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
#10     MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6236:32)
...     Normal element mounting (22 frames)
#32     Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
#33     MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6236:32)
...     Normal element mounting (100 frames)
#133    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
#134    MultiChildRenderObjectElement.mount (package:flutter/src/widgets/framework.dart:6236:32)
...     Normal element mounting (136 frames)
#270    Element.inflateWidget (package:flutter/src/widgets/framework.dart:3569:14)
#271    Element.updateChild (package:flutter/src/widgets/framework.dart:3327:18)
#272    RenderObjectElement.updateChildren (package:flutter/src/widgets/framework.dart:5705:32)
#273    MultiChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6246:17)
#274    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
#275    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
#276    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
#277    Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
#278    StatefulElement.update (package:flutter/src/widgets/framework.dart:4832:5)
#279    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
#280    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
#281    Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
#282    ProxyElement.update (package:flutter/src/widgets/framework.dart:4987:5)
#283    _InheritedNotifierElement.update (package:flutter/src/widgets/inherited_notifier.dart:183:11)
#284    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
#285    SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6125:14)
#286    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
#287    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
#288    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
#289    Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
#290    StatefulElement.update (package:flutter/src/widgets/framework.dart:4832:5)
#291    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
#292    SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6125:14)
#293    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
#294    SingleChildRenderObjectElement.update (package:flutter/src/widgets/framework.dart:6125:14)
#295    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
#296    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
#297    Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
#298    StatelessElement.update (package:flutter/src/widgets/framework.dart:4708:5)
#299    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
#300    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
#301    Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
#302    ProxyElement.update (package:flutter/src/widgets/framework.dart:4987:5)
#303    Element.updateChild (package:flutter/src/widgets/framework.dart:3314:15)
#304    ComponentElement.performRebuild (package:flutter/src/widgets/framework.dart:4652:16)
#305    StatefulElement.performRebuild (package:flutter/src/widgets/framework.dart:4800:11)
#306    Element.rebuild (package:flutter/src/widgets/framework.dart:4343:5)
#307    BuildOwner.buildScope (package:flutter/src/widgets/framework.dart:2730:33)
#308    WidgetsBinding.drawFrame (package:flutter/src/widgets/binding.dart:913:20)
#309    RendererBinding._handlePersistentFrameCallback (package:flutter/src/rendering/binding.dart:302:5)
#310    SchedulerBinding._invokeFrameCallback (package:flutter/src/scheduler/binding.dart:1117:15)
#311    SchedulerBinding.handleDrawFrame (package:flutter/src/scheduler/binding.dart:1055:9)
#312    SchedulerBinding._handleDrawFrame (package:flutter/src/scheduler/binding.dart:971:5)
#316    _invoke (dart:ui/hooks.dart:251:10)
#317    _drawFrame (dart:ui/hooks.dart:209:3)
(elided 3 frames from dart:async)

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

Note that the detailedMessage is once more, more helpful than the stacktrace.

@ueman so would you say that we should log the errorDetails.toString() every time? not sure how big messages can be, we have a limit of 200kb per event btw (iirc).
I believe the stack trace should be either better than the message or at least equal otherwise I'd consider also raising an issue to the Flutter team, otherwise it'd be hard for error monitoring tools to find out the best approach for every type of error.

@ueman ok I found out:
Flutter adds some special chars that break our current envelope parsing.
      var detailedMessage = errorDetails.toString();
      detailedMessage = errorDetails.toString().replaceAll('◢', '-');
      detailedMessage = detailedMessage.replaceAll('◤', '-');
      detailedMessage = detailedMessage.replaceAll('═', '=');
      detailedMessage = detailedMessage.replaceAll('╡', '|');
      detailedMessage = detailedMessage.replaceAll('╞', '|');

would be a workaround, for now, I'll check whether I have to fix this, either on sentry-android or sentry-dart.

Hm, I'm not sure. Previously I just reported errorDetails.toString() and that worked just fine for me.
The FlutterErrorDetails.toString() can take a DiagnosticLevel. It could be enough to just call errorDetails.toString(minLevel: DiagnosticLevel.debug) or so. Also the DiagnosticLevel docs say the following:

In release mode, this level may not have any effect, as diagnostics in release mode are compacted or truncated to reduce binary size.

Raising an issue to the Flutter team would be helpful, they should know how to get good error messages.
I think the stacktrace or error message of FlutterErrors should always include
The relevant error-causing widget was:
  Builder
  lib/scaffold_with_ui_error.dart:36:22

as this is really helpful.

https://github.com/getsentry/sentry-dart/releases/tag/4.0.1
I'll consider the improvements also discussed here in another PR, thanks for raising this @ueman


sonarqubescan

Issue Description (Mandatory)
How to execute a sonar scan ?
Documentation says:

https://github.com/SAP/cloud-s4-sdk-pipeline/blob/master/configuration.md#sonarqubescan
The pipeline is not executing the stage: sonarqubescan
Even if I configure sonarExecuteScan it's getting skipped.
Log Output (Mandatory)
Stage "SonarQube Scan" skipped due to when conditional

Hi @T1mey,
I assume you're not on the productive branch.
Two options:
Either push to your productive branch and it will be executed.
Or enable runInAllBranches. Note that this requires the commercial version of sonar qube.
I think we can make this more clear in the docs. See code if you're interested in the implementation.
Best,
Florian

Found the invocation problem... did not had sonarQubeScan in stages.. was in steps.
Thanks for info about sonar version. I assume that we have only non commercial... must check this.
Have another problem downloading the binaries
Execution failed - Download of sonar-scanner failed: HTTP GET request to https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-<IP_ADDRESS>2-linux.zip failed with error: error calling https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-<IP_ADDRESS>2-linux.zip: Get https://binaries.sonarsource.com/Distribution/sonar-scanner-cli/sonar-scanner-cli-<IP_ADDRESS>2-linux.zip: dial tcp: lookup binaries.sonarsource.com on <IP_ADDRESS>:53: no such host

I'm not too familiar with this step as it was developed in another team, but it seems to use the go http client, cf if you're interested in the implementation.
You might try using a sonar docker image which avoids the need to download the binaries as part of your pipeline.
stages:
  sonarQubeScan:
    dockerImage: sonarsource/sonar-scanner-cli:latest

Try this config. Be aware that this contains a very outdated version of node.js if this is an issue for you.
Hope this helps.

Thanks for the hint.
Is the go client using a proxy or can I specify one over params?
Will try the docker image first. Maybe need to build an own one because of selfsigned certs in chain.
What I did'nt get if I have to configure stage sonarQubeScan and step exexuteSonarScan ?!?

@fwilhe Seems that loading certs is somwhow suported but not documented:

@fwilhe Seems that loading certs is somehow suported but not documented:

I can't comment on that, I'm not familiar with that code. Where is this from?

customTlsCertificateLinks: List of comma-separated download links to custom TLS certificates. This is required to ensure trusted connections to instances with custom certificates.
https://sap.github.io/jenkins-library/steps/sonarExecuteScan/

I think that is the only documentation

What I did'nt get if I have to configure stage sonarQubeScan and step exexuteSonarScan ?!?

This might depend on the individual option. Mostly this is due to historic reasons, and we try to harmonize it with project "Piper" as far as possible.

I created an own docker image and was able to upload to sonarqube.
As we have installed the OWASP dependency plugin in sonarqube I would like to invoke the dependency check file generation. One option is to use maven for this.
mvn clean package dependency-check:aggregate
In my opinion not the best option because we need it for NodeJS and maybe other languages as well.
Is there any way to invoke the dependency check tool in a common way?

Is there any way to invoke the dependency check tool in a common way?

I'm not sure if I understand what you need. Some way to abstract maven/npm? "common" between what?

To be able to identify 3rd party libs which have vulnerabilities we would like to use

Sonarqube has a plugin installed which is able to visualize them and the sonar-scanner-cli is able to upload it. Therfore some files have to be generated before the sonar-scanner-cli runs in the pipeline.
Options would be (as I understand it)

Dependency-Check is available as a:
Command-line utility (as docker)
Ant Task
Gradle Plugin
Jenkins Plugin
Maven Plugin
SonarQube Plugin

see

We currently don't have support for that, and I don't know the tool well enough to say anything about it. You might try a stage level extension for the build stage where you run the cli tool, or the maven plugin.
Very roughly (and untested(!)), this might look similar to something like this
.pipeline/extensions/build.groovy
void call(Map params) {
  params.originalStage()

  sh 'sonar-cli.sh' // for a shell script

  // for a maven plugin
    mavenExecute(
        script: parameters.script,
        flags: '--batch-mode',
        pomPath: 'application/pom.xml',
        m2Path: s4SdkGlobals.m2Directory,
        goals: ['dependency-check:aggregate'],
    )
}
return this

I will try the stage level extension later. For now I have it nearly running with maven.
Just one piece is missing. My generated files are not stashed for sonar. I tried this:
stashIncludes: ['buildResult': '**/target/*.jar, **/*.mtar, checkmarx:**/*.js, **/*.scala, **/*.py, **/*.go, **/*.d, **/*.di, **/*.xml, **/*.html', 'classFiles': '**/target/classes/**/*.class, **/target/test-classes/**/*.class', 'sonar':'**/jacoco*.exec, **/sonar-project.properties, dependency-check-report.*']
But I'm struggeling with the syntax.
Docu just says:

Docu just says:

I don't know which documentation you refer to. Also what you're currently trying to do is not as of now a feature we support. Sorry, but I don't even know what you're trying to do, which pipeline you're using. I can't offer support for that.

The piper docu for step pipelineStashFilesAfterBuild
https://sap.github.io/jenkins-library/steps/pipelineStashFilesAfterBuild/

We are currently not using pipelineStashFilesAfterBuild in our pipeline. Furthermore, you would also have to take care about unstashing the files in the sonar qube stage.
As an alternative you could also extend the sonar qube stage and might not have to deal with stashing. However, I am not sure if all required files are there.


missing file: bootstrap.min.css

With version 2.2 I'm getting this error when trying to open the file (MacOS), was working on previous versions.

Yes I use Bootstrap on my page, yes the table have some images (but it was working before)

try adding bootstrap cdn on excel function, just before the end of the Head tag

like this:
a = window.btoa(window.unescape(encodeURIComponent(l(' \x3c!--[if gte mso 9]>{worksheet}<![endif]--\x3e</head>{table}', {

Bootstrap is not related with this library.


comma_first does not pull comma between end of line and comment to next line

Before Format:
changeCollection.add({
    name: 'Jonathan', // New line inserted after this line on every save
    age: 25
});

After Format:
changeCollection.add({
    name: 'Jonathan', // New line inserted after this line on every save
    age: 25
});

Expected Behavior:
changeCollection.add({
    name: 'Jonathan' // New line inserted after this line on every save
    , age: 25
});

We only do whitespace modification at this time.  This would involve reordering tokens - moving the comma after the comment.


Make a gem

This could be easier to use and install if it was a gem.

Fixed https://rubygems.org/gems/reflog-review


API for threshold based retries

Description
As end to end policy may effect the availability due to its faster timeouts, we need strategy to improve availability when endto end timeout is specified.
This PR introduces threshold based retry execution of the requests to improve availability when end to end timeout is specified.
API :
This needs

list of regions to be retried on
Time when this retry has to be triggered

List of regions to be excluded for the request/retries. Example "East US" or "East US, West US" These regions will be excluded from the preferred regions list when executing multi region retries.
The idea here is to provide an option to the user to give a list of regions that they dont want a request to be retried on. This list ideally has to be a sublist of the preferred regions.
CosmosItemRequestOptions#setExcludeRegions

CosmosItemRequestOptions options = new CosmosItemRequestOptions();
options.setExcludeRegions(List.of("East US", "West US");

exclude regions can be used in two ways.

By setting exclude regions, the request would now be routed to the first effective region only (see below). So you can use this  to hint a request to go to a particular region.
Example scneario:
Preferred regions: regionA, regionB, regionC

Have a request going to regionA with endToEndTimeout of 500ms.
Once the request fails, you can send a new request with regionA in exclude list.
Now the request only goes to regionB and skips regionA

This can help the scenarios where the user wants to specifically try the request on a particular region.
Note that this works only when EndToEndTimeoutPolicy is set.

You can set an availability strategy on CosmosEndToEndOperationLatencyPolicy to get a better availability in cases when the original request takes very long to execute.

This PR introduces a strategy called ThresholdBasedAvailabilityStrategy
flowchart TD
    A[Request] -->B(Base Request with timeout policy)
    B --> Threshold{timespent < speculativeThreshold}
    Threshold -->| Yes | C{success <= EndToEndTimeout}
    Threshold --> | No | RemoteProcessing[Start requests to other regions in effective region list at T + Tstep*step-1]
    C -->|Yes| D[Return result]
    C -->|No response| E[Cancel and timeout]
    C --> |error response| F[Retry Flow]
    F --> G{timespent < EndToEndTimeout}
    G --> |No| E
    G --> |Yes| F

ThresholdBasedAvailabilityStrategy contains the following parameters
threshold = Threshold Duration in ms
thresholdStep = Threshold step in ms

Threshold is the duration in ms before which if the original request doesnt respond, we issue a request to next region from the list of effective regions.
Effective regions are computed as below. And retries happen only on available effective regions
effectiveRegions = (preferredRegions - excludeRegions)

AvailabilityStrategy thresholdStrategy =
   new ThresholdBasedAvailabilityStrategy( /*threshold:*/ Duration.ofMillis(300),
                 /*thresholdStep:*/ Duration.ofMillis(100));

Example:
Prefrerred regions: "East US 1", "East US 2", "Central US", "West US 2"
Exclude list: "East US 2"
number of Regions = 2
Effective regions = "East US 1", "Central US"
How to use this ?
CosmosEndToEndOperationLatencyPolicyConfigBuilder builder
   = new CosmosEndToEndOperationLatencyPolicyConfigBuilder(/*isEnabled:*/ true,
               /*endToEndTimeout:*/ Duration.ofMillis(2000));
builder.setAvaiabilityStrategy(thresholdStrategy );
CosmosEndToEndOperationLatencyPolicy policyConfig = builder.build();

Enabling it on the client
CosmosAsyncClient cosmosAsyncClient = new CosmosClientBuilder()
    .endpoint(END_POINT)
    .key(KEY)
    .endToEndOperationLatencyPolicyConfig(policyConfig)
    .buildAsyncClient();

This can be enabled or disabled per operation

CosmosItemRequestOptions requestOptions = new CosmosItemRequestOptions();
requestOptions.setCosmosEndToEndOperationLatencyPolicyConfig(policyConfig);
cosmosAsyncClient.getDatabase(DATABASE)
            .getContainer(CONTAINER)
            .readItem("id1", new PartitionKey("id1"), requestOptions, Person.class).block();

Per operation option always overrides the client option.
How does this work?
Initial execution on the requested region starts at t0;
If no response has been received at t0 + threshold milliseconds, it starts another request on the first region from effectiveRegionList
if no response has been received at t0 + threshold+ threshold_step milliseconds, start another request on the region from the next region from effectiveRegionList
This continues only until the number that is set by the user in the options on the number of regions to request to.
Future:
There is a possibility of extending this to configure individual timeout and availability strategy for different kind of operations like point and non point operations
Possible API on the client
CosmosE2EPLatencyPolicyConfigs newGranularConfigs = new CosmosE2ELatencyPolicyConfigsBuilder()
.pointTimeoutConfig(CosmosEndToEndOperationLatencyPolicyConfige)
.queryTimeoutConfig (CosmosEndToEndOperationLatencyPolicyConfige)
.build();

cosmosClientBuilder.setEndToEndLatencyPolicyConfigs(newGranularConfigs);

All SDK Contribution checklist:

[ ] The pull request does not introduce [breaking changes]
[ ] CHANGELOG is updated for new features, bug fixes or other significant changes.
[ ] I have read the contribution guidelines.

General Guidelines and Best Practices

[ ] Title of the pull request is clear and informative.
[ ] There are a small number of commits, each of which have an informative message. This means that previously merged commits do not appear in the history of the PR. For more information on cleaning up the commits in your PR, see this page.

Testing Guidelines

[ ] Pull request includes test coverage for the included changes.

API change check
APIView has identified API level changes in this PR and created following API reviews.
azure-cosmos

/azp run java - cosmos - tests

/azp run java - cosmos - tests

/azp run java - cosmos - tests

/azp run java - cosmos - tests

/check-enforcer override


"multipart or not" information is useful in listing manifests in a bucket (inspector)

And... First Block column is not so useful but consumes one Riak KV GET. It should be removed.

Maybe the First Block not existing indicates being multipart or not.


[Refactor] Major API Refactor

This PR refactors the architecture of XGrammar to prepare for release.

#71


chore: expose ws port in fullnode's docker compose file

Hi, I thought it would make sense to also port map the websocket API in the reference docker-compose.yaml for the fullnode -- I was just debugging why my node was refusing websocket connections 😄

Closing as stale (and already implemented in the docker-compose.yml)


Trying out something

Removing the --no-cache from the api and actions will make things faster to test

I would like to compare what microdnf repolist shows when building locally versus when building via app-interface.
Here's what I see when building locally:
STEP 5/5: RUN microdnf repolist

(microdnf:1): librhsm-WARNING **: 14:40:55.737: Found 0 entitlement certificates

(microdnf:1): librhsm-WARNING **: 14:40:55.739: Found 0 entitlement certificates
repo id                      repo name
pgdg-common                  PostgreSQL common RPMs for RHEL / Rocky / AlmaLinux 8 - x86_64
pgdg12                       PostgreSQL 12 for RHEL / Rocky / AlmaLinux 8 - x86_64
pgdg13                       PostgreSQL 13 for RHEL / Rocky / AlmaLinux 8 - x86_64
pgdg14

When building through app-interface:
10:04:12 STEP 5/5: RUN microdnf repolist
10:04:12 repo id                          repo name
10:04:12 pgdg-common                      PostgreSQL common RPMs for RHEL / Rocky / AlmaLinux 8 - x86_64
10:04:12 pgdg12                           PostgreSQL 12 for RHEL / Rocky / AlmaLinux 8 - x86_64
10:04:12 pgdg13                           PostgreSQL 13 for RHEL / Rocky / AlmaLinux 8 - x86_64
10:04:12 pgdg14                           PostgreSQL 14 for RHEL / Rocky / AlmaLinux 8 - x86_64
10:04:12 pgdg15                           PostgreSQL 15 for RHEL / Rocky / AlmaLinux 8 - x86_64
10:04:12 pgdg16                           PostgreSQL 16 for RHEL / Rocky / AlmaLinux 8 - x86_64
10:04:12 rhel-8-for-x86_64-appstream-rpms Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)
10:04:12 rhel-8-for-x86_64-baseos-rpms    Red Hat Enterprise Linux 8 for x86_64 - BaseOS (RPMs)
10:04:12 ubi-8-appstream-rpms             Red Hat Universal Base Image 8 (RPMs) - AppStream
10:04:12 ubi-8-baseos-rpms                Red Hat Universal Base Image 8 (RPMs) - BaseOS
10:04:12 ubi-8-codeready-builder-rpms     Red Hat Universal Base Image 8 (RPMs) - CodeReady Builder

This is what appears in our build environment
15:04:12 repo id                          repo name
15:04:12 pgdg-common                      PostgreSQL common RPMs for RHEL / Rocky / AlmaLinux 8 - x86_64
15:04:12 pgdg12                           PostgreSQL 12 for RHEL / Rocky / AlmaLinux 8 - x86_64
15:04:12 pgdg13                           PostgreSQL 13 for RHEL / Rocky / AlmaLinux 8 - x86_64
15:04:12 pgdg14                           PostgreSQL 14 for RHEL / Rocky / AlmaLinux 8 - x86_64
15:04:12 pgdg15                           PostgreSQL 15 for RHEL / Rocky / AlmaLinux 8 - x86_64
15:04:12 pgdg16                           PostgreSQL 16 for RHEL / Rocky / AlmaLinux 8 - x86_64
15:04:12 rhel-8-for-x86_64-appstream-rpms Red Hat Enterprise Linux 8 for x86_64 - AppStream (RPMs)
15:04:12 rhel-8-for-x86_64-baseos-rpms    Red Hat Enterprise Linux 8 for x86_64 - BaseOS (RPMs)
15:04:12 ubi-8-appstream-rpms             Red Hat Universal Base Image 8 (RPMs) - AppStream
15:04:12 ubi-8-baseos-rpms                Red Hat Universal Base Image 8 (RPMs) - BaseOS
15:04:12 ubi-8-codeready-builder-rpms     Red Hat Universal Base Image 8 (RPMs) - CodeReady Builder

I wonder if we need to use --refresh on the microdnf install command??  Or maybe we need to run microdnf clean??


[Feature Request] Auto Accept Requests or Invites

The ability to auto accept requests or invites from individual users, or perhaps, even utilizing the "Favorite Users" groups would be incredibly useful
Filters could be implemented too if context is desired, such as session type
this could be incredibly useful for anyone who uses No Hud, sleeps on orange, runs small personal events, or simply just don't want to bother
obviously making the feature easy to toggle off too as privacy matters

This would indeed be something nice to have x3

Autoaccepting your own invites would save me a few seconds if I want to switch lobbies, which I often do if there's no interesting Pug goers to talk to.

Autoaccepting your own invites would save me a few seconds if I want to switch lobbies, which I often do if there's no interesting Pug goers to talk to.

not possible VRCX cannot interact with the game client on your behalf vrcx can only access vrchat data through the output log and API.

Wouldn't that make OP's feature request impossible then?

Wouldn't that make OP's feature request impossible then?

no that is possible since its a request TO you that's sent through the API and then the request is sent back to the requester with a response. VRCX just has to respond to the request which is sent back to the requester of the invite, in the game client accepting an invite activates vrchat's flow manager and tells you to go to the instance.
when you get an invite in the feed its just letting you know, joining an instance requires either vrchat starting with a launch option or you accept the invite yourself.

but when you get a request invite you can either accept the request respond to it or delete it which sends out a response to that user, if you're a instance creator or moderator you can send out an accept

Wouldn't that make OP's feature request impossible then?

no that is possible since its a request TO you that's sent through the API and then the request is sent back to the requester with a response. VRCX just has to respond to the request which is sent back to the requester of the invite, in the game client accepting an invite activates vrchat's flow manager and tells you to go to the instance.
when you get an invite in the feed its just letting you know, joining an instance requires either vrchat starting with a launch option or you accept the invite yourself.
but when you get a request invite you can either accept the request respond to it or delete it which sends out a response to that user, if you're a instance creator or moderator you can send out an accept

interesting.ogg

There is already another program that can do this https://github.com/Raphiiko/OyasumiVR

To clarify, VRCX can access anything through vrchat's API and websocket that is accessible to a normal user, joining an instance is done through the games encrypted network called Photon which we don't nor will ever have access too, the only way for vrcx to put you into an instance currently is to close vrchat and then start it up again with a launch, the link natsumi just provided is for the original posters request of "Automatically accept invite requests on VRChat"


Add Concurrency Limit in CI

Follows what was done to address https://github.com/pypa/setuptools/issues/3093

Concurrenty

Thanks for filing this PR! Could you please fix this typo in the commit message: concurrency?

Thanks for filing this PR! Could you please fix this typo in the commit message: concurrency?

Haha thanks, fixed

Thanks! I see this is part of what @di suggested in his email to pypa-committers. While we're here, should we also disable builds on pushes to branches other than main, i.e.:
on:
  push:
    branches:
      - main
  pull_request:

(When I make a PR myself, I'll probably push the branch to this repo, because there's a redirect from takluyver/flit to pypa/flit so long as I don't fork it)

Sounds good, will follow up when I get back to keyboaard


Observable.FromAsync swallows errors

Problem:
It seems that errors thrown from an async/await method are swallowed instead of being received by the subscriber.
Example:
var evt = new AutoResetEvent(false);
Observable.FromAsync(TestAsync)
    .Subscribe(
        _ => "Next".Dump(),
        ex => $"Error {ex}".Dump(),
        _ => { "Completed".Dump(); evt.Set(); });
evt.WaitOne();

async ValueTask TestAsync(CancellationToken ct)
{
    await Task.Delay(TimeSpan.FromMilliseconds(1));
    throw new InvalidOperationException();
}

Expected output:
Error ....etc...
Completed

Actual output:
Completed

In this case, the Observable completes with failure, so the exception is reported in OnCompleted instead of OnErrorResume.


Echarts 2 - Legends overalp chart on resize

Version & Environment [版本及环境]

ECharts version [ECharts 版本]: echarts2
Browser version [浏览器类型和版本]: Google Chrome Version 55.0.2883.87/ Firefox Version 50.1.0
OS Version [操作系统类型和版本]: -

Good Afternoon,
We are using echarts2 js to show a dashboard with multiple charts.
On our charts we are displaying the legend for the chart series docked on top left:
legend: {       x: 'left',       y: 'top',       orient: 'vertical',       data: dataArr      },
Our expected behavior was that when the window was resized both legends and chart resized correctly.
When we resize the window, the legends will overlap the chart as seen below:

What can we do to prevent/solve this without having legends and charts on different containers?

"Responsive" is not supported in echarts2. I hope https://ecomfe.github.io/echarts-doc/public/en/tutorial.html#Responsive Mobile-End can help you, if echarts3 can be used in  your application.


Carriage return and newline characters in dump

When I try to load the CSV dump of the podcast in to sqlite3 on Ubuntu, I still get a few faulty lines. These lines belong to the following podcasts:
https://api.podcastindex.org/api/1.0/podcasts/byfeedid?id=194753
https://api.podcastindex.org/api/1.0/podcasts/byfeedid?id=878138
https://api.podcastindex.org/api/1.0/podcasts/byfeedid?id=1081531
I'm sure it has something to do with /r and /n characters and might very have to do with the platform you're working out. On my linux machine it seems that I can find the conflicting lines by searching in vim for /"\r\n[^\"]/
This is also why CSV is not really the format to hold such rich content from so many sources. CSV is by default working with comma's, quotes and newlines. But the last is defined differently on different platforms. It's not imposslibe, but again @daveajones, I'd gently recommend to distribute a mysqldump generated sql file. This will also help importing the values as their correct types, instead having to parse everything from string :)

Duplicate of https://github.com/Podcastindex-org/database/issues/5 – basically currently the export contains both \n and \r\n as newlines. When trying to import, I also get UTF8 errors like illegal byte sequence:
wget https://archive.org/download/podcastindex_dump/podcasts_2020-10-02.csv

sed -e 's/"",/,/g'  podcasts_2020-10-02.csv > podcasts_2020-10-02_fixed.csv
> sed: RE error: illegal byte sequence

iconv -f UTF-8 podcasts_2020-10-02.csv > /dev/null
> iconv: podcasts_2020-10-02.csv:172436:66: cannot convert

I would gladly dump the table as a SQL file with mysqldump, but it contains the itunesOwnerEmail column, which I do not want to distribute. I can’t see a clean way to dump everything but that column without jumping through a bunch of temporary table hoops, which is time consuming on a table that large.  Maybe I’ll just bite the bullet and do it anyway.

There is indeed not really a way around doing a dump that way without temporary tables. But perhaps if you don't want to distribute that column, it should be in another place.

One could write an own exporter tool, which correctly writes the defined export format. I personally would prefer JSON or maybe even CSV. But we can also write a simple shell script with fixes the current export, e.g. by replacing all /r/n with /n and then all /n with /r/n again. But then we would still have the unicode errors...

Karsten in the mastadon shot me a python export tool he uses.  He said it should preserve the charset and do well.  I'm going to give that a shot this next time.


Fixing vtctl and execute keyranges + test fix

Re-upload of Erez PR: https://github.com/youtube/vitess/pull/1370 + test fix to let Travis pass.

@guokeno0 and I talked about this, and we thought we didn't want to do that yet. However, if you two want to do it, I think that's enough for me, and I'd be happy to go along...

@alainjobart
Agreed, Erez suggested to me that he wants to change the MR behavior like this PR, then I suggested that we might need to fix vtctl as well. So if you are happy about this, then I think this should be good to go?

SGTM.


[Forge 1.20.1] Composters Can Compost Nothing With Ube's Delight Installed

With Ube's Delight installed, composters allow Players to get free bonemeal by right-clicking the block empty-handed. It treats an empty hand as a guaranteed compost stage, despite nothing being put into the block. Tested this with Ube's Delight installed, then removed to see if it was another mod causing this issue.
To Reproduce

Place down a Composter.
Interact with the Composter (right-click) to see what occurs.

Windows 10
Ube's Delight 0.2.0
Minecraft 1.20.1
Forge 47.3.0
Everything else seems to work fine with the exception of the Composter's unexpected behavior.

Really appreciate the testing and the bug report! This should definitely not be happening, I’ll ensure it gets fixed in the next update. Since it’s not a critical issue, I’ll wait a few days to see if any other feedback comes in before pushing the update. I’ll close this report once the update is released. Thank you!


Global state

So while trying to use sfgui I noticed my widgets remained as long as the instance was kept alive. It would be much nicer if the Display function took the root widget as an argument and only drew its children. Now I have to create new widgets on the fly and my own classes can't own pointers to its widgets since that means that they will always be drawn regardless. Also, global state is just bad... there is no need for this magic.
Also, is there a good reason we can't copy widgets?

I am not sure I understand what you are trying to achieve. Widgets are handles via shared pointers, and as long as your Window contains a root widget, it will be redrawn (and with it, all the children).
In my personal project, I move my window pointer in a lambda, and while the function is alive, so is the widget tree. I do not need to keep pointers on widgets. I would however keep a weak pointer of an element I need to edit on the fly. This way, I do not compromise my state.
I never had to use global state (which is symptomatic of bad design, I agree). Is there a specific example of what you are having trouble with?

Thanks for your reply! In my project I use a class I call "Scene" which is a collection of various gui elements and logic for typically a menu layout, and I transition between these scenes. The various scene load in resources and preprocess a lot of graphics on initialization. I tried using the Desktop as a root object for these scenes, one in each, and when they are initialized all the children add their sfgui objects recursively. Then I draw everything from scene, sfgui and sfml objects all the way down recursively. However... the draw function in sfgui is for the global SFGUI object and does not take a widget nor desktop object as a parameter. It simply draws all desktops currently in memory, even though it shouldn't have any knowledge of them.

Can you provide some minimal example, it's kind of hard to understand what you're doing.
If you're still referencing widgets e.g. through a box that was added to the desktop, then it will still be drawn. Note SFGUI is not an immediate mode GUI, but you need to actively maintain the state, i.e. add, remove or hide widgets.

Originally I thought just keeping Widgets alive would cause them to be drawn, even if I had removed them from the desktop object. However I can't seem to reproduce this anymore so I guess the error was on my part.
It still bothers me a bit though that I can't have several desktop objects with different widgets and select which to draw, but this I can work around fairly easily so I'll close the issue.


[structs] change package structutil to structs

some update:

change package structutil name to structs
change Field method mapValue to the inner method
add the zh-CN docs for Structs、Field

The English docs will come soon.

@m430 👍，will merge it.


Version on crates.io is broken

Hi there,
would it be possible to get a working package uploaded to crates.io?
cargo install elf2uf2-rs
    Updating crates.io index
  Installing elf2uf2-rs v1.2.0
error: failed to compile `elf2uf2-rs v1.2.0`, intermediate artifacts can be found at `/var/folders/8f/ch8vbtq93ldfc4vksdp5cw540000gn/T/cargo-installfWt7Ug`

Caused by:
  failed to select a version for the requirement `sysinfo = "^0.15.11"`
  candidate versions found which didn't match: 0.16.1, 0.16.0, 0.15.9, ...
  location searched: crates.io index
  required by package `elf2uf2-rs v1.2.0`

I have now published a new version hope this works for you!

Thanks a lot. Works for me now.


quality of defocus_debluring_single_pixel image output

I tried defocus_debluring_single_pixel  with https://github.com/swz30/Restormer and
(https://github.com/ofsoundof/GRL-Image-Restoration.))
Attached images.

couple.jpg => input image
couple_Single_Image_Defocus_Deblurring_Restormer.png  => restored by Restormer
couple_GRL-Image-Restoration.jpg => restored by GRL-Image-Restoration

Observed better quality with Restormer. But some quality issues with GRL-Image-Restoration.
Can you please confirm if we can get better image quality with this input image?

Hey @abhijiticelero what's the python command to test your own image on GRL?


[zephyr 1.14] Zephyr with privacy does not disconnect device with unresolvable RPA

Describe the bug
Remote performs pairing with Zephyr and distributes IRK. After disconnection it sets it's address to unresolvable RPA using invalid IRK (different than previously distributed).
According to the Core Specification 5.1 | Vol 3, Part C, 10.7.1 Privacy feature in a Peripheral
If the resolution procedure fails, then the Host shall disconnect with
the error code "Authentication failure", or perform the pairing procedure, or
perform the authentication procedure as defined in Section 10.3.

The test case GAP/PRIV/CONN/BI-01-C requires Zephyr to disconnect the link with “Authentication Failure” error code.
To Reproduce
Steps to reproduce the behavior:

Run GAP/PRIV/CONN/BI-01-C with btshell application

Expected behavior
Zephyr disconnects the link with "Authentication failure" error code
Impact
Failing GAP/PRIV/CONN/BI-01-C qualification test
Screenshots or console output
gap_priv_conn_bi-01-c.log
gap_priv_conn_bi-01-c.btsnoop.log
Environment (please complete the following information):

nrf52840

Additional context
Tested with below patches applied:
882504af8bc2458eb63a9487e0f3b70d8b11aff8
dd11270ae0c3fd8c3ed67f567676f298e196db7c
3260d6f2481ec5046c82979a099d6af8f1a1bf2f

This seems to me to imply that the there can only be one bond for a peripheral device. So this might be from the time where there was only allowed to have one peripheral connection.
Also this test belongs in the privacy 1.0 category, we should run 1.2.x privacy test cases.
I see no reason to demand authentication with an unresolved peer, it's up to the application if authentication is required for connections.
I suggest to close this with no action.

Closing because this is old privacy behavior.


OSD-19710: no snitch for limited support clusters unless supportex

This is a followup of the recent refactor done in configuration-anomaly-detection (https://github.com/openshift/configuration-anomaly-detection/pull/246).
With the most recent CAD refactor, we no longer need the workaround to handle "resolving" pagerduty alerts, thus don't need to route alerts for clusters that are in limited support through CAD. Therefore, we can disable the snitches for clusters that are in limited support. However, with the recent addition of support exceptions, we still need to handle alerts regardless of the cluster's support state.
This PR disables snitches for clusters that are in limited support unless they have a support exception, thus allowing a full transparent flow for CAD.
Tested scenarios on staging:

Out of limited support, no supportex =  dms integration
In limited support, no supportex = no dms integration
In limited support, supportex (ext-managed.openshift.io/support-exception cd label) = dms integration
Out of limited support, supportex (ext-managed.openshift.io/support-exception cd label) = dms integration

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Comparison is base (4c31fe3) 43.73% compared to head (f200647) 43.73%.

Additional details and impacted files

@@           Coverage Diff           @@
##           master     #174   +/-   ##
=======================================
  Coverage   43.73%   43.73%
=======================================
  Files          10       10
  Lines         830      830
=======================================
  Hits          363      363
  Misses        418      418
  Partials       49       49

/honk

/lgtm
/lgtm
/lgtm


Issue-841: Fix NPE in equals method of TypedGraphQLError

Related to Issue #841

Thank you for the PR!


Command PhaseScriptExecution failed with a nonzero exit code

Description
When I want to build my app on a local device or archive it I always receive the following error:
../node_modules/react-native/scripts/react-native-xcode.sh: line 164: 50404 Trace/BPT trap: 5
"$NODE_BINARY" $NODE_ARGS "$CLI_PATH" $BUNDLE_COMMAND $CONFIG_ARG --entry-file
"$ENTRY_FILE" --platform "$BUNDLE_PLATFORM" --dev
$DEV --reset-cache --bundle-output "$BUNDLE_FILE" --assets-dest
"$DEST" $EXTRA_ARGS $EXTRA_PACKAGER_ARGS

When I build in in the simulator there is no such issue
Version
0.66.4
Output of react-native info
OS: macOS 12.0.1
CPU: (8) x64 Apple M1
Memory: 22.28 MB / 16.00 GB
Shell: 5.8 - /bin/zsh
Binaries:
Node: 14.18.1 - /usr/local/bin/node
Yarn: 1.22.10 - /opt/homebrew/bin/yarn
npm: 6.14.15 - /usr/local/bin/npm
Watchman: 4.9.0 - /usr/local/bin/watchman
Managers:
CocoaPods: 1.11.2 - /usr/local/bin/pod
SDKs:
iOS SDK:
Platforms: DriverKit 21.0.1, iOS 15.0, macOS 12.0, tvOS 15.0, watchOS 8.0
Android SDK:
API Levels: 28, 29, 30
Build Tools: 28.0.3, 29.0.2, 30.0.3
System Images: android-30 | Google APIs Intel x86 Atom
Android NDK: Not Found
IDEs:
Android Studio: 4.1 AI-201.87<IP_ADDRESS>99119
Xcode: 13.1/13A1030d - /usr/bin/xcodebuild
Languages:
Java: 1.8.0_282 - /usr/bin/javac
npmPackages:
@react-native-community/cli: Not Found
react: 17.0.2 => 17.0.2
react-native: 0.66.4 => 0.66.4
react-native-macos: Not Found
npmGlobalPackages:
react-native: Not Found
Steps to reproduce

Create a fresh project with npx react-native init AwesomeProject

Snack, code example, screenshot, or link to a repository
No response

I'm getting the same!

Getting the same error on M1.

Hey. Found a solution here
Before that solution I tried same but without 4th step. Now it works.
1- Delete your Podfile.lock (I like to use the command '-rm -rf Podfile.lock' on the terminal for this)

2- Delete your Pods folder (I like to use the command '-rm -rf Pods' in the terminal for this)

3- Delete your .xcworkspace

4- Pod install

5- Clear your project into XCode> Product> Clean Build Folder

PS: I have been installing different RN versions with different templates via npx react-native init ... and nothing was working.

My computer has an M1 chip，I tried everything. The most important changes are as follows:
nvm unalias default
nvm alias default node


Configurable timeout

This fixes a bug where big flash sector erases would result in a timeout.

There's an error in the tests...

Yes, I'll address that; somehow it now has a merge conflict too. I'll investigate.
Thanks for pointing it out :)

This is undoing the anyhow error improvements, is that on purpose?

I expected this question; should have written a comment.
So I just removed it for the interface function that is used internally too, such that other functions can act on the timeout. I saw that this is the case for other functions too and thought this to be ok. Maybe I missunderstood.
I tried to add the context on the outside where the function is called.
Do you think it should be reverted (use anyhow everywhere)? Then we could not differentiate between a timeout and another internal error easily anymore :/

The error handling should probably be dependent on whether the error is meant to be actually reported down to the user or is an internal result. Even if anyhow is used it still is possible to figure out what the error actually was by downcasting it to a specific type.
The biggest usability problem I see at the moment is the weird layering of the errors; I think timeouts in particular can happen in a lot of different places and should a first class error sitting in the main error enum, so no matter where it occurs you can directly act on it, however that is tricky to implement if the return type is not anyhow::Result.
My idea was to break up the layering by using anyhow and improve the handling and feedback to the user at the expensive of slightly complicating the handling of specific errors like timeouts. I feel that simplifying the error handling and reporting in general by a huge margin is more important than the additional complexity to handle unhappy path (of course that applies only if the unhappy path can be properly handled).
In this particular case I'm a bit on the fence: On one hand a timeouts are very common and user facing, on the other hand I feel that probe-rs itself should be better in handling which also includes turning them into better user messages if they cannot be rectified internally in which case the use anyhow in those low-level functions is not needed.

Hmm then I think it is the right choice to not return an anyhow error from the halt() method.

@therealprof do you think it would be OK to merge this first and then we can work on improving the error layering later? It doesn't seem like removing a few anyhow errors in this PR makes a dramatic difference on the current error story, so we can work out a more unified approach in another PR if it makes sense.
Re the hardcoded timeouts, seems ok to have 100ms for things we really don't expect should take any longer; the main motivation for configurable timeouts is specifically around some operations that we know might take a long time like flash erasing, right?

@adamgreig Absolutely, I did not mean to block this. Sorry for not being clearer.

@therealprof I didn't understand it like you wanted to block it. But it's hard to get someones approval in timely fashion since everybody is so busy with lots of stuff (I don't blame anyone at all!). So not being able to merge myself sometimes adds a little frustration, making me feel like it's not making progress, so I ask again :) Hope that's ok ...

At least speaking for myself, please feel free to remind and poke if something's waiting, I wish I was better but that's usually what helps motivate me to review something!


Polymorphic records support on root level

It is possible to save descending nested records but not root level ones.
class B {}
class D1: B {}
class D2: B {}
class C {
    public B[] Bs { get; set; }
}
var bs = new [] { new D1(), new D2() };
var col = db.GetCollection<B>();
col.InsertBulk(bs); // (1)
var recoveredBs = col.FindAll(); // Type lost!! They will all be plain Bs

var c = new C {
    Bs = new [] { new D1(), new D2() }
};
var col2 = db.GetCollection<C>();
col2.Insert(c);
var recoveredC = col2.FindAll().First(); // Type not lost....Bs contains a D1 and a D2

I attach boundary tests with both cases.
polymorphic records.zip

Hi @scaredfinger, are you using mater branch version to test this? I made some changes on BsonMapper serializer to support root level _type. Take a look on this class:
https://github.com/mbdavid/LiteDB/blob/master/LiteDB/Serializer/Mapper/BsonMapper.Serialize.cs#L24

Hi there!! I've been using the stable version. Not testing again code. Will try to test against the code and let you know!!

Duplicate issue #71
@mbdavid it seems three duplicates more then enough to publish it as RC2 :)


Debian package to add log rotate

The log files could grow, a setting like this can be added to /etc/logrotate.d/influxdb to back them up:
/var/log/influxdb.log {
        weekly
        size 100M
        rotate 7
        compress
        delaycompress
        missingok
        notifempty
        create 644 influxdb influxdb
}

I am reluctant to modify people's installed software without their explicit permission. I feel documentation is the best approach for stuff like this.
http://influxdb.com/docs/v0.9/concepts/logs.html#using-logrotate

@otoolep this will add a config file, if someone decided not to use logrotate it will not be used. It is similar to the install package adding a unit to init.d. Alternatively something like logging_collector option of postgres can be used, but that requires implementation.

I understand it's a config file, but it they are already using logrotate it means the installation process is changing the configuration of software the user installed, and may not want InfluxDB to touch, regardless of our good intentions.
I do see the potential value in something like this, I just don't think we should assume we can write configuration files for other pieces of software. We would need to check with the user. Make sense?

Adding something to init.d is different -- it's a core part of installing any software on a Linux distro. But modifying some other application's init.d file, one shouldn't do that.
In any event, a sys-admin may have logrotate installed by Puppet, Chef etc. Modifying the file may only mean it's almost immediately corrected by the drift-detection that comes with those tools.

makes sense, yes

Nginx, haprixy, and other good software does and no one hurted so far.

dupe of #1943 which also has copytruncate, a necessary part of logrotate for influxd as it operates right now (it can't currently tolerate losing the filehandle to the open log)


Configurable TCP nodelay setting for streams

Allow TCP nodelay to be configurable for both accepted and connected streams.
Previously, this was implicitly enabled for connected streams here:
https://github.com/cfal/tobaru/blob/master/src/main.rs#L62

Done at https://github.com/cfal/tobaru/commit/2f68cd7b8e454ac3f9a520f0c1c82d349ecb98f9


Fix list fine tune events stream support

Implement true support for FineTuneListEvents stream=true parameter
Break the API to two functions:
Task ListFineTuneEvents(string fineTuneId, CancellationToken cancellationToken = default)
non-streaming version that stops with all the events already generated.
IAsyncEnumerable ListFineTuneEventsStream(string fineTuneId, CancellationToken cancellationToken = default) -
streaming version that blocks until a the next event is generated.  It completes when there is no more events generated.
The streaming version is complex due to the fact that the request can fail with a IOException "The response ended prematurely" message when accessing the streamReader.EndOfStream value.  When this happens, it "restarts" the stream events request "skipping" the already returned events and continues the wait.

Since the fine-tunes API is deprecated, there is no need to merge this PR. Thank you for your contribution, @shanepowell.


Java SDK: Potential bug with queries and batches

I think there is some bug in Java SDK related to handling of queries with large output (multiple batches)
Given

Iroha version: 50e81042aaca79527beae8ae66ced372a61b2e53
Use genesis with 2500 accounts
Start usual network with one peer:

./scripts/test_env.py setup 1

Send single FindAllAccounts request from Iroha Java SDK version 8ea800591:

package org.example

import jp.co.soramitsu.iroha2.asAccountId
import jp.co.soramitsu.iroha2.client.Iroha2Client
import jp.co.soramitsu.iroha2.keyPairFromHex
import jp.co.soramitsu.iroha2.model.IrohaUrls
import jp.co.soramitsu.iroha2.query.QueryBuilder

suspend fun main() {
    val url = "http://<IP_ADDRESS>:8080"
    val client = Iroha2Client(IrohaUrls(url, url, url))

    val account = "939e61fdf1cbd48b3aa98ef2d4ffbc0501a1d69f6290071c740922767c5b0626@bulb_1883d88a-a8ac-4030-a069-d4a543697ebb_3bb84bf2-a184-4d1e-b669-91435e8c7594"
    val publicKey = "939e61fdf1cbd48b3aa98ef2d4ffbc0501a1d69f6290071c740922767c5b0626"
    val privateKey = "a534cb93c48f260ca8d3e00416cbdda1b9c9a4ff09bab74b7004b960b65eedbf"
    val query = QueryBuilder.findAllAccounts()
        .account(account.asAccountId())
        .buildSigned(keyPairFromHex(publicKey, privateKey))
    client.sendQuery(query)
}

I expect
Query is completed in reasonable amount of time and Iroha uses reasonable amount of memory.
E.g. when I do:
cargo run --bin iroha -- --config configs/swarm/client.toml account list all

I receive response in less then 1 second and Iroha uses ~100MB
But, I got
Query takes more then 10 seconds and Iroha uses more then 10GB.
Note that there is related issue #4830 (which I am currently working on), but I think this particular issue is in Java SDK, because I don't observe any problems when sending the same request from CLI

Looks like parameter query_id was renamed to query, so it should be updated in Java SDK

Java SDK f908546812 fixes this issue


Possibility to search for c. position

It would be nice to have an input field to jump to and mark a given c. position.

We added a function of jumping to the input location (Ver 2.4.0). You will find an input filed for the c. position and 'Go' button.  Please understand us that we could not fully reflect your helpful suggestions.

Thank you very much for adding this feature.


XML Namespaces - The xmlns Attribute is missing from the example configuration XML files

Expected layout
<hivemq xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
        xsi:noNamespaceSchemaLocation="config.xsd">

        <mqtt-listeners>
            <tcp-listener>.....

Actual file layout
<hivemq>
    <mqtt-listeners>
        <tcp-listener>
            <port>1883</port>

ahh, makes sense: config.xsd is not there either. But is referenced by default config.xml so....maybe adding this and referencing in the examples xml makes more sense here.

Thanks Kamiel - this will be fixed in the 2023.4 release this week.


is there a componentWillEnter or componentDidEnter?

I used this lib to control the transition effect of the react-router.
and I have some requests when the componentDidMount was triggered.
but if I do request in componentDidMount, the request will cause the transition effect not so smoothly.
So I wanna know if I could do something in like componentDidEnter, it will be better, right?

I think you'll need to investigate what isn't smooth about the current effect. There a lot of processing going on when the routes change, or just components resizing when they get new data and that throwing off the animation.
I believe you could add a complete callback to the VelocityTransitionGroup's enter or leave animations that will get called when the effect is done. That may help, though there might be some bookkeeping to translate that to a specific component.


#385: removed default --app parameter causing deprecated message to b…

--app parameter causing deprecated message to be printed even when it was not given in command line.  Removed the default value in the args that was causing this.
solves #385

👍 let's wait that we get the CI fixed first to merge this!

ok to test

looks good thanks!


Compilation fails with gcc-7.5

TO REPRODUCE THE ISSUE, FOLLOW THESE STEPS:
make linux
RESULT:
Build fails
/home/.../work/tangram-es/tangram-es/core/deps/glm/glm/detail/type_vec4_simd.inl:156:11: error: ‘struct glm::tvec4<float, (glm::precision)5>’ has no member named ‘data’
Result.data = _mm_mul_ps(a.data, _mm_rcp_ps(b.data));
^~~~
/home/.../work/tangram-es/tangram-es/core/deps/glm/glm/detail/type_vec4_simd.inl:156:31: error: ‘const struct glm::tvec4<float, (glm::precision)5>’ has no member named ‘data’
Result.data = _mm_mul_ps(a.data, _mm_rcp_ps(b.data));
^~~~
/home/.../work/tangram-es/tangram-es/core/deps/glm/glm/detail/type_vec4_simd.inl:156:50: error: ‘const struct glm::tvec4<float, (glm::precision)5>’ has no member named ‘data’
Result.data = _mm_mul_ps(a.data, _mm_rcp_ps(b.data));
^~~~
/home/.../work/tangram-es/tangram-es/core/deps/glm/glm/detail/type_vec4_simd.inl: In constructor ‘glm::tvec4<T, P>::tvec4(T) [with T = float; glm::precision P = (glm::precision)5]’:
/home/ksp3kor/work/tangram-es/tangram-es/core/deps/glm/glm/detail/type_vec4_simd.inl:367:3: error: class ‘glm::tvec4<float, (glm::precision)5>’ does not have any field named ‘data’
data(_mm_set1_ps(s))
^~~~
/home/.../work/tangram-es/tangram-es/core/deps/glm/glm/detail/type_vec4_simd.inl: In constructor ‘glm::tvec4<T, P>::tvec4(T) [with T = float; glm::precision P = (glm::precision)4]’:
/home/.../work/tangram-es/tangram-es/core/deps/glm/glm/detail/type_vec4_simd.inl:372:3: error: class ‘glm::tvec4<float, (glm::precision)4>’ does not have any field named ‘data’
data(_mm_set1_ps(s))
^~~~

EXPECTED RESULT:
Build should be successful
ENVIRONMENT:
Ubuntu 18.04
4.15.0-123-generic #126-Ubuntu SMP Wed Oct 21 09:40:11 UTC 2020 x86_64 x86_64 x86_64 GNU/Linux
gcc version 7.5.0 (Ubuntu 7.5.0-3ubuntu1~18.04)
OTHER:
Any additional notes, comments, tips, tricks, gifs, suggestions, poetry, recipes, jokes
If you are able to record the log output from tangram-es, please attach it as a text file or share it using a site like https://hastebin.com/

Thanks for the report! I'm able to reproduce this error in an Ubuntu 18.04 container with GCC 7.5. The automated builds also use Ubuntu 18.04, but with GCC 7.3 instead - so they do not encounter this error.
The solution to this is probably to update the version of GLM that we include in our dependencies. I will have to verify that a new version doesn't break anything (it has happened before, specifically with GLM) so this may take a few days.

Hello @matteblair
Thank you!
The build was successful after adding the below lines of code to 'core/deps/glm/glm/simd/platform.h'
`#	elif (GNUC == 7) && (GNUC_MINOR == 5)
define GLM_COMPILER (GLM_COMPILER_GCC72)`


README.md: fixes/improvements

I have tried to improve English in this (very useful) document.

@1oginov please take a look


Multitenant app service: secure baseline scenario

Secure baseline reference architecture and reference IaC implementation for App Service Multitenant

I see that the new folder structure has terraform modules in each of the directories.
Should we move these modules outside of the scenario so that we are able to reuse them across the various scenarios as we continue our development of this LZA?
e.g:
.
|-- docs
|-- sampleapp
|-- scenarios
|-- modules
|    |-- terraform
|    |-- bicep
...

Also, on the scenarios, should we make it such that the deployment files are able to appropriately handle the various scenarios with just input vars? e.g:
|-- Parameters
|    |-- secure-baseline-ase.tfvars
|    |-- multi-tenant-secure-baseline-ase.tfvars
|-- README.md
|-- ase.tf
|-- backend.tf
|-- main.tf
...

Lastly, I am thinking removing the hardcoded azurerm backend config, as it could lead to human error such as unintentional deployments/infra changes with local development.
Can be enforced via the pipeline using tfsec


fix: table widget header links should have pointer cursor when hovered

Fixes #18189
Type of change

Bug fix (non-breaking change which fixes an issue)

How Has This Been Tested?

Manual

Test Plan

Add Testsmith test cases links that relate to this PR

Issues raised during DP testing

Link issues raised during DP testing for better visiblity and tracking (copy link from comments dropped on this PR)

Checklist:
Dev activity

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[ ] I have commented my code, particularly in hard-to-understand areas
[ ] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[ ] I have added tests that prove my fix is effective or that my feature works
[x] New and existing unit tests pass locally with my changes
[ ] PR is being merged under a feature flag

QA activity:

[ ] Test plan has been approved by relevant developers
[ ] Test plan has been peer reviewed by QA
[ ] Cypress test cases have been added and approved by either SDET or manual QA
[ ] Organized project review call with relevant stakeholders after Round 1/2 of QA
[ ] Added Test Plan Approved label after reveiwing all Cypress test

Tested this PR and working as expected

/ok-to-test sha=7029df2

/ok-to-test sha=7029df2

/ok-to-test sha=86c1d0d

/ok-to-test sha=86c1d0d

/ok-to-test sha=0ac2d99

/ok-to-test sha=4286f3a

/ok-to-test sha=d45a64f


global plopfile?

how would you suggest creating a global plopfile that can be used across projects?

Pretty ironic timing on this because I'm writing this functionality into plop right now. In fact today I pushed up a feature branch to node-plop that implements part of it.
If you need something right away there is an approach out there where you can publish your plopfiles and templates up as an NPM module and just require() it into another project. There are several people and companies out there doing this exact thing but it has its downsides. Mainly you have to reference the plop templatesFiles using a path that starts with node_modules/npm-module-name/ and there's no real isolation from the main plopfile.
The new api I'm developing will be to use plop.load() to load assets from another plopfile or published npm module. It'll allow you to import JUST the generators, JUST the helpers, partials, or any combination. It will also allow you to provide a config object to the plopfile that can be used to alter its behavior.
When this is complete you should be able to do something like the following:
plop.setGenerator('this-is-local', {blah blah blah});

// configObject would be passed to the plopfile when it's run
// this load would import just generators and helpers into the local plop context
plop.load('some-npm-installed-module', configObject, {generators: true, helpers: true});

Hope that helps 😃

this has been implemented in v1.7.0

thanks!


Update glibc Version

Uses 2.23 which includes fixes for CVE-2015-7547, amongst others.

Thank you!


Add a Max button in the wallet tab for sending tokens to allow users to send the full amount with a single click.

Is your feature request related to a problem? Please describe
Users prefer not to enter the total amount of tokens when they want to send all the tokens from their wallet.

Describe the solution you'd like
Adding a Max Button that automatically inputs the maximum number of TFTs users can send based on their available balance after deducting fees would simplify the process, allowing users to send all their tokens at once.

will add four buttons here:
25%
50%
75%
100%

@ehab-hassan Can we have a design for this in both dark & light mode?

dark
light

please add some padding between line and "Max Fee: 0.1 TFT" maybe text smaller than the Amount like guide

WIP:
Currently implementing a component that has the 4 buttons and is to be used in the send screen.


Support various file extensions for test sets and submissions

Currently the only extension supported for text files is .txt and for SGML files it is .sgm, both hard-coded, possibly in several places. But this does not make much sense if there is a separate file_format field in models working with uploaded files. Do you plan to support various extensions for submissions/test sets in the specific format? If yes, I think file_format would be better.
Edit: Clean this up and allow for uploading files with different extensions, relaying on the already existing file_format field in models.

Restrictions to file extensions are mostly artifacts of an older design and to avoid binary data. We have agreed that relying on file_format and supporting multiple extensions for submissions will be better. Turning the issue into a task.

@snukky / @kocmitom: moved this into the scope of the wmt22 release (due 10/31, so that we have a shiny, new release well in time for the conference ;)).


Grey Screen

when i put my token after a little time the screen gets grey

Same thing happens to me

@Kevinwkz Do you know how to fix it? if you know, pls tell us.

@AwEzBro @GabunoDragunora Let me know if this still persists, I fixed the path require method, which could be the error since it couldn't find the user's app root directory.

@Kevinwkz soo, in my case i downloaded the new vesion, and i executede them in my desktop and the gray screen continues, dosen't load anything, so i tried to put into the discord root folder and the same thing also i tried to execute the exe in administrator mode and still nothing happens, what i have to do ?

@Kevinwkz good job, is working 100%, thank you dude !


Add support for Epiphany

Adds Epiphany support ( Related with #220 )

This PR is not ready to merge atm.

[x] Application mode support
[x] Kiosk support
[ ] Headless mode
[x] Change title of Window (I guess it requires a desktop file)
[x] Fix clang warnings

Missclick 😆
Add headless mode to the checklist

It seems to Epiphany has no support for headless mode yet.

Well, I guess WebUI is for UI, so its fine. Those who need headless can use webui_show_browser() with a specific browser.

Kiosk nor fullscreen mode is not supported as command line flag. However epiphany can be tricked with loading "pre-created session" by library.
Also changing the title requires two desktop files. First one is needed for system (to load name, icon, wmclass etc.), second is needed for loading only title (why it's just not using desktop file that created for system?).
After all, it's possible although poor documentation (nearly no useful documentation about it) of Epiphany.

App mode

Kiosk mode

Most of examples is working seamless.

Is ffffffffffffffffffffffffffffffffffffffff necessary?
Other than that, it seems good to me.

It's random ID for Epiphany. In Epiphany, every application window requires an ID. So it's required.

Can you please try to run two instances of the same app? I'm just wondering if Epiphany may cause issues in a production environment.

Second application window is not starting while first instance is running. Maybe this can create a issue.

It's possible (in same profile) however; I need to apply to library

After 84e8395, multi-instance can work without any issue.

Does the title always show WebUI and not the actual app title?

Epiphany doesn't allow to change browser title by webpage. So, i have two options about it. I will blank it or i will choose to use "WebUI". I preferred the second option.

Should the end user even notice its a web browser? Whats your point of view on this @hassandraga?

Epiphany is ordered in the last option in the browser list. That means if there's no compatible browser with WebUI, it will open Epiphany rather than closing the application that they're no supported browser by WebUI.


docs: introduce basics

Link to the built docs: https://rubrix.readthedocs.io/en/docs-introduce_basics/getting_started/basics.html

Ok, this should be ready to review


Publish vike-react-query as v1.0.0?

@nitedani Any blockers for doing that? Anything we should polish? We can have another round of design talk if you feel like it.
Or maybe, more conservatively, we can publish 0.1.0 for now.

We already published it as 0.1.0. I think we can wait for more real world usage across more users until we publish 1.0.0.


[push_pull_agent] allow user to constrain data

This PR adds the ability for a user to specify some data value for the
push_pull_agent to transmit in either Host or Device modes, using a
setter function in the base sequence and a cfg knob.
Signed-off-by: Udi Jonnalagadda<EMAIL_ADDRESS>

latest force push implements the change suggested by @weicaiyang.

latest force push implements the change suggested by @weicaiyang.

as per an offline discussion, the queues will stay in the cfg for now, but have been made local to prevent accidental accesses except by the setter functions.

as per an offline discussion, the queues will stay in the cfg for now, but have been made local to prevent accidental accesses except by the setter functions.


Tap on button behind snack bar defined by margin

If the margin is used, set the HitTestBehavior to deferToChild.
List which issues are fixed by this PR. You must list at least one issue.
#78537
#114810
If you had to change anything in the flutter/tests repo, include a link to the migration guide as per the breaking change policy.
Pre-launch Checklist

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[x] I read the Tree Hygiene wiki page, which explains my responsibilities.
[x] I read and followed the Flutter Style Guide, including Features we expect every widget to implement.
[x] I signed the CLA.
[x] I listed at least one issue that this PR fixes in the description above.
[ ] I updated/added relevant documentation (doc comments with ///).
[x] I added new tests to check the change I am making, or this PR is test-exempt.
[x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

why not also let the developer choose the hitTestBehavior parameter himself?
https://github.com/flutter/flutter/pull/114810 - like here

why not also let the developer choose the hitTestBehavior parameter himself?
#114810 - like here

Because I don't want to have to know that I have to put in a hitTestBehavior when I change the margin.
I don't find that logical.
Leaving the choice means that I fix the bug only for those who know about it.
I can do this
behavior: widget.hitTestBehavior ?? widget.margin != null
            ? HitTestBehavior.deferToChild
            : HitTestBehavior.opaque,

I can do this
behavior: widget.hitTestBehavior ?? widget.margin != null
            ? HitTestBehavior.deferToChild
            : HitTestBehavior.opaque,

I too think it will be great to update the PR this way.

I can do this
behavior: widget.hitTestBehavior ?? widget.margin != null
            ? HitTestBehavior.deferToChild
            : HitTestBehavior.opaque,

I too think it would be great to update the PR this way.

I added it.


[vite:css] Cannot read properties of undefined (reading 'config')

I'm getting an error like this:
[vite:css] Cannot read properties of undefined (reading 'config')
file: /path/to/project/site/plugins/packer/src/components/Packer.vue?vue&type=style&index=0&lang.css

 ERROR  Build failed

When running from the default Kirby plugin creator kit (kirbyup src/index.js --watch, and kirbyup src/index.js).
This starts happening once I add a <style> tag to a Vue SFC that I import into src/index,js.
I did not add any custom configuration and it's a pretty much standard plugin setup:

Node version: v16.13.2
Kirbyup version: kirbyup/0.23.0

Don't know if this matters; the plugin is inside a  site/plugins folder of a kirby site that has postcss.config.js tailwind.config.js files in the root directory. The plugin however does not use or rely on them. (Simply there are such files in a parent directory).
How can I help debug this better?

Looks like kirbyup is influenced by the postcss.config.js in the project root.
Here more info: https://forum.getkirby.com/t/custom-block-single-file-component-error/25173

Hi Roman,
thanks for the bug report. Indeed, postcss-load-config will walk up the parent directory until the executing directory is reached. At least it should work that way. Did you run kirbyup from the packer directory or did you call it from the project's root?
I may have to force the PostCSS loader to stick to the executing path.

Given that it should work based on the cwd, I'll close this for now. If you still run into this problem, please provide a reproduction and we can re-open and fix the issue :)

Can confirm that it will actually load postcss config from parent directories which can prevent kirbyup from working when postcss plugins are not installed.
This can have unintended side effects depending on where the plugin is compiled by kirbyup. (Development happening in between two different kirby installations for example)
To reproduce just setup a barebones structure with a package.json in the project root.
├── site
│   ├── plugins
│   ├── myPlugin
│   │   ├── src
│   │   │   ├── index.js
│   │   ├── package.json
├── package.json  __kirbyup will try to load postcss settings from here__

// package.json from project root
"postcss": {
  "plugins": {
     "autoprefixer": true
  }
}

// /site/plugins/myPlugin/package.json
{
  "scripts": {
      "dev": "npx -y kirbyup src/index.js --watch ",
      "build": "npx -y kirbyup src/index.js"
   },
  "devDependencies": {
    "kirbyup": "^0.22.2"
  }
}

kirbyup: v.2.2.1

Thanks for looking into this again @jonaskuske.
I think what tripped me was that the readme says that it will auto apply a postCss config if no postCss config is specified for the plugin and i was just fine with that.
My current work around is to just add an empty postCss property to the plugins package.json to stop resolving of parent directories but this might have overwritten kirbyups defaults(?)
Maybe a hint in the readme how to just load the kirbyups default is enough?

Yup, an empty config replaces kirbyup's default :(
We could check for empty configs and keep applying the default, but then disabling the defaults isn't possible anymore. I think preventing the lookup in parent directories via stopDir is the best way, released as a v3. cc @johannschopplich

I agree. Walking up the directories until a PostCSS config file is found feels like more implicit magic than a best-practice default. Most users (myself included) didn't even know this was happening.
Releasing v3 to control this breaking change seems like the best way. I'm in! 👍
Thank you both for tracking this issue. 🌻