exit full screen in customized video controls

I tried to implement a simple video controls using the provided custom builder for video controls, and used showModalBottomSheet to implement the bottom bar for housing the play/pause button, the seekbar and the fullscreen button. To control the fullscreen state, I used a global key as suggested in the docs.
Video(
     key: key,
     controller: controller,
     controls: (state) {
         state.widget.controller.player.stream.buffering.listen((event) {
             if (buffering != event) {
                setState(() {
                  buffering = event;
                });
             }
         });

         state.widget.controller.player.stream.playing.listen((event) {
          if (playing != event) {
               setState(() {
                  playing = event;
               });
             }
         });

         return Scaffold(
            backgroundColor: Colors.transparent,
            body: Builder(
                builder: (ctx) => GestureDetector(
                  // _toggleFullscreen here works with double tap
                  // okay to enter and exit fullscreen as expected
                  onDoubleTap: () {
                    _toggleFullscreen(() {
                        setState(() {
                            isFullscreen = !isFullscreen;
                        });
                    });
                    // key.currentState?.toggleFullscreen();
                  },
                  onTap: () {
                    _showVideoControls(ctx);
                  },
                  child: _buildLoadingIndicator(),
                ),
            ),
        );
     },
),

The issue I met is that, inside the bottom sheet created using showModalBottomSheet, when I clicked the fullscreen button, the player can enter fullscreen mode, but cannot exit when clicking the fullscreen button again. I used the builtin toggleFullscreen method through the global key, but I didn't use the StreamBuilder for the Icon implementation.
Here is the _toggleFullscreen and _showVideoControls implementation using a bottom sheet:
  // exitFullscreen not working as expected
  void _toggleFullscreen(VoidCallback onToggle) async {
    await key.currentState?.toggleFullscreen();

    // if (!isFullscreen) {
    //   await key.currentState?.enterFullscreen();
    // } else {
    //   await key.currentState?.exitFullscreen();
    // }

    // tried to set the `isFullscreen` with and without a callback function
    onToggle();

    // setState(() {
    //   isFullscreen = !isFullscreen;
    // });
  }

  void _showVideoControls(BuildContext context) {
    const controlsColor = Colors.white;
    showModalBottomSheet(
      context: context,
      backgroundColor: const Color.fromARGB(122, 14, 14, 14),
      useSafeArea: true,
      constraints: BoxConstraints.expand(
        width: MediaQuery.of(context).size.width,
        height: 60,
      ),
      // Using StatefulBuilder here to get access to the inner `setState` method
      // so that the icons updates accordingly with the changes of
      // the states `playing` and `isFullscreen`
      builder: (builderContext) => StatefulBuilder(
        builder: (ctx, innerSetState) => LayoutBuilder(
          builder: (layoutCtx, constraints) => SizedBox(
            child: Center(
              child: Row(
                mainAxisAlignment: MainAxisAlignment.center,
                mainAxisSize: MainAxisSize.min,
                children: [
                  IconButton(
                    onPressed: () {
                      innerSetState(() {
                        playPause();
                      });
                    },
                    icon: Icon(
                      playing ? Icons.pause : Icons.play_arrow,
                      color: controlsColor,
                    ),
                  ),
                  const Expanded(
                    child: Padding(
                      padding: EdgeInsets.all(20.0),
                      child: Column(
                        mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                        children: [
                          LinearProgressIndicator(),
                        ],
                      ),
                    ),
                  ),
                  IconButton(
                    // The issue is here:
                    //  - okay to enter fullscreen when the button is clicked
                    //  - NOT okay to exit fullscreen when the button is clicked
                    onPressed: () {
                      // direct use of this did not work as well
                      // key.currentState?.toggleFullscreen();
                      _toggleFullscreen(() {
                        innerSetState(() {
                          isFullscreen = !isFullscreen;
                        });
                      });
                    },
                    icon: Icon(
                      // The icon toggles as expected when the button is clicked
                      isFullscreen
                          ? Icons.fullscreen_exit
                          : Icons.fullscreen,
                      color: controlsColor,
                    ),
                  ),
                ],
              ),
            ),
          ),
        ),
      ),
    );
  }

The thing that puzzles me is that I can toggle the fullscreen mode as expected by double tap on the player, and I can enter fullscreen by just clicking the fullscreen icon button, but I cannot exit fullscreen mode by just clicking the fullscreen icon button. The _toggleFullscreen funtion fires as expected at debugging.
The builtin MaterialVideoControls works as expectd. So I guess maybe I did something incorrectly which led to this issue, but I failed to spot. Would you guys please kindly have a look at my code and let me known what went wrong?
Here is my development environment:
$ flutter doctor
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, 3.19.5, on Microsoft Windows [Version 10.0.19045.4239], locale zh-CN)
[√] Windows Version (Installed version of Windows is version 10 or higher)
[√] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
[√] Chrome - develop for the web
[√] Visual Studio - develop Windows apps (Visual Studio Community 2022 17.4.2)
[√] Android Studio (version 2023.2)
[√] VS Code, 64-bit edition (version 1.88.0)
[√] Connected device (3 available)
[√] Network resources

• No issues found!

And here below is a fullly runnable code to reproduce the issue:

Click to expand!
import 'package:flutter/material.dart';
import 'package:media_kit/media_kit.dart';
import 'package:media_kit_video/media_kit_video.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  MediaKit.ensureInitialized();
  runApp(const TVApp());
}

class TVApp extends StatelessWidget {
  const TVApp({super.key});
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'IPTV Player',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(
            seedColor: const Color.fromARGB(255, 47, 99, 89)),
        useMaterial3: true,
      ),
      home: const DemoPlayer(title: 'Demo Mediakit Player'),
    );
  }
}

class DemoPlayer extends StatefulWidget {
  const DemoPlayer({super.key, required this.title});
  final String title;

  @override
  State<DemoPlayer> createState() => _DemoPlayerState();
}

class _DemoPlayerState extends State<DemoPlayer> {
  late final GlobalKey<VideoState> key = GlobalKey<VideoState>();
  late final player = Player();
  late var controller = VideoController(player);

  bool playing = false;
  bool buffering = false;
  bool isFullscreen = false;

  @override
  void initState() {
    super.initState();
    if (mounted) {
      controller = VideoController(player);
      player.open(Media("http://live-hls-web-aje.getaj.net/AJE/01.m3u8"));
      setState(() {
        isFullscreen = key.currentState?.isFullscreen() ?? false;
      });
    }
  }

  // exitFullscreen not working as expected
  void _toggleFullscreen(VoidCallback onToggle) async {
    await key.currentState?.toggleFullscreen();

    // if (!isFullscreen) {
    //   await key.currentState?.enterFullscreen();
    // } else {
    //   await key.currentState?.exitFullscreen();
    // }

    // tried to set the `isFullscreen` with and without a callback function
    onToggle();

    // setState(() {
    //   isFullscreen = !isFullscreen;
    // });
  }

  void playPause() {
    setState(() {
      controller.player.playOrPause();
      playing = !playing;
    });
  }

  void _showVideoControls(BuildContext context) {
    const controlsColor = Colors.white;
    showModalBottomSheet(
      context: context,
      backgroundColor: const Color.fromARGB(122, 14, 14, 14),
      useSafeArea: true,
      constraints: BoxConstraints.expand(
        width: MediaQuery.of(context).size.width,
        height: 60,
      ),
      // Using StatefulBuilder here to get access to the inner `setState` method
      // so that the icons updates accordingly with the changes of
      // the states `playing` and `isFullscreen`
      builder: (builderContext) => StatefulBuilder(
        builder: (ctx, innerSetState) => LayoutBuilder(
          builder: (layoutCtx, constraints) => SizedBox(
            child: Center(
              child: Row(
                mainAxisAlignment: MainAxisAlignment.center,
                mainAxisSize: MainAxisSize.min,
                children: [
                  IconButton(
                    onPressed: () {
                      innerSetState(() {
                        playPause();
                      });
                    },
                    icon: Icon(
                      playing ? Icons.pause : Icons.play_arrow,
                      color: controlsColor,
                    ),
                  ),
                  const Expanded(
                    child: Padding(
                      padding: EdgeInsets.all(20.0),
                      child: Column(
                        mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                        children: [
                          LinearProgressIndicator(),
                        ],
                      ),
                    ),
                  ),
                  IconButton(
                    // The issue is here:
                    //  - okay to enter fullscreen when the button is clicked
                    //  - NOT okay to exit fullscreen when the button is clicked
                    onPressed: () {
                      _toggleFullscreen(() {
                        innerSetState(() {
                          isFullscreen = !isFullscreen;
                        });
                      });
                    },
                    icon: Icon(
                      // The icon toggles as expected when the button is clicked
                      isFullscreen ? Icons.fullscreen_exit : Icons.fullscreen,
                      color: controlsColor,
                    ),
                  ),
                ],
              ),
            ),
          ),
        ),
      ),
    );
  }

  @override
  Widget build(BuildContext context) {
    return Center(
      child: SizedBox(
        width: MediaQuery.of(context).size.width,
        height: MediaQuery.of(context).size.width * 9.0 / 16.0,
        child: Video(
          key: key,
          controller: controller,
          controls: (state) {
            state.widget.controller.player.stream.buffering.listen((event) {
              if (buffering != event) {
                setState(() {
                  buffering = event;
                });
              }
            });

            state.widget.controller.player.stream.playing.listen((event) {
              if (playing != event) {
                setState(() {
                  playing = event;
                });
              }
            });

            return Scaffold(
              backgroundColor: Colors.transparent,
              body: Builder(
                builder: (ctx) => GestureDetector(
                  // _toggleFullscreen here works with double tap
                  // okay to enter and exit fullscreen as expected
                  onDoubleTap: () {
                    _toggleFullscreen(() {
                      setState(() {
                        isFullscreen = !isFullscreen;
                      });
                    });
                  },
                  onTap: () {
                    _showVideoControls(ctx);
                  },
                  child: _buildLoadingIndicator(),
                ),
              ),
            );
          },
        ),
      ),
    );
  }

  // for demo only
  Widget _buildLoadingIndicator() {
    return Stack(
      fit: StackFit.expand,
      children: [
        Positioned.fill(
          child: DecoratedBox(
            decoration: const BoxDecoration(color: Colors.transparent),
            child: Center(
              child: TweenAnimationBuilder(
                tween: Tween<double>(begin: 0.0, end: buffering ? 1.0 : 0.0),
                duration: const Duration(milliseconds: 150),
                builder: (ctx, value, child) {
                  if (value > 0.0) {
                    return Opacity(
                      opacity: value,
                      child: child ?? const CircularProgressIndicator(),
                    );
                  }
                  return const SizedBox.shrink();
                },
                child: const CircularProgressIndicator(),
              ),
            ),
          ),
        ),
      ],
    );
  }
}

i am facing the same exact problem in my code too

can you provide a working example so i can test with and let you know of a fix?

@abdelaziz-mahdy hi, I already provided a fully working sample above, just click to expand to copy the code.

@abdelaziz-mahdy hi, I already provided a fully working sample above, just click to expand to copy the code.

oh i am sorry. i didnt see it, i will test it when i got free time, and if i have a fix i will let you know

@abdelaziz-mahdy hi, I already provided a fully working sample above, just click to expand to copy the code.

oh i am sorry. i didnt see it, i will test it when i got free time, and if i have a fix i will let you know

No problem and take your time.

the problem is the context of the modal sheet, is wrong the code cant find the full screen widget
so the fix should be not using modalsheet, couldnt find a way to pass the right context to the modal sheet, it cant find it anywhere
this is the updated example
import 'package:flutter/cupertino.dart';
import 'package:flutter/material.dart';
import 'package:flutter/widgets.dart';
import 'package:media_kit/media_kit.dart';
import 'package:media_kit_video/media_kit_video.dart';

void main() {
  WidgetsFlutterBinding.ensureInitialized();
  MediaKit.ensureInitialized();
  runApp(const TVApp());
}

class TVApp extends StatelessWidget {
  const TVApp({super.key});
  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'IPTV Player',
      theme: ThemeData(
        colorScheme: ColorScheme.fromSeed(
            seedColor: const Color.fromARGB(255, 47, 99, 89)),
        useMaterial3: true,
      ),
      home: const DemoPlayer(title: 'Demo Mediakit Player'),
    );
  }
}

class DemoPlayer extends StatefulWidget {
  const DemoPlayer({super.key, required this.title});
  final String title;

  @override
  State<DemoPlayer> createState() => _DemoPlayerState();
}

class _DemoPlayerState extends State<DemoPlayer> {
  late final GlobalKey<VideoState> key = GlobalKey<VideoState>();
  late final player = Player();
  late var controller = VideoController(player);

  bool playing = false;
  bool buffering = false;
  bool isFullscreen = false;
  ValueNotifier<bool> showControls = ValueNotifier(false);
  @override
  void initState() {
    super.initState();
    if (mounted) {
      controller = VideoController(player);
      player.open(Media("https://test-streams.mux.dev/x36xhzz/x36xhzz.m3u8"));
      setState(() {
        isFullscreen = key.currentState?.isFullscreen() ?? false;
      });
    }
  }

  // exitFullscreen not working as expected
  void _toggleFullscreen(VoidCallback onToggle) async {
    await key.currentState?.toggleFullscreen();

    // if (!isFullscreen) {
    //   await key.currentState?.enterFullscreen();
    // } else {
    //   await key.currentState?.exitFullscreen();
    // }

    // tried to set the `isFullscreen` with and without a callback function
    onToggle();

    // setState(() {
    //   isFullscreen = !isFullscreen;
    // });
  }

  void playPause() {
    setState(() {
      controller.player.playOrPause();
      playing = !playing;
    });
  }

  Widget _showVideoControls(BuildContext context) {
    const controlsColor = Colors.white;

    // Using StatefulBuilder here to get access to the inner `setState` method
    // so that the icons updates accordingly with the changes of
    // the states `playing` and `isFullscreen`
    return ValueListenableBuilder(
        valueListenable: showControls,
        builder: (context, value, child) {
          if (!value) {
            return Container();
          }
          return Container(
            color: Colors.black38,
            child: StatefulBuilder(
              builder: (ctx, innerSetState) => LayoutBuilder(
                builder: (layoutCtx, constraints) => SizedBox(
                  child: Center(
                    child: Row(
                      mainAxisAlignment: MainAxisAlignment.center,
                      mainAxisSize: MainAxisSize.min,
                      children: [
                        IconButton(
                          onPressed: () {
                            innerSetState(() {
                              playPause();
                            });
                          },
                          icon: Icon(
                            playing ? Icons.pause : Icons.play_arrow,
                            color: controlsColor,
                          ),
                        ),
                        const Expanded(
                          child: Padding(
                            padding: EdgeInsets.all(20.0),
                            child: Column(
                              mainAxisAlignment: MainAxisAlignment.spaceEvenly,
                              children: [
                                LinearProgressIndicator(),
                              ],
                            ),
                          ),
                        ),
                        IconButton(
                          // The issue is here:
                          //  - okay to enter fullscreen when the button is clicked
                          //  - NOT okay to exit fullscreen when the button is clicked
                          onPressed: () {
                            _toggleFullscreen(() {
                              innerSetState(() {
                                isFullscreen = !isFullscreen;
                              });
                            });
                          },
                          icon: Icon(
                            // The icon toggles as expected when the button is clicked
                            isFullscreen
                                ? Icons.fullscreen_exit
                                : Icons.fullscreen,
                            color: controlsColor,
                          ),
                        ),
                      ],
                    ),
                  ),
                ),
              ),
            ),
          );
        });
  }

  @override
  Widget build(BuildContext context) {
    return Center(
      child: SizedBox(
        width: MediaQuery.of(context).size.width,
        height: MediaQuery.of(context).size.width * 9.0 / 16.0,
        child: Video(
          key: key,
          controller: controller,
          controls: (state) {
            state.widget.controller.player.stream.buffering.listen((event) {
              if (buffering != event) {
                setState(() {
                  buffering = event;
                });
              }
            });

            state.widget.controller.player.stream.playing.listen((event) {
              if (playing != event) {
                setState(() {
                  playing = event;
                });
              }
            });

            return Scaffold(
              backgroundColor: Colors.transparent,
              body: Builder(
                builder: (ctx) => GestureDetector(
                  // _toggleFullscreen here works with double tap
                  // okay to enter and exit fullscreen as expected
                  onDoubleTap: () {
                    _toggleFullscreen(() {
                      setState(() {
                        isFullscreen = !isFullscreen;
                      });
                    });
                  },
                  onTap: () {
                    showControls.value = !showControls.value;
                  },
                  child: Stack(
                    alignment: Alignment.bottomCenter,
                    children: [
                      _buildLoadingIndicator(),
                      Positioned.fill(
                          child: Align(
                              alignment: Alignment.bottomCenter,
                              child: SizedBox(
                                height: 60,
                                child: _showVideoControls(ctx),
                              ))),
                    ],
                  ),
                ),
              ),
            );
          },
        ),
      ),
    );
  }

  // for demo only
  Widget _buildLoadingIndicator() {
    return Stack(
      fit: StackFit.expand,
      children: [
        Positioned.fill(
          child: DecoratedBox(
            decoration: const BoxDecoration(color: Colors.transparent),
            child: Center(
              child: TweenAnimationBuilder(
                tween: Tween<double>(begin: 0.0, end: buffering ? 1.0 : 0.0),
                duration: const Duration(milliseconds: 150),
                builder: (ctx, value, child) {
                  if (value > 0.0) {
                    return Opacity(
                      opacity: value,
                      child: child ?? const CircularProgressIndicator(),
                    );
                  }
                  return const SizedBox.shrink();
                },
                child: const CircularProgressIndicator(),
              ),
            ),
          ),
        ),
      ],
    );
  }
}

@abdelaziz-mahdy Thanks for the effort, it is really appreciated. Value notifier works for me.


ImageArcGISRest Default Ratio Bug: Layer-Map Mismatch in OpenLayers 7.4

In OpenLayers version 7.4, an issue has been discovered related to the ImageArcGISRest source. The problem lies with the default value of the ratio parameter in ImageArcGISRest, which is set to 1.5. When the computer's zoom or scaling ratio is not 100% (e.g., 150%), the following issues may occur:
Layer-Map Mismatch: Loading ArcGIS MapServer layers with a ratio value other than 1 or 1.5 (e.g., 2) can result in a mismatch between the layer and the map. This can cause misalignment or incorrect rendering of the layer.
Layer-Map Mismatch after Map Rotation: Even when the ratio is set to 1.5 or any other value other than 1, a layer-map mismatch issue can occur after map rotation. The rotated layer may not align correctly with the rotated map.
Currently, the workaround solution is to forcibly set the ratio to 1 to address these issues.

Is the problem similar to #14718 ?

The problem is not the same as #14718. You can visit this webpage https://sunyuely.github.io/ol7.html. When you perform a zoom operation, you can see that the content of the ArcGIS MapServer is not in the correct position.

This issue can also be reproduced with the https://openlayers.org/en/latest/examples/arcgis-image.html example. Changing the ration to 2 will show the problem.

It turns out that this is not a problem of OpenLayers, but of the used server. Looking at the request produced by the example in https://sunyuely.github.io/ol7.html:

With a ratio of 1, the request URL is https://sampleserver6.arcgisonline.com/arcgis/rest/services/PoolPermits/MapServer/export?F=image&FORMAT=PNG32&TRANSPARENT=true&SIZE=2616%2C1516&BBOX=-13080427.29732658%2C4012702.6303838133%2C-13067929.843201954%2C4019945.0388138336&BBOXSR=3857&IMAGESR=3857&DPI=180. So the expected size of the response image, according to SIZE=2616,1516, would be 2616 by 1516 pixels, which is the actual size of the image.
With a ratio of 2, the request URL is https://sampleserver6.arcgisonline.com/arcgis/rest/services/PoolPermits/MapServer/export?F=image&FORMAT=PNG32&TRANSPARENT=true&SIZE=5232%2C3032&BBOX=-13086676.024388893%2C4009081.426168803%2C-13061681.116139641%2C4023566.243028844&BBOXSR=3857&IMAGESR=3857&DPI=180. So the expected size of the response image, according to SIZE=5232,3032, would be 5232 by 3032 pixels. But the returned image is only 4096 by 2373 pixels.

So the issue here is that we don't get from the server what we expect.

@ahocevar That limit is documented but there is a similar undocumented issue if params: {'FORMAT': 'SVG'}, is specified.  Even on a small map with ratio: 1, the returned image can be larger than the requested size expected by the renderer.  You might want to investigate that as part of #14945 as SVG format for ArcGIS would be expected to work as well as it does with WMS.

@ahocevar I apologize for not noticing that earlier. You are correct that the ArcGIS MapServer service properties include maxImageHeight and maxImageWidth, which have a default size of 4096. It is easy to exceed the limit of 4096 by 4096 when the aspect ratio of the map goes beyond a certain threshold.Perhaps we can directly use the maxImageHeight and maxImageWidth properties of the MapServer to limit the parameters of the requested image.

@sunyuely Any fix for the SVG format issue above should also fix your issue https://codesandbox.io/s/arcgis-image-forked-9jfzx9?file=/main.js (change if (false) to if (true) to apply a patch - a permanent fix would need to be compatible with changes in #14945).   Basically if the renderer cannot rely on the returned image (either an oversize PNG request, or any SVG request) being the expected resolution it must determine the true resolution from the requested extent and the size of the image which was received.

Yes, this indeed resolved my issue. Thank you very much for your help, @mike-000  and @ahocevar !

@mike-000 It looks like for SVG, the server ignores the DPI setting we provide, and uses the default.

#14945 will make the ArcGISRest images work, even if the returned size does not match the requested size.

@mike-000 It looks like for SVG, the server ignores the DPI setting we provide, and uses the default.

Yes, the SVG is sized in pt, so browser will set an image size in px based on the default.


Standardize testnet and testing infrastructure

Motivation
We have about 5 (probably) more tools to create a network of miners whether on some cloud provider or locally or using k8s. Each of these tools has a set of important features, while lacking another set of important features.
Currently we have different tools used for the same task on different contexts, for example different code is orchestrating starting a testnet (go-spacecraft) than used to create a network for the CI system tests (go-spacemesh/tests). We will forever need to maintain multiple systems with essentially similar features and hunt down differences..
What do we need
We want to stop creating new tools and direct our focus to one (or more than one if they'll be modular) infrastructures that will be able to:

Setup a network (do the bootstrap and poet startup seq)
control network (run code on miners, update versions, kill, add)
monitor network (logs, metrics, machine data, profiling, tracing, basic network state like miners amount)
Run certain scenario on a network (basically a test, send tx and wait for it to be processed for example, but eventually much more complex tests like bad nodes) NOTE: this relies on some features I've mentioned above.
Generate reports about network health, errors, flow etc, infra health..
feature we need to discuss: Testing the infra to rule out protocol failures faster.

if we will have all our team on this one project we'll be able to deliver features and bug fixes faster and on a single place.
Next steps
As I see it now, we have a few limited options if ruling our using an external existing testing infra (which @daonb is looking at) or writing a whole new thing again which we now going to take us back to the same place eventually.
We need to decide either somehow run our existing tests on go-spacecraft deployed infra or break the network deployment apart from the CI and use it for running testnets as well. Also there are some inevitable changes we'll need to go through to cover up for the missing features in any path we chose.
Please share your thoughts-
@daonb @narayanprusty @AmitShaul or anyone else

I'd like to chime in from a product perspective. I think that it is important for us to be crystal-clear about the requirements from the infra by looking at the 3 main main use-cases we have for a spacemesh network, which are:

Infra for running CI / tests.
Infra for open source devs to be able to spin up a local dev net for go-sm dev purposes (aka localnoet).
Infra for long-running networks (aka testnets).

Each use-case has different requirements and network expected life-span. I think that the requirements you mentioned above are only applicable for some use cases but not other. So, I think it will be quite useful to define the requirements for each use case separately first, and not try to have a union list of all requirements from all uses cases because you guys might decide, for example, that localNet is best maintained and updated by the current localnet repo scripts and not by migrating it to go-spacecraft based on its requirements...
Hope this makes sense...

moving this to https://github.com/spacemeshos/pm/issues/66


Fix for invalid argument in Service Provider

Hello,
I cannot create client using this lib so I made a fix for it.
Have a nice day :)

Thank you for your contribution! This bug was picked up in #4 slightly earlier, so that fixes the same issue.


Use tf.where

In TF v1.0 tf.select op is deprecated. tf.where should be used instead.

I've updated the whole repo to work with TF 1.0 Thanks @xinqiu


Data Flow Analysis framework

Fill in DFA framework for the following optimisations:

Dominator Analysis
Very Busy Expressions
Constant Propagation

2nd assignment shipped


don't set owner of client.json to sensu

Causes flapping owners of /etc/sensu/conf.d

Thank you for your contribution @evandam 😂


Changes to rotation should preserve unit quaternion

When you use the UI to rotate an object, you can generate a non-unit quaternion which doesn't correctly describe a rotation. Ideally the UI would enforce this constraint.
https://github.com/jakobhellermann/bevy-inspector-egui/blob/main/src/impls/bevy_impls.rs#L27-L29

Thanks. It's fixed now but maybe in the future we could display a gizmo like this, although maybe that probably makes more sense to have in the world rather than UI and can live in another plugin.

Thanks. It's fixed now but maybe in the future we could display a gizmo like this, although maybe that probably makes more sense to have in the world rather than UI and can live in another plugin.


Connect Registration Decline Button with Backend API Call

Summary
connect the registration decline button on the page /decline with the backend API call that has been delivered by the backend team. This will allow users to decline their registration and trigger the necessary actions on the server side.
Details

Identify the location of the registration decline button on the page /decline.
Update the frontend code to handle the click event of the decline button.
Implement the API call to the backend using the provided endpoint.
POST /api/registration/application/{applicationId}/declineRegistration
4a. Handle the response from the backend API call and display with success response the successful decline screen to the user
4b. Make sure to handle any potential errors or edge cases that may occur during the API call or response handling.
Test the functionality to ensure that the registration decline process works as expected.

Acceptance Criteria

[ ] The registration decline button on the page /decline triggers the backend API call when clicked.
[ ] The API call is made to the correct endpoint
[ ] The response from the backend API call is handled correctly and appropriate feedback is displayed to the user.

Note - the implementation of the FE screens have been already delivered as part of 24.03 - only the missing api connection is taking place now

@jjeroch API is added but not able to test it. As discussed with @Leon-Gr was not able to invite user so can access the decline page and test the API.


[Bug] Sky colour is forced to change in certain areas.

Describe the bug:
In some areas of the game, the sky colour does not retain the selected setting. In my case, I wish for the sky to always be black. One example is that in the city of Falador, the sky is force-changed to be blue.
To Reproduce:
Steps to reproduce the behaviour:

Enable the 117 HD plugin.
Under environment settings, change default sky colour to black.
Head to Falador.
You'll see the sky turn blue.

Expected behaviour:
Well, I expected the sky to retain the selected colour choice. It seems strange to me that it changes.
Screenshots:

Environment (please complete the following information):

OS: Windows 11 Pro 64-bit, version 21H2, build 22000.438.
RuneLite version: 1.8.10
Launcher version: 2.2.0

Additional context
Add any other context about the problem here, e.g. logs. Your client logs can usually be found in
C:\Users\<your_user_name>\.runelite\logs on Windows and ~/.runelite/logs on Linux and macOS.
client.log
launcher.log

I would like to mention that I'm not entirely sure this is a bug. It may end up being an intended feature, which ... well, I'd really like an option to disable it if that's the case. The sky randomly changing is rather jarring to me.

From the descriptions it seems clearly intentional but i would also like an override


[QA] add API tests for auto accepting shares (FRONTEND_AUTO_ACCEPT_SHARES)

PR https://github.com/owncloud/ocis/pull/7097 has added the capability to auto-accept the shares when configured.
Add API tests for this feature. (add tests for various scenarios)

enable auto-accept shares via env config: FRONTEND_AUTO_ACCEPT_SHARES=true (enables for all)
enable/disable auto-accept shares per user

According to story auto-accept should be true by default, but test pipeline cannot handle this for now

@kobergj, if it's required to be enabled by default in oCIS then maybe enable it by default and run tests with FRONTEND_AUTO_ACCEPT_SHARES=false for now, the later we can fix the tests and remove FRONTEND_AUTO_ACCEPT_SHARES=false. And we add some test scenarios with FRONTEND_AUTO_ACCEPT_SHARES=false.

closed as comleted https://github.com/owncloud/ocis/pull/7477


#bug; GMX inputTokenWeights is off

Describe the bug
Input token weight is off from GMX.
Reproduction

Expected behavior
should match
fix after: https://github.com/messari/subgraphs/pull/2075

@corerouter

looks like #2075 fixed it


Allow calling init seperately

This allows calling codegen_init! separately, which is needed to build a custom derive for helix. The other commit is a small change to make helix_runtime agnostic to cargo workspaces.

Ping!
Will this PR get reviewed?

Well in this case I'd suggest to merge this before doing the refactorings as there will likely be merge conflicts otherwise. The diff is also only +70 -5 with no unsafe code touched, so it shouldn't take longer than ten minutes to review.

A bit late, but I'm comfortable with this change. Merging.


error in run

run: python3 agnee.py -h
error:
  File "agnee.py", line 10, in <module>
    from search_engines import Google, Bing, Yahoo, Startpage, config
ImportError: cannot import name 'Google' from 'search_engines' (/home/netwons/.local/lib/python3.8/site-packages/search_engines/__init__.py)

sudo pip3 install git+https://github.com/R0X4R/Search-Engines-Scraper.git && sudo pip3 install agnee

Try installing it again

error:
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv
WARNING: You are using pip version 22.0.3; however, version 22.2.2 is available.
You should consider upgrading via the '/usr/bin/python3 -m pip install --upgrade pip' command.

This is not an error it is a warning because you used sudo to install the agnee. There's nothing to worry about. You can now use the agnee.
Regards,
R0X4R


slweb: 0.9.0 -> 0.10.1

Things done

slweb: move to pkgs/by-name
slweb: format
slweb: 0.9.0 -> 0.10.1

Built on platform(s)

[x] x86_64-linux
[x] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

For non-Linux: Is sandboxing enabled in nix.conf? (See Nix manual)

[ ] sandbox = relaxed
[ ] sandbox = true

[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[x] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
24.11 Release Notes (or backporting 23.11 and 24.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module

[x] Fits CONTRIBUTING.md.

Add a :+1: reaction to pull requests you find important.

nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review pr 346125

x86_64-linux

:white_check_mark: 1 package built:

slweb

aarch64-linux

:white_check_mark: 1 package built:

slweb

x86_64-darwin

aarch64-darwin

nixpkgs-review result
Generated using nixpkgs-review.
Command: nixpkgs-review pr 346125

x86_64-linux

:white_check_mark: 1 package built:

slweb

aarch64-linux

:white_check_mark: 1 package built:

slweb

x86_64-darwin

aarch64-darwin


Custom Proxy .strip() error when CUSTOM_PROXY is commented

Hi,
Thanks for this great script. I am not using any proxy and when I comment the proxy env variable out, I get the following error:
scraper_appointment_finder_1  |
scraper_appointment_finder_1  | 2021-09-07 12:56:19 [twisted] CRITICAL:
scraper_appointment_finder_1  | Traceback (most recent call last):
scraper_appointment_finder_1  |   File "/usr/local/lib/python3.6/site-packages/twisted/internet/defer.py", line 1661, in _inlineCallbacks
scraper_appointment_finder_1  |     result = current_context.run(gen.send, result)
scraper_appointment_finder_1  |   File "/usr/local/lib/python3.6/site-packages/twisted/internet/defer.py", line 63, in run
scraper_appointment_finder_1  |     return f(*args, **kwargs)
scraper_appointment_finder_1  |   File "/usr/local/lib/python3.6/site-packages/scrapy/crawler.py", line 87, in crawl
scraper_appointment_finder_1  |     self.engine = self._create_engine()
scraper_appointment_finder_1  |   File "/usr/local/lib/python3.6/site-packages/scrapy/crawler.py", line 101, in _create_engine
scraper_appointment_finder_1  |     return ExecutionEngine(self, lambda _: self.stop())
scraper_appointment_finder_1  |   File "/usr/local/lib/python3.6/site-packages/scrapy/core/engine.py", line 69, in init
scraper_appointment_finder_1  |     self.downloader = downloader_cls(crawler)
scraper_appointment_finder_1  |   File "/usr/local/lib/python3.6/site-packages/scrapy/core/downloader/init.py", line 83, in init
scraper_appointment_finder_1  |     self.middleware = DownloaderMiddlewareManager.from_crawler(crawler)
scraper_appointment_finder_1  |   File "/usr/local/lib/python3.6/site-packages/scrapy/middleware.py", line 53, in from_crawler
scraper_appointment_finder_1  |     return cls.from_settings(crawler.settings, crawler)
scraper_appointment_finder_1  |   File "/usr/local/lib/python3.6/site-packages/scrapy/middleware.py", line 35, in from_settings
scraper_appointment_finder_1  |     mw = create_instance(mwcls, settings, crawler)
scraper_appointment_finder_1  |   File "/usr/local/lib/python3.6/site-packages/scrapy/utils/misc.py", line 166, in create_instance
scraper_appointment_finder_1  |     instance = objcls.from_crawler(crawler, *args, **kwargs)
scraper_appointment_finder_1  |   File "/usr/local/lib/python3.6/site-packages/scrapy_proxies/randomproxy.py", line 78, in from_crawler
scraper_appointment_finder_1  |     return cls(crawler.settings)
scraper_appointment_finder_1  |   File "/usr/local/lib/python3.6/site-packages/scrapy_proxies/randomproxy.py", line 64, in init
scraper_appointment_finder_1  |     parts = re.match('(\w+://)([^:]+?:[^@]+?@)?(.+)', custom_proxy.strip())
scraper_appointment_finder_1  | AttributeError: 'NoneType' object has no attribute 'strip'
appointment-finder-berlin_scraper_appointment_finder_1 exited with code 1

Hey @zaheeruddinbabur ,
Thank you for the feedback. Please pull the latest version of the code.
Just comment with line comment the CUSTOM_PROXY
Thanks

I am closing the issue. If the issue continues, feel free to re-open it.


Temporal Functors

PR defines all of the temporal functors in terms of applicative functors that can be translated directly into a BFS with the correct semantics.

If there's any chance I would love to sit in as well. Highly interested in Spectacle. Thank you for open sourcing it!


Unable to check for Denizen book

Using denizen book script container and <player.inventory.contains[i@bookname]> does not work, as inventory does not contain that item, it contains i@written_book{blahblah]

Wut.

@Morphan1 ?

Fixed in previous release.


refactor bundle files into releases directory

Refactors storage of bundle files to support charmhub channels and releases.
Temporarily removes kubeflow-lite bundle (to be added later into new releases structure)

whoops, caught some extra files by mistake

@DomFleischmann the addition of the -lite bundle lgtm


Add other options to user-submitted Variant ClinVar ID

ClinVar IDs at the variant level (entered by user, not myVariant.info) should have 3 options.

ClinVar ID
N/A -> not applicable
None Found.

After discussion with @malachig and Lynzey, this seems like the best option. N/A is used in cases like fusions where ClinVar has no way to represent this. Other variants may be entered at some point into ClinVar but we want to mark variants that were checked and when they were checked, hence, "none found".

This should probably be implemented with a select dropdown and the current multi-select component. The multiselect would only be shown if the user chooses the option that indicates that they have one or more clinvar IDs to provide.

We should also disable ClinVar url construction for the 'None Found' option as was apparently done for 'N/A'. The latter doesn't generate broken links but the former does.

We have "None found" and "Not applicable" as the sections. The documentation needs to reflect this.

This issue is redundant with https://github.com/griffithlab/civic-client/issues/761. Closing


Passing a struct that implements gen instead of a ItemGenerator

I haven't used your library yet but I am interested,  as I would like to populate a large list in a project of mine.
Am I understanding right that right now VirtualList expects a ItemGenerator struct as input?
As ItemGenerator is quite a simple Struct, could it be more flexible for ItemGenerator to be a Trait instead of a struct, so that one could pass as arbitrarily complex a Struct so long as it implements ItemGenerator::gen?

I'm not sure I fully understand the proposal, there are two interpretations:

Make VirtualList generic over an underlying G: ItemGenerator where ItemGenerator would be a new trait. This sounds reasonable, but would probably also lead to more codegen in the long run for marginally better performance (basically using G directly in the component instead of erasing through an indirection). Feel free to prove me wrong on this point.

You simply want the trait to replace the call to ItemGenerator::gen for more ergonomics. Consider instead that you could just implement Into<ItemGenerator> for your structs (the impl would probably call VirtualList::item_gen under the hood) and pass it as items={your_gen.into()}.

Hope that helps. Note that I kinda need to update the library to yew 0.20 at some point anyway. Feel free to send a PR my way if you end up patching it yourself ^^

I was thinking 1.:
I'll try to be a little more specific and rephrase:
Say I have a set of structures D, like a Vec<D>. These D implement Into<Html>. I don't need to render these D structures until I scroll to them.
So, maybe my knowledge is lacking here, but how do write a function Fn(usize) -> Html that can get the proper D struct at index idx and generate the Html from it?
Seeing as I did not see how to (without making it FnOnce or something), I thought that what would suffice would be to have a struct MyGen{vec:Vec<D>} that would implement
fn gen(idx:usize)->Html{
    self.vec[idx].into()
}

This could be enforced via a Trait requirement.

Note that I kinda need to update the library to yew 0.20 at some point anyway. Feel free to send a PR my way if you end up patching it yourself ^^

I have just done that because my project is dependent on 0.20, I'll send a PR (there was only one line to change + the cargo file)

So, maybe my knowledge is lacking here, but how do write a function Fn(usize) -> Html that can get the proper D struct at index idx and generate the Html from it?

You need to be prepared to render a specific index multiple times, if the user scrolls back and forth. Something like the following should work
let vec: Vec<D> = todo!();
let items = VirtualList::item_gen(move |idx| {
    vec[idx].clone().into() // With D: Clone
    (&vec[idx]).into()      // OR With Html: From<&D>
    vec[idx].view()         // OR with some D::view(&self) -> Html method
});

I see that currently the API accepts only impl Fn(usize) -> Html. It might be possible to widen this to impl FnMut(usize) -> Html, anyway.
Thanks for the PR, will review it in the coming days, after I hand in my thesis ^^

So, maybe my knowledge is lacking here, but how do write a function Fn(usize) -> Html that can get the proper D struct at index idx and generate the Html from it?

Something like the following should work

Well, I guess my knowledge was lacking ! Thanks, your suggestion worked. I was using a borrowed Rc<Vec<D>> so I was able to Rc::clone() it before using it in 'items'.


Minor code clean up.

Remove unused variables
Change declaration of constants from var to let
Remove unnecessary optionals and force-unwrapping

Signed-off-by: alexbasson<EMAIL_ADDRESS>

@alexbasson Please merge develop into this branch and push again so the CI tests run. Thanks!


[language][move-prover] Replace {:inline 1} with {:inline} on Boogie functions in prelude

Motivation
The inline attribute on Boogie functions, unlike Boogie procedures, does not take a parameter.  This PR fixes the incorrect attributes.
Have you read the Contributing Guidelines on pull requests?
Yes
Test Plan
Existing tests
Related PRs
None.

@bors-libra r=junkil-park

:pushpin: Commit 2d68877 has been approved by junkil-park

:hourglass: Testing commit 2d688773ce02ff0e8953e06cab53829d9278fb8e with merge 68d60b8d1750173e3e1658af845ec2e03121ba76...

:sunny: Test successful - checks-circle_commit_workflow
Approved by: junkil-park
Pushing 68d60b8d1750173e3e1658af845ec2e03121ba76 to master...


sqs-queue: Update to include SQS Policy

what

Update SQS Queue component to include an access policy block
Add IAM Policy variable to make it writeable per queue
Added helpers to add filters like current account and current queue arn

why

need an access policy that can allow s3 notifications

/terratest


Including tags in search results within a book/chapter

Describe the feature you'd like
Currently, when you use the global search you will see what tags are attached to the particular search result.

However, the same is not true when using the search within a book/chapter.

It would be a nice QoL if book/chapter searchs included the attached tags as the global search does.
Describe the benefits this would bring to existing BookStack users
Consistent search experience. Quality of Life
Can the goal of this request already be achieved via other means?
Nope
Have you searched for an existing open/closed issue?

[X] I have searched for existing issues and none cover my fundemental request

How long have you been using BookStack?
0 to 6 months
Additional context
No response

Thanks for the request @Mailstorm-ctrl, but I feel that #3407 already covers the fundamental request here so I'm going to close this off as a duplicate.


feat: add multiple treasuries support in editor

Summary
This PR adds support for configuring execution with multiple treasuries
Closes: https://github.com/snapshot-labs/sx-monorepo/issues/138
How to test

Get two spaces to test with (one on offchain with oSnap enabled and multiple treasuries configured and another onchain with execution and treasury configured).
Try creating proposals on both.
Everything works as expected: on offchain you can select multiple treasuries at once, onchain should be limited to one at the time.
You can open drafts with execution.
You can open editor with execution from treasury page by clicking Send token or Send NFT button.

Screenshots

Looks great! Few issues I've noticed:

Using treasury page to populate a transfer don't work for me (tested on a Snapshot space)
Treasury row should not be a button or not have a hand cursor

Probably not related to this PR:

When I publish a proposal I'm redirected to my parent page (in my case it was treasury) we should redirect to the proposal ideally for Snapshot and on proposals page for SX.
If I draft a proposal unlogged then login and comeback to the draft to post it, when I click to publish it emptying the editor page (but still broadcast the proposal), see:

Publish button should not be gray if unlogged, it should be clickable and trigger force connection.

I'm trying to think about a more compact design, maybe execution strategies toggle and treasury rows should be merged together. What do you think?

I mean something like this to make it more compact:

When I publish a proposal I'm redirected to my parent page (in my case it was treasury) we should redirect to the proposal ideally for Snapshot and on proposals page for SX.

If I draft a proposal unlogged then login and comeback to the draft to post it, when I click to publish it emptying the editor page (but still broadcast the proposal), see:

https://github.com/snapshot-labs/sx-monorepo/pull/586

Publish button should not be gray if unlogged, it should be clickable and trigger force connection.

https://github.com/snapshot-labs/sx-monorepo/pull/587

WalletConnect integration seem to be broken, it doesn't populate txs in a proposal (tried with Uniswap)

oSnap should be disabled if the proposal is not using basic voting

The way it works right now is that when you activate any of the osnap treasuries it will switch your proposal to Basic voting and lock-in this voting type. Should it be the other way around? If that's the case I think we might need some message to make it clear why treasuries are disabled as this will be confusing - especially with the fact that default voting type is not Basic.

WalletConnect integration seem to be broken, it doesn't populate txs in a proposal (tried with Uniswap)

Regression from https://github.com/snapshot-labs/sx-monorepo/pull/512, fixed in https://github.com/snapshot-labs/sx-monorepo/pull/590 for master and also here in this PR.

Looks good,
I would just add the execution strategy name on the proposal page, similar as our design in the editor, I would also add the "Transactions" label on between the treasury row and the txs

Updated:

On the editor it show "Timelock execution strategy" and on the proposal it show "Timelock" can we show "Timelock execution strategy" on both instead? Otherwise its works well, great work!


Running Javascript.Net in a ASP.NET Web Applications

is it possible to build this project for a ASP.Net Web Application?
I think the problem is dependency on ICU files.
Can any one help me?

You will need to include all those files in the same directory as the JavaScriptDotNet.dll, but you've probably already tried that.

Yes i tryed that. I basically copied all the settings from the working console application to new web application but i get a dependency error on  JavaScript.Net.dll. I saw with the Assembly Binding Log Viewer that ASP.Net could not load icuuc.dll and icui18n.dll so i guess thats the problem.

Did you copy the 64-bit DLLs?  Most servers are running 64 bit.

Yes i tryed everything. Is it possible to build Javascript.Net as one single dll with everything inside?
Thx for your help.

We use this library in a ASP.NET web application on .NET Framework successfully for a while now. From what we've learned over the years the following things are typically the cause of those errors.
IIS has to run in 64 bit mode
Should be self explanatory, this holds for both IIS and IIS Express (make sure to tick the box in the VS settings).
Missing Visual C++ Redistributable
You must have the Visual C++ Redistributable package installed on the target machine. This can be checked easily by compiling the included Fiddling project (as 64 bit exe) and running that on the target machine.
Running into assembly load problems in IIS
IIS/IIS Express attempts to load every assembly present in the bin/ folder, including the unmanaged V8 specific ones. This led to similar errors for us before. We solved that problem by not including the JavaScript.Net.dll and other V8 assemblies in the bin/ folder, but instead deploying those into a sibling folder. You can then use the AssemblyResolve callback on the AppDomain to resolve JavaScript.Net.dll from the sibling folder (see e.g. https://stackoverflow.com/a/5262129). This is typically setup in the Global.asax.cs.
WebApp
    |--bin
        |--...
    |--V8
        |--JavaScript.Net.dll
        |--icuuc.dll
        |--...

Good luck!

@spahnke Thank you very much! You helped a lot!


Curation mvn enabled

[X] The pull request is targeting the dev branch.
[X] The code has been validated to compile successfully by running go vet ./....
[X] The code has been formatted properly using go fmt ./....
[X] All static analysis checks passed.
[X] All tests have passed. If this feature is not already covered by the tests, new tests have been added.
[X] All changes are detailed at the description. if not already covered at JFrog Documentation, new documentation have been added.

This PR enable curation support for maven according to xray and artifactory version, it also keep the option to enable it by env var


🚀 - Trigger an event on select for Combo/MultiSelect

Description
Possibly related to: https://github.com/taiga-family/taiga-ui/issues/9304
It would be nice to have a select event when an option is chosen by the user via keyboard/mouse.
This would differ from the value change because the event would only be triggered by user interaction, not a programmatic value being set.

There's (itemClick) event on tui-data-list-wrapper, is that what you are looking for?

Something similar to that yeah. But it doesn't handle a selection via the enter key on the field. Also would be nice if the field would handle it without needing to know the underlying implementation. In this case I'm using tui-data-list and it doesn't appear to expose itemClick.

If you are using tui-data-list then you have all the button elements exposed to you so you can just listen to (click) on them. As for enter on the field — we will keep that in mind when refactoring the controls.


NPM Package out of Date

Howdy,
Sorry for the noise, but I'm just wondering if we could we get the latest version of the package that's ES5 transpiled published up to NPM? I'm depending on my fork still in my project and would love to depend on the vanilla NPM package.

Yes! You should find 0.2.14 available shortly on npm.


[stable/prometheus] server.sidecarContainers not working

Describe the bug
I'm trying to configure a sidecar container in my deployment and it's not working.
Version of Helm and Kubernetes:
Helm: v2.14.1
Kubernetes: v1.14.6-gke.1
Which chart:
stable/prometheus
What happened:
Sidecar container weren't created.
What you expected to happen:
A sidecar container created.
How to reproduce it (as minimally and precisely as possible):
My values.yaml:
server.sidecarContainers:
    containers:
        image: gcr.io/stackdriver-prometheus/stackdriver-prometheus-sidecar:0.5.2
        imagePullPolicy: IfNotPresent
        name: sidecar

I've tried also:
server.sidecarContainers:
    image: gcr.io/stackdriver-prometheus/stackdriver-prometheus-sidecar:0.5.2
    imagePullPolicy: IfNotPresent
    name: sidecar

But no luck.
Any ideas?
Thanks a lot!

server:

  ...

  sidecarContainers:
    - name: sidecar
      image: gcr.io/stackdriver-prometheus/stackdriver-prometheus-sidecar:0.5.2
      imagePullPolicy: IfNotPresent

'should do the trick :)

It worked for me!
Thanks @nervo!


Fixed #203 - Right click on LevelSprite edition creates a new Collider

Removed the context actions from the current actions list instead of the general action list.

Sorry for the mess of commits here, I couldn't figure out how to squish them into one. Basically just the commit related to #203 is new.

I'll check that tomorrow :) Your help is greatly appreciated ! Don't worry for the mess in the commits "Squash and Merge" will combine all those commits into a single one.
I think the other bug you're mentionning is that the UI doesn't catch editing events (which could be very useful, for example, not being able to change camera size by scrolling the mouse wheel while in editor menu).
You can create the issue about the other bug if you want to add details on it :)


Add support for --server-prefix for catalog-create to deploy catalog not in the root of the website

After migration to https://router.vuejs.org/guide/essentials/history-mode.html some changes required to have /assets and /artwork to be placed at / since while navigating into "/sub/folders" in the new mode it would also append those if they were relative.  For datalad-registry we need to deploy catalog under some /catalog/ prefix or alike, so then we cannot serve them from the /.

@yarikoptic I was thinking about this again, was there a specific reason why having relative URLs wouldn't be sufficient and that something like a base url is specifically necessary?
I've started working on this locally and made all URLs relative, and ended up with the same error that we stopped at previously. So there seems to be an issue with all-relative URLs, but I still need to figure out what exactly.

Ok so redirection is the cause.

The use of the <base> html tag in the index page meta seems to be useful. If I make all URLs relative and include <base href="/"> inside the page metadata, the page renders correctly, and navigation also works correctly. This is when the app is served from root, e.g. http://localost:8000.
If I change the root so that the app is served from e.g. http://localost:8000/datalad_catalog/catalog, and also change the base tag to <base href="/datalad_catalog/catalog/">, then the page also renders correctly. But when I then navigate to a specific dataset url, e.g. http://localhost:8000/dataset/deabeb9b-7a37-4062-a1e0-8fcef7909609/6d7fb68264f9b9951ae141fc830712a8744e3293, I get a standard 404 (not the app-specific 404 page). I think the required redirection setup that takes care of the VueJS single-page-app history mode shortcoming is to blame for this, since I didn't update that redirection url to account for the changed base url. I must still test this though. A challenge that I see here and that I'm not sure how to fix would be that the server redirection setup is not (necessarily?) dynamic, so how would one specify a dynamic base url/prefix to a static server setup...

http://localhost:8000/dataset/deabeb9b-7a37-4062-a1e0-8fcef7909609/6d7fb68264f9b9951ae141fc830712a8744e3293, I get a standard 404 (not the app-specific 404 page)

why it is not http://localost:8000/datalad_catalog/dataset/... ?
so adding that /datalad_catalog/ prefix explicitly to those locations to reach /assets/ and /artwork/ isn't enough?

@yarikoptic https://github.com/datalad/datalad-catalog/pull/478 should address the issues we had with relative/absolute locations of assets. Here, one wouldn't need to pass a flag specifying the server prefix to catalog-create. You can create the catalog at any location relative to the server root in the standard way. The import thing to update is the server's redirect rule, which should take the location of the catalog relative to the server root into account.


Button Panic

Hy guys,
I would like to leave the Service Running Off, and when you press the POWER button for 3 consecutive times, even with SREEN_OFF , the service is running on. It would be a panic button. It's possible?
Best Regards.

I don't think it's possible. Especially with locked screen.

this application does this (https://www.panicbutton.io/)  , but the traccar is much better in my opinion and only lacked this functionality to help people in a panic. tks my friend

On the website it says:

You should be able to use Panic Button from Android Gingerbread (2.3.3) to KitKat (4.4.2)

Which basically means that it works only on 21.5% of the devices. From the Google Play listing, it seems like there are a lot of device-specific issues as well, so the number is even lower.

Exactly, that's the problem , only works on Gingerbread ( 2.3.3 ) / KitKat ( 4.4.2 ) , so I figured to have this functionality in traccar . Thank you very much.

I guess it works only on old versions for a reason.


CodeQL: Incomplete string escaping or encoding @ lib/readfiles.js:13

Hi @guatedude2, following #7 and #8, CodeQL reported another finding (see screenshot below):

Title: Incomplete string escaping or encoding.
Location: lib/readfiles.js:13
Description: Sanitizing untrusted input is a common technique for preventing injection attacks such as SQL injection or cross-site scripting. Usually, this is done by escaping meta-characters such as quotes in a domain-specific way so that they are treated as normal characters.
Tool: CodeQL
Rule ID: js/incomplete-sanitization

You probably see the same on your CodeQL dashboard.
Is this a true positive or false positive?
Thanks

Refactored library to TypeScript


Question about bi_data and attention type with bsz

Hello.
First, I know that batch size is even number with bi_data
How about between attention type(uni- or bi-)??
Is it related to batch size even or odd??

No it's not.

@kimiyoung  Does the value of bsz change somehwhere?
In train_gpu.py I set the train batch size to 8 and I checked the value of the batch_size parameter there. However, I fail the assertion assert bsz%2 == 0 in modeling.py. Any reason for this?

@hockeybro12  Hello. did you use bi_data True?

@graykode Yes. Also I was able to run the model by commenting out that assertion and didn't get an error. That's interesting.

@hockeybro12 What is your run Task? it means run_classification, run_squad or etc.

@graykode run_gpu. I'm trying to do my own pre-training.

@hockeybro12 This is because, I assert tensor type with python interger type,, I will fixed it and re-pull request

@graykode Ok, thanks.

Hi, I encountered the same problem here when the assertion bsz%2==0.
I print out the bsz. The bsz was something like this:
I0717 06:04:18.694480<PHONE_NUMBER>07200 modeling.py:236] *******************************************batch size before assertion fail Tensor("model/transformer/strided_slice:0", shape=(), dtype=int32, device=/gpu:0)**************************************************

Have this been fixed recently? Thank you!


Docs bugfixes

@ssorenso @zancas FYI
What issues does this address?
N/A
What's this change do?
This PR contains some relatively minor docs bugfixes.
Where should the reviewer start?
Any background context?

Can one of the admins verify this patch?


[travis] update "posix-app-ncp" target to use new configure options

How does this apply to the "posix-app-ncp" target as the title suggests?

Ah. I miss-typed. I meant "posix-ncp-spi" target. Let me fix.


Xamarin/netcore Support

Would be nice to have Xamarin support and .netcore.
Thanks, Ilya.

OK, I will try to implement it asap


np.Templating Quick Note folder:/ results in folder called / being created

When creating a quick note (type: quick-note) using frontmatter configuration of either:
folder: <select>
or
folder: <current>
After prompting for the note name using the following:
newNoteTitle: <%- prompt('noteTitle','Area') %>
The note is created in a new directory called either <select> or <current> depending on what was in the frontmatter.

Expected behaviour
As per https://nptemplating-docs.netlify.app/docs/templating-commands/quick-notes
System

Device: Macbook
OS: macOS 12.3
NotePlan Version 3.5.1
np.Templating 1.0.2

Plugin Console Log
JSLog: Executing function 'templateQuickNote'

Fixed in np.Templating 1.2


Functorial drawing

Implement drawing as a functor into a category of plane graphs.
Improvements:

[x] center box node w.r.t. dom and cod nodes
[x] make Bezier curves one touch bendier

Refactors:

[x] bubble
[x] sum
[x] trace
[x] equation

Clean-up

[x] rename legacy -> backend
[x] remove diagram2nx
[x] remove grid

Documentation

[x] composition (show step by step)
[x] interchanger
[x] foliation
[x] Eckmann-Hilton

Fix glitches:

[x] gif with steps of different image sizes
[x] twists have different sizes when composed
[x] outputs should be aligned with inputs when same number of wires
[x] reduce the asymmetry size so that we keep some margins
[x] in chain rule one of the spiders is not aligned with its single output wire
[x] men are mortal

@boldar99 @y-richie-y It took me forever to wrap it up but the PR is ready for a last round of review! Sorry in advance for the monster, I swear in the future I'll try to avoid this kind of huge refactor.


Spike: introduce register abstraction

DO NOT MERGE! This PR, in its current form, introduces painful performance penalties.
This is an attempt to introduce interfaces Register and RegisterReadOnly that capture in one place the kinds of operations and queries you can do on a register. There is an implementation, PostgresRegister, which captures all of the existing behaviour.
The PostgresRegister is super inefficient because it goes back to INSERTing rows one-by-one rather than getting proper benefit from JDBC batch inserts. This could be improved by having the PostgresRegister batch things up internally in memory and periodically send stuff off in a batch insert operation.
I think this leads to interesting questions about where database transactions get managed (in this object? in the consumer?).
Thoughts?

I pushed a couple of updates that (are supposed to) move transaction handling in to the PostgresRegister object. I'm not sure whether it actually does what I want -- when I log out the SQL stuff, it seems to be doing some nested transaction committing stuff.

I've pushed some more commits that resolve the performance and transaction handling issues.
Any comments? Anyone? :tumbleweed:

rebased.

The VerifiableLogService appears to have its own EntryQueryDAO independent of the one used by the RegisterDAO. Could we get rid of EntryMerkleLeafStore and have RegisterDAO implement MerkleLeafStore? The EntryIteratorDAO can be use the EntryQueryDAO attached to the handle in RegisterDAO, similar to how it's already done for DestinationDBUpdateDAO. Then we can pass the RegisterDAO to the VerifiableLogService and remove bind(entryQueryDAO) from RegisterApplication.

Is it correct that Register 'is a' ReadOnlyRegister? Could Register be a separate interface - maybe WritableRegister?

I don't think it's incorrect in the sense of Liskov substitutability. The intention is that a RegisterReadOnly is simply a read-only view on to a Register, much like Collections.unmodifiableList() offers a read-only view of a List.  Maybe this could be communicated better?
We could instead have independent "read" and "write" interfaces, but I think we'll soon get to a point where we'll need to consume both in one class. In particular, in the external representation spike, we want to write a bunch of items and entries and then read a root hash to assert that we've got the correct value.

Does PostgresRegister have any specific link to Postgres? Should the Register type in the model just show its relationships to its component items etc?

@andyjpb made this point too. I think you're both right.

RegisterDao only interacts with the database through other xxxDao objects. Is it more of a service than a Dao?

Yes, probably. I wonder if RegisterDao will maybe go away after further refactoring?

Generally as transactions encompass >1 call to a Dao, should all GetHandle implementing classes live in a service layer?

Yes, I think so.
I think this shows that introducing this interface shines light on further refactoring that is desirable 😄

The VerifiableLogService appears to have its own EntryQueryDAO independent of the one used by the RegisterDAO. Could we get rid of EntryMerkleLeafStore and have RegisterDAO implement MerkleLeafStore? The EntryIteratorDAO can use the EntryQueryDAO attached to the handle in RegisterDAO, similar to how it's already done for DestinationDBUpdateDAO. Then we can pass the RegisterDAO to the VerifiableLogService and remove bind(entryQueryDAO) from RegisterApplication.

Yes, the VerifiableLogService was just chucked in wholesale without further refactoring at this point. I didn't want to do this in this PR as it's already quite a big changeset and I haven't made things any worse.  But you rightly raise further opportunities for refactoring 😀


Build Tools | Update SVGO to force merging SVG paths; remove mask in asset-text icon

Jira
http://vjira2:8080/browse/BDS-2025
Summary
Updates SVG build tools config to force SVGO to merge together similar paths. Should achieve a very similar result to https://github.com/boltdesignsystem/bolt/pull/1746 without requiring all original SVG source files to be updated.
Details
The only SVG icon that had any weird issues with this update seems to have been asset-text's mask which this PR also updates to no longer use.
How to test

Review SVG icons in Pattern Lab to confirm everything is rendering correctly / as expected

PR was released with v2.18.0


Add dob column and processing

Closes #10
@prrao87 I didn't see you assigned this one to yourself until just now so feel free to close this one if you were already working on something.

No this is great! Feel free to add a PR anytime if you're looking into it 😄

I updated the README files with an explanation of the difference in standard library Python and Rust crates for the datetimes. Hopefully I explained it well, but if you think we need something different let me know.

This code is great, but I was thinking about this, and I think the problem statement might have been framed too ambitiously 😅... This is a great example of why Rust is non-trivial for people coming from interpreted languages. Just this small deserializer snippet has immense complexity and is really hard to read for a beginner.
fn date_deserializer<'de, D>(deserializer: D) -> Result<Option<NaiveDate>, D::Error>
where
    D: Deserializer<'de>,
{
    let date_str: Option<String> = Option::deserialize(deserializer)?;

    match date_str {
        Some(d) => NaiveDate::parse_from_str(&d, INPUT_DATE_FORMAT)
            .map_err(serde::de::Error::custom)
            .map(Some),
        None => NaiveDate::from_ymd_opt(1970, 1, 1)
    }
}

To be able to understand this code as a beginner in Rust, the following things need are required knowledge:

What deserialization/serialization is, and why they're necessary in a lower level language like Rust
Lifetime annotations and where sugar syntax to handle complex types
Result (Ok) and Option enums with Some and None variants
Complex error handling with error propagation using ?
Match statement to catch all result and option types
Mapping custom error types

Whew! Way too much to explain to someone who's just starting off, even if they've read the Rust book. I think it makes sense to keep this, but in a new directory and moved to much later in the book. I'm thinking the proposal below makes sense.
Proposal

The chrono crate and datetime parsing are still important tasks in their own right, so these concepts deserve their own piece, but introducing lifetime annotations, complex error handling and all this added complexity early on to an inexperienced Rust programmer is overkill.
It makes sense to keep this piece, but rename the parent directory to datetime_parsing_csv, and make this a more intermediate piece to be introduced at a later time (the regex_json piece is far simpler to get acquainted with the crate ecosystem, and so can be introduced immediately after the intro piece)
Write a simpler piece simple_parsing_csv where we take a much simpler CSV file, and introduce structs, serialization and deserialization with simple string/integer/float handling and how to work with CSVs
The layout of the pieces can be reorganized into a form that covers concepts from the Rust book (structs, enums, etc., with lifetimes coming later on)

I really think that lifetimes is one of the hardest concepts in Rust, and even code with lifetime annotations make it very intimidating to new users. So I was hoping to introduce code that uses lifetimes later on.

I agree with you here :100:. The difference in new_item["dob"] = (datetime.strptime(item["dob"], "%m-%d-%Y").date() if item.get("dob") else None) in the python version to the rust version is likely to scare people off if this is presented as a "simple" concept early on.

Yup! I also had the idea that using this datetime CSV parsing later on is a great point to introduce Polars, which makes this sort of thing far easier in both Rust and Python (not to mention more scalable). So I've redone the docs and reorged the pieces accordingly.

I've cleaned up the tests and made the Python/Rust functions more similar (as far as possible). Merging this and closing #10


There are many mistakes in the example

https://github.com/shaovie/goev/blob/main/example/async_http.go
IOHandle  Fd Read AsyncOrderedFlush AsyncWrite EvFdMaxSize ....

什么错误？可以正常编译并启动呢


Fix "for_delete" when generating log error with inexistent object pk

Problem
When trying to delete a row,  an exception is raised when generating log entries.
Solution
Now before deleting the row, we save the pk first for future references.
Acceptance Criteria
Have you written tests? Have you included screenshots of your changes if applicable?
Did you document your changes?
No additional tests. No screenshot. I've added it to the Changelog (after v2.0.2).

Coverage increased (+0.003%) to 96.136% when pulling a04922b44bdd4df22d07c5f13b254978cde2697c on msart:fix-for-delete-instance-pk into d84d3a079d35103f12de4078f60c17b649c693d2 on django-import-export:master.

Thanks for the contribution. I'm going to convert this to a draft since it is lacking test coverage and documentation.

A version of this change was included in #1347


DotNetPublishSettings is missing a way to set the --os option

Prerequisites

[X] I have written a descriptive issue title
[X] I have searched issues to ensure it has not already been reported

Cake runner
Cake Frosting
Cake version
3.0.0
Operating system
Windows
Operating system architecture
64-Bit
CI Server
No response
What are you seeing?
Using dotnet version:
$ dotnet --version
6.0.404

when I run
$ dotnet publish --help
Description:
  Publisher for the .NET Platform

Usage:
  dotnet publish [<PROJECT | SOLUTION>...] [options]

Arguments:
  <PROJECT | SOLUTION>  The project or solution file to operate on. If a file is not specified, the command will search the current directory for one.

Options:
...
  --os <os>                            The target operating system.
...

I get an option to set the the target operating system.
However, DotNetPublishSettings.cs does not provide access to the option. (DotnetMSBuildSettings.cs does not either).
What is expected?
I should be able to set the target OS using the DotNetPublishSettings. e.g,
var publishSettings = new DotNetPublishSettings
{
    Os = "win"
};

Steps to Reproduce
var publishSettings = new DotNetPublishSettings
{
    Os = "win"
};

does not compile.
Output log
'DotNetPublishSettings' does not contain a definition for 'Os'

My question is, why is it relevant to add --os in the settings? And what are your expectations from this setting?
If you need to use particular target os for the build, you might as well run build.ps1 or build.sh accordingly.

Just to be sure we are are on the same page I am advocating adding the option to the DotNetPublishSettings class. The dotnet CLI already supports this option.

Specifies the target operating system (OS). This is a shorthand syntax for setting the Runtime Identifier (RID), where the provided value is combined with the default RID. For example, on a win-x64 machine, specifying --os linux sets the RID to linux-x64. If you use this option, don't use the -r|--runtime option. Available since .NET 6.

We use this option to output a windows executable even though we build on a unix box so I don't think calling build.ps1 will help me in this case.
However, reading the docs quoted above, it looks like I can get away with using the Runtime option in DotNetPublishSettings. May still be worth adding Os to get feature parity with the CLI.


Android-Kotlin : 09.13 Date Picker in Android (Kotlin)

Description 📜

Give a step-by-step tutorial of Date Picker in Android (Kotlin).
Required Documentation or Video or Audio.

Domain of Contribution 📊

[x] Android Dev (Flutter, Java, Kotlin)

References :

https://www.tutorialspoint.com/android/android_datepicker_control.htm

Please Read it Carefully Before Contributing

Changes should be made in Android_Development_With_Kotlin/ directory under Android_Development_With_Kotlin branch.
Inside Android_Development_With_Kotlin/ directory creates a directory and names it according to the topic ( for this issue 09. Dynamic User Interface)
Inside 09. Dynamic User Interface/ directory add your task with subtopic number and name and make changes accordingly.
You have to push your PR to the Android_Development_With_Kotlin branch only.
You can take help to the references but don't simply try to copy it. Just explain in your own word.
This issue is for GWOC'21 contributors only.
You need to push in a single commit. If there exists more than one commit then you need to squash your commits into one commit.
Will assign you on a first come first serve basis.
Please try to complete your assigned task within 7 days. If you need some more time then, please inform mentors and supervisors.
If you have two previously assigned issues on Android-Kotlin pending then please first complete them.

Supervisor @rahulsain

Happy Contributing. Best of Luck.💖

/assign


[Feature-Policy] Add "allow" to keywords

Simplify search, people may specifically search for "allow"  + "attribute".

Thanks!


An 3897/streamline tests

Adds 4 tests to the silver models that load data from the external table.
Use prod profile, as dev has not been refreshed to catch up.
Suggested cmd to test the current mainnet23:
dbt test -s tests__streamline_blocks_gap --vars '{"TEST_RANGE": True, "start_height": 55114467, "end_height": 100000000}' -t prod

Updated collections, txs, tx results to include fully missing blocks


[ci] Moves the CI to Nix. - [merged]

In GitLab by @freuk on May 9, 2019, 11:03
Merges nixCI -> replicaset

In GitLab by @freuk on May 9, 2019, 11:07
added 19 commits
089e66c4...4e8c08e5 - 18 commits from branch replicasete10f344a - [ci] Moves the CI to Nix.
Compare with previous version

In GitLab by @freuk on May 9, 2019, 18:52
added 3 commits
e10f344a...24bfa6d0 - 2 commits from branch replicaset1e84a751 - [ci] Moves the CI to Nix.
Compare with previous version

In GitLab by @freuk on May 9, 2019, 19:00
added 3 commits
e10f344a - [ci] Moves the CI to Nix.81775547 - Merge branch 'nixCI' of xgitlab.cels.anl.gov:argo/aml into nixCI289c6495 - checkpatch fix
Compare with previous version

In GitLab by @freuk on May 9, 2019, 19:11
added 1 commit
cc7f9e0a - checkpatch
Compare with previous version

In GitLab by @freuk on May 10, 2019, 06:55
added 1 commit
087b29f5 - [fix] checkpatch
Compare with previous version

In GitLab by @freuk on May 10, 2019, 07:07
merged


Find in files to search specific extensions.

Sometimes there is a need to find all references in files of a specific extension. (for example search for something in ALL *.js files in a project OR *.json files)
There should be support to search in all files with a specified extension.

This is a good feature to have, Will try to implement this for 1.6.
Maybe inclusion sets like exclusion sets in file filters?

Or a fuzzy search like something in google
"search string" in:"*.js,*.css"

@petetnt @swmitra Any ideas on this workflow?

@abose I think the easiest (best) way to achieve this would be using the globbing patterns from node-glob.
You could have a filter (instead of exclusion and inclusion sets), that would default to **. If you wanted to search everything but .js files, you could apply !**/*.js, or to filter .json files only you'd only have to apply **/*.json. Many developers are already familiar to the globbing sets and the current File Filter syntax is pretty much a subset of the node-glob patterns anyway, as seen in the current implementation where the patterns are already called globs.
The drawback would be that existing Exclusion sets would have to be converted to the new format, if they are not compatible as-is.

Yeah, we could rename as filter sets and put in an in browser version of node-glob in.
Will check it out
Also will be usefull to put in a fuzzy mode like "search string" in:"*.js,*.css" or "search string" notin:"*.js,*.css,node_modules" for adhoc quick filtration.

@petetnt node-glob makes a lot of sense to an end user like me. As mentioned we already use globs and most are familiar with it.


add ghostscript to use eps image file

When eps image file (.eps) is inputed in tex file, it doesn't work. The error which caused by the absence of Ghostscript. Then, I added a new line to install Ghostscript.

I won't support to embed EPS, because dvipdfmx allows embedding PDF, PNG or JPEG.
Please consider converting your images to PDF, PNG or JPEG.
I'll keep a tiny Docker image.
To install Ghostscript, the Docker image file will be large.
If you need to use an EPS file, you can customize based on this image.
FROM paperist/alpine-texlive-ja
RUN apk --no-cache add ghostscript


lethe_pyvista_tools .vtu file hardcoded numbering is not valid anymore - error while postprocessing

.vtu numbering has changed from 4 digits to 5 digits, but lethe_pyvista_tools still considers 4.

A quick fix will be done tomorrow


[Don't merge] Build system

Implements #1 , pre-requisite for CI and everything.
TODO

[x] Dockerfile for i686 cross compiler
[x] github action to build the image and upload it to ghcr
[ ] Makefile to actually build our kernel
[ ] Get stubs from OSdev to test the kernel build
[ ] Dockerfile and testing system for qemu (Needed for CI, might split into another PR)
[x] Rename docker action to something Cross-compiler specific and restrict it to run on master (better to make sure it doesn't get triggered needlessly to save minutes, also will need to make the CI one needs: it)

Reminder to self: squash this when merging

The job failed because the action wasn't allowed to push to the image repository, it should work after a setting change on the repo.


hcs-core: receive HCS Message from mirror node

Problem
Receiving messages encrypted with symmetric encryption isn't supported.
Solution
(see attached PDF for additional detail)

Assemble all ApplicationMessageChunks

If applicationMessage.unencryptedBusinessProcessMessageHash is not null/blank
-> for each row in the address book
-> attempt to verify applicationMessage.businessProcessSignatureOnHash with ED25519PublicKey
-> if successful, decrypt message with sharedSymmetricKey, then SHA384 hash the decrypted message and check hash matches applicationMessage.unencryptedBusinessProcessMessageHash
-> log error if match fails
-> log info if signature match fails on all entries in the address book
-> Store message data and chunks per persistenceLevel requirements
-> if decryption and hash validation succeed, send unencrypted message to application

If applicationMessage.unencryptedBusinessProcessMessageHash is null/blank
-> if applicationMessage.businessProcessSignatureOnHash is not null/blank
-> SHA384 hash the unencrypted message
-> for each row in the address book
-> verify signature on above hash against signature in message
-> if no match found against any entry in the address book, log error and do not send message to application
-> if match found, send unencrypted message to application

Alternatives
No symmetric encryption possible.
message-handling.pdf

The workflow has been implemented with the added logic: upon receipt of an encrypted message, a test is performed to detect whether the message is intended for the recipient and if so an attempt to decrypt is performed. In particular, the recipient tests the signature to determine if the originator is a known entity in his address-book, if not the message is skipped. If the message is from a known originator then the recipient still requires to test all shared keys to determine if he/she is the destined recipient of the message.
Messages are either plain text messages or protobuffer messages; in the latter case, any proto message can be used and there are  two designated messages that are specific to key rotation; one to detect key rotation initiation and one to detect a response .

Pair wise crypto final #426 closes this issue


object class name should not be infered from decorator name

Assume you have two different areas in your project, an admin and a customer area. You want to display the user details differently so you create two decorators for the same model: Admin::UserDecorator and Customer::UserDecorator. Using polymorphic paths with these no longer work, because draper returns "Admin::User" or "Customer::User" to rails, but in fact it should return "User" (the name of the underlying model).
I think all that's needed it to change https://github.com/drapergem/draper/blob/master/lib/draper/decorator.rb#L262 to model.name instead of self.name.
Any objections?

Sorry, I think it can't be solved the way I thought. One has to use decorates ....


Allow Secondary Sale of Fragment Instances

This PR does the following things:

Enables secondary sale of instances by adding the extrinsics: fragments.resell(), fragments.unresell() and fragments.secondary_buy(), along with their respective unit test cases (THIS IS THE MAIN THING THIS PR DOES)
In the extrinsic fragments.create(), previously the created definition vault account was not created if currency was not None. This has now been fixed in this PR
Refactored some existing test cases

(btw @sinkingsugar , @alebaffa  - do you have a better name to suggest than resell(), unresell() (😂 ) and `secondary_buy(). Thanks)

@sinkingsugar @alebaffa , can I merge this? Thanks

LGTM 👍🏻


Release v0.7.1

Issue #, if available:
Description of changes:
By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

All tests passed except scipy
FAILED test/test_dockerfile_based_harness.py::test_dockerfiles_for_gpu[scipy.test.Dockerfile-required_packages3] - assert 1 == 0
===================================================================================================================================================== 1 failed, 8 passed, 1 skipped, 2 warnings in 9147.87s (2:32:27) ======================================================================================================================================================


displayNotification Not Functioning on iOS

I have been successfully using notifee in my project for a while. However, I encountered an issue yesterday when I tested the notification feature after a month. The notifications are no longer being displayed. Strangely, I haven't made any changes related to notifications.
To investigate further, I created a clean React Native repository using react-native init and integrated notifee there, but the notifications still didn't work. You can find the repository at this link: https://github.com/bglgwyng/NotificationSandbox/tree/notifee. The local notifications fail to show up when using the displayNotification function.
What's puzzling is that other notification libraries like react-native-notifications and react-native-push-notification are also not working. I've provided examples in separate branches:
https://github.com/bglgwyng/NotificationSandbox/tree/react-native-notifications
https://github.com/bglgwyng/NotificationSandbox/tree/react-native-push-notification
Additionally, I came across a related issue in the react-native-notifications repository.
Here are the specifics of the environment where I conducted the testing:
React Native: 0.72.3
@notifee/react-native: 7.8.0
Device: iPhone 13
iOS: 16.5.1
I'm unsure whether this is a new problem with push notifications or if I've made a mistake somewhere. Any help or insights would be greatly appreciated!

Are your processing the notifications in the background? I'm pretty sure this gets cutoff as it was happening to me.
I got around it by scheduling notifications in the future using triggered notifications.
https://notifee.app/react-native/reference/createtriggernotification

@tjbo  It was in the foreground. I updated the title. Do you have a repository of working examples? It would be very helpful if you share it.

Hi, have you turned on permissions to display notifications? We also have an example app under packages/react-native/example https://github.com/invertase/notifee/tree/main/packages/react-native/example

Sorry. I made a rather foolish mistake by closing this issue because my phone was in sleep mode.
It's perplexing though, as I noticed that certain other applications managed to send notifications successfully under sleep mode.
Do we have a method to send notifications even when the device is in sleep mode?


Information on new ref syntax for by-reference cells

Fixes #1046

@sampsyo that sounds good! The system does allow for passing arbitrary cells by reference so we should update it. Please free to make the edits you proposed.


distance calculation

Distance= -593.97average**(3) + 1506.8average**(2) - 1373.1*average + 522.06
how do you substitute the values in the above...What is the equation you are using to get the  distance value.

If you will see this file https://github.com/LearnTechWithUs/Stereo-Vision/blob/master/Stereo%20Vision%20-%20Explanation%20-%20German.pdf page 26-27 you will get a clear idea about it. But it is in German.
Basically, After you get the disparity map. You measure and record the distance of the object and record their respective disparity values experimentally for multiple placements of the object.
with these observations/data po ints, you can create the regression graph (can be done in MS Excel)  from which you can get the linear equation  'Distance= -593.97average**(3) + 1506.8average**(2) - 1373.1*average + 522.06'.
It might be different according to your setup.  After getting this equation you can directly use it in your code to get the distance.
for clear understanding see the screenshot attached here.


docs: update note about Red Hat registries

We do publish images to registry.access.redhat.com now.

Nice summary


Shadowban

Opening this issue to keep us informed of a potential problem; Shadowban.
What it is? Read more on these links:
https://www.reddit.com/r/TheSilphRoad/wiki/2017-20-5-anti-bot-server-update
https://www.reddit.com/r/TheSilphRoad/comments/6cq54q/progress_in_the_fight_against_bots_the_new/
Currently I don't know what triggers the flagging and/or warning. If you want to be save, stop using main accounts for botting (unless you haven't received the warning)

This will help you to determine if you are being shadow banned.
https://www.reddit.com/r/pokemongodev/comments/6cng1n/current_guess_at_shadowbanned_pokemon/
Basically, for this event, if you didn't see a Rhyhorn for past 1 hr, you might be shadow banned. Refer to above link to check which pokemons you should be able to see if you are not shadow banned.


Supermatter grenades

About the PR
Adds supermatter grenade analog from original and brand new grenade-tool whitehole grenade.

[x] DEPENDS ON #13730

[WIP]:

[x] Items themselfs
[x] Sound code
[x] Sound for collapse
[x] Add to uplink

Media
https://github.com/space-wizards/space-station-14/assets/46600554/aa1a7e0c-9f39-4720-a045-9565c3643ef9

[x] I have added screenshots/videos to this PR showcasing its changes ingame, or this PR does not require an ingame showcase.

Changelog
:cl:

add: Added supermatter grenade analog from SS13 and brand new whitehole grenade for special operations.

Would like help.

@AlexMorgan3817 are you coming back to this

@AlexMorgan3817 are you coming back to this

@metalgearsloth , yep, just exams stuff and forgor :skull:
I will finish my gravity grenades :>

I have added le video demostration. Made AddComponentsOnTrigger, but now i understand that it can replace GravityWellTweakOnTrigger and etc.

I failed to replace AmbienceOnTrigger, because some why it is not getting sound in client and crashes it

my face when

my face when

don't spam useless comments

0_0


Give some context to the queue creation error

We have some troubles trying to figurate out where the error comes from so we think this error could be helpful :)

I added more descriptive messages for a few other errors in @3adaeb4. Thanks for the feedback.


Normalize.css Github's link in the website documentation is broken

The link pointing to the normalize.css GitHub is broken in the about section of the normalize.css website.
The line that describes the text "First, install or download normalize.css from GitHub. There are then 2 main ways to make use of it." is pointing to a broken link.

I've tried to open a PR to fix it but I couldn't find a repo for that 👍

Hello @brendonmiranda , Can I work on this issue?

I'm just pointing out the issue. I'm not sure if this project is still maintained.


[python][ci] start to support Python 3.7

GPU task fails with Python 3.7. I suppose it's due to the miss of the boost library for py37 at conda.
Drop Python 3.4 task as misleading because there are no packages for it at conda and conda silently replaces 3.4 -> 3.7 (log) in this case (Travis scenario). Appveyor has pinned Miniconda versions and in this case conda doesn't replace missed version with the newest one, but simply crashes:
UnsatisfiableError: The following specifications were found to be in conflict:
  - python 3.4*
  - python-graphviz -> python 3.5*
Use "conda info <package>" to see the dependencies for each package.
Command exited with code 1

Hum, why not test with both Python 3.6 and 3.7?

@henry0312 Sorry, didn't get it. Python 3.6 is tested here:
TASK=gpu METHOD=pip PYTHON_VERSION=3.6

@StrikerRUS Isn't a test with cpu and Python 3.6 needed?

What do you think about such change?
TASK=regular PYTHON_VERSION=3.6

Python 3.7 will be evaluated in bdist tsk

This depends on which versions we have more priority over.
As for me, I prefer TASK=regular PYTHON_VERSION=3.6 until release of Python 3.7.1.

Is it OK now?


HDDS-7323. Recon: Auto refresh toggle is switched back when visiting new site

What changes were proposed in this pull request?
Auto Reload toggle on and off should be in sync with Datanode, Pipeline and Overview Page.
What is the link to the Apache JIRA
https://issues.apache.org/jira/browse/HDDS-7323
How was this patch tested?
Manually

@dombizita

cc @duongkame

Thanks for updating your patch @smitajoshi12, it looks good to me!


Citations problems for NBR, NWI

I wrote a short script to lookup the number of citations for each of the papers you have as a reference for each index and had two problems:

Crossref can't find the citation you use for NWI (although I think this is Crossref's problem, not your's)
You reference "Fire intensity, fire severity and burn severity: A brief review and suggested usage" for NBR but the original citation should be "Comparison of AVIRIS and Landsat ETM+ detection capabilities for burn severity" which has more citations, which makes a difference for me (as well as being the original non-grey literature citation for NBR.

I can send the (simple) code for adding the #of citations for each reference if you like. I really like the fact that Awesome Spatial Indices has the reference included.

Hi @lefsky,
Thank you very much for writing!

Yes, I'm pretty sure some references would be hard to find, some of them are grey literature. About te NWI, it is actually a published paper from China with its own DOI, it is curious that it doesn't work (I just also tried in Crossref and no results where found).
The thing with Awesome Spectral Indices is that we decided to point to the original reference of the index, even if it is grey literature (it happens the same with the NDVI). The link of NBR is pointing to the proceedings of "Second U.S. Geological Survey Wildland Fire Workshop: Los Alamos, New Mexico, October 31-November 3, 2000", where the poster "Measuring and Remote Sensing of Burn Severity" is included, and which is the original source of the NBR.

About the code for the number of citations, that would be super cool! If you want, you can make a pull request of it or if you prefer to send the code here I can also check it :)
Cheers!
David


Fix parent GO:1905413 regulation of dense core granule exocytosis

GO:1905413 regulation of dense core granule exocytosis
is a child a of biological_process; should be a child of biological regulation

Fixed LD to
'biological regulation'
and (regulates some 'dense core granule exocytosis')
add occurs_in GO:0098793 ! presynapse as an asserted subclass
rather than
biological_process
and ( occurs_in presynapse)
and (regulates some 'dense core granule exocytosis')