[Compile]: java.lang.NullPointerException: Cannot invoke "String.length()" because "" is null

Operating System
Ubuntu 22.04
Plugin
android_alarm_manager_plus
Version
4.0.4
Flutter SDK
3.24.1
Compilation command
on my VScode Run> Run With Debugging
Dart Dependencies
name: hoplit
description: An habit tracker application

# The following line prevents the package from being accidentally published to
# pub.dev using `flutter pub publish`. This is preferred for private packages.
publish_to: 'none' # Remove this line if you wish to publish to pub.dev

# The following defines the version and build number for your application.
# A version number is three numbers separated by dots, like 1.2.43
# followed by an optional build number separated by a +.
# Both the version and the builder number may be overridden in flutter
# build by specifying --build-name and --build-number, respectively.
# In Android, build-name is used as versionName while build-number used as versionCode.
# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html
version: 20.0.0

environment:
  sdk: ">=2.17.1 <3.0.0"

# Dependencies specify other packages that your package needs in order to work.
# To automatically upgrade your package dependencies to the latest versions
# consider running `flutter pub upgrade --major-versions`. Alternatively,
# dependencies can be manually updated by changing the version numbers below to
# the latest version available on pub.dev. To see which dependencies have newer
# versions available, run `flutter pub outdated`.
dependencies:
  flutter:
    sdk: flutter

  # Launcher helper libs
  flutter_native_splash: ^2.4.0

  # Analytics tools
  # flutter_clarity: ^1.0.0+3
  clarity_support: ^0.0.1

  http: ^1.2.1
  font_awesome_flutter: ^10.7.0
  shared_preferences: ^2.2.3
  intl: 0.19.0
  auto_size_text: ^3.0.0
  percent_indicator: ^4.2.3
  url_launcher: ^6.2.6
  animated_text_kit: ^4.2.2
  dropdown_button2: ^2.3.9
  roundcheckbox: ^2.0.5
  table_calendar: ^3.0.9
  syncfusion_flutter_charts: ^25.2.4
  syncfusion_flutter_sliders: ^25.2.4
  syncfusion_flutter_core: ^25.2.4
  lottie: ^3.1.2
  dots_indicator: ^3.0.0

  # Firebase libraries flutter
  firebase_auth: ^4.19.5
  firebase_dynamic_links: ^5.5.5
  firebase_analytics: ^10.10.5
  firebase_crashlytics: ^3.5.5
  firebase_messaging: ^14.9.2
  cloud_firestore: ^4.17.3
  firebase_core: ^2.31.0

  # Signing in libs
  google_sign_in: ^6.2.1
  sign_in_with_apple: ^6.1.0
  flutter_facebook_auth: ^7.0.0

  # Dependency Injection
  json_annotation: ^4.9.0
  get_it: ^7.7.0
  injectable: ^2.4.2

  cupertino_icons: ^1.0.8

  # DDD - architecture
  dartz: ^0.10.1
  flutter_bloc: ^8.1.5
  bloc: ^8.1.4
  equatable: ^2.0.5

  # Other dependencies
  flutter_secure_storage: ^9.0.0
  another_flushbar: ^1.12.30
  uuid: ^4.4.0
  auto_route: ^8.1.3
  easy_localization: ^3.0.7
  google_fonts: ^6.2.1
  # end  front-end(UI stuffs)

  # referenced packages
  vector_math: any
  collection: any
  flutter_phoenix: "^1.0.0"
  permission_handler: ^11.3.1
  workmanager: ^0.5.2
  logger: ^2.3.0
  shared_preferences_foundation: ^2.4.0
  shared_preferences_android: ^2.2.1

  # Notification core libraries
  flutter_local_notifications: ^17.1.2
  timezone: ^0.9.3

  freezed_annotation: ^2.4.1
  flutter_isolate: ^2.0.4
  android_alarm_manager_plus: ^4.0.4
  upgrader: ^10.3.0
  in_app_review: ^2.0.9
  flutter_timezone: ^1.0.8
  cached_network_image: ^3.3.1

  visibility_detector: ^0.4.0+2
  emoji_picker_flutter: ^2.2.0
  in_app_purchase: ^3.2.0
  card_swiper: ^3.0.1
  flutter_card_swiper: ^7.0.1
  reorderables: ^0.6.0
  rename_app: ^1.3.2
  pulsator: ^1.0.0+2
  flutter_markdown: ^0.7.3+1

dev_dependencies:
  flutter_test:
    sdk: flutter
  flutter_launcher_icons: ^0.13.1
  change_app_package_name: ^1.1.0

  # The "flutter_lints" package below contains a set of recommended lints to
  # encourage good coding practices. The lint set provided by the package is
  # activated in the `analysis_options.yaml` file located at the root of your
  # package. See that file for information about deactivating specific lint
  # rules and activating additional ones.
  flutter_lints: ^4.0.0

  # DDD architecture
  injectable_generator: ^2.6.1
  auto_route_generator: ^8.0.0
  json_serializable: ^6.8.0
  build_runner: ^2.4.8
  freezed: ^2.4.7
  # end DDD

# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec

# The following section is specific to Flutter packages.
flutter_icons:
  android: "launcher_icon"
  ios: true
  image_path: "assets/images/logo6i.png"
  remove_alpha_ios: true
  # adaptive_icon_background: "#3a9ecc"
  adaptive_icon_foreground: "assets/images/logo_foreground2.png"
  web:
    generate: true
    image_path: "icons/logo6i.png"
    background_color: "#3a9ecc"
    theme_color: "#3a9ecc"

flutter:

  # The following line ensures that the Material Icons font is
  # included with your application, so that you can use the icons in
  # the material Icons class.
  uses-material-design: true

  # To add assets to your application, add an assets section, like this:
  assets:
    - assets/images/
    - assets/json/
    - assets/translations/
    - android/app/src/main/res/drawable/
    - assets/fonts/hoplit/
    - assets/google_fonts/
    - assets/achievements/

  # An image asset can refer to one or more resolution-specific "variants", see
  # https://flutter.dev/assets-and-images/#resolution-aware

  # For details regarding adding assets from package dependencies, see
  # https://flutter.dev/assets-and-images/#from-packages

  # To add custom fonts to your application, add a fonts section here,
  # in this "flutter" section. Each entry in this list should have a
  # "family" key with the font family name, and a "fonts" key with a
  # list giving the asset and other descriptors for the font. For
  # example:
  fonts:

    - family: Hoplit
      fonts:
        - asset: assets/fonts/hoplit/Hoplit.ttf

    - family: Hoplit2
      fonts:
        - asset: assets/fonts/hoplit/Hoplit2.ttf
  # For details regarding fonts from package dependencies,
  # see https://flutter.dev/custom-fonts/#from-packages

flutter_native_splash:
  # This package generates native code to customize Flutter's default white native splash screen
  # with background color and splash image.
  # Customize the parameters below, and run the following command in the terminal:
  # flutter pub run flutter_native_splash:create
  # To restore Flutter's default white splash screen, run the following command in the terminal:
  # flutter pub run flutter_native_splash:remove

  # color or background_image is the only required parameter.  Use color to set the background
  # of your splash screen to a solid color.  Use background_image to set the background of your
  # splash screen to a png image.  This is useful for gradients. The image will be stretch to the
  # size of the app. Only one parameter can be used, color and background_image cannot both be set.
  #color: "#42a5f5"
  background_image: "assets/images/splash_background.png"

  # Optional parameters are listed below.  To enable a parameter, uncomment the line by removing
  # the leading # character.

  # The image parameter allows you to specify an image used in the splash screen.  It must be a
  # png file and should be sized for 4x pixel density.
  image: assets/images/splash_logo.png

  # The branding property allows you to specify an image used as branding in the splash screen.
  # It must be a png file. Currently, it is only supported for Android < v12 and iOS.
  branding: assets/images/branding.png

  # To position the branding image at the bottom of the screen you can use bottom, bottomRight,
  # and bottomLeft. The default values is bottom if not specified or specified something else.
  branding_mode: bottom

  # The color_dark, background_image_dark, image_dark, branding_dark are parameters that set the background
  # and image when the device is in dark mode. If they are not specified, the app will use the
  # parameters from above. If the image_dark parameter is specified, color_dark or
  # background_image_dark must be specified.  color_dark and background_image_dark cannot both be
  # set.
  #color_dark: "#042a49"
  #background_image_dark: "assets/dark-background.png"
  #image_dark: assets/splash-invert.png
  #branding_dark: assets/dart_dark.png

  # Android 12 handles the splash screen differently than previous versions.  Please visit
  # https://developer.android.com/guide/topics/ui/splash-screen
  # Following are Android 12 specific parameter.
  android_12:
    # The image parameter sets the splash screen icon image.  If this parameter is not specified,
    # the app's launcher icon will be used instead.
    # Please note that the splash screen will be clipped to a circle on the center of the screen.
    # App icon with an icon background: This should be 960?960 pixels, and fit within a circle
    # 640 pixels in diameter.
    # App icon without an icon background: This should be 1152?1152 pixels, and fit within a circle
    # 768 pixels in diameter.
    image: assets/images/splash_logo_android12.png

    # Splash screen background color.
    color: "#3583d2"

    # App icon background color.
    #icon_background_color: "#111111"

    branding: assets/images/branding_android12.png
  # The image_dark parameter and icon_background_color_dark set the image and icon background
  # color when the device is in dark mode. If they are not specified, the app will use the
  # parameters from above.
  #image_dark: assets/android12splash-invert.png
  #color_dark: "#042a49"
  #icon_background_color_dark: "#eeeeee"

  # The android, ios and web parameters can be used to disable generating a splash screen on a given
  # platform.
  #android: false
  #ios: false
  #web: false

  # The position of the splash image can be set with android_gravity, ios_content_mode, and
  # web_image_mode parameters.  All default to center.
  #
  # android_gravity can be one of the following Android Gravity (see
  # https://developer.android.com/reference/android/view/Gravity): bottom, center,
  # center_horizontal, center_vertical, clip_horizontal, clip_vertical, end, fill, fill_horizontal,
  # fill_vertical, left, right, start, or top.
  #android_gravity: center
  #
  # ios_content_mode can be one of the following iOS UIView.ContentMode (see
  # https://developer.apple.com/documentation/uikit/uiview/contentmode): scaleToFill,
  # scaleAspectFit, scaleAspectFill, center, top, bottom, left, right, topLeft, topRight,
  # bottomLeft, or bottomRight.
  #ios_content_mode: center
  #
  # web_image_mode can be one of the following modes: center, contain, stretch, and cover.
  #web_image_mode: center

  # The screen orientation can be set in Android with the android_screen_orientation parameter.
  # Valid parameters can be found here:
  # https://developer.android.com/guide/topics/manifest/activity-element#screen
  #android_screen_orientation: sensorLandscape

  # To hide the notification bar, use the fullscreen parameter.  Has no effect in web since web
  # has no notification bar.  Defaults to false.
  # NOTE: Unlike Android, iOS will not automatically show the notification bar when the app loads.
  #       To show the notification bar, add the following code to your Flutter app:
  #       WidgetsFlutterBinding.ensureInitialized();
  #       SystemChrome.setEnabledSystemUIOverlays([SystemUiOverlay.bottom, SystemUiOverlay.top]);
  fullscreen: true

  # If you have changed the name(s) of your info.plist file(s), you can specify the filename(s)
  # with the info_plist_files parameter.  Remove only the # characters in the three lines below,
  # do not remove any spaces:
  #info_plist_files:
  #  - 'ios/Runner/Info-Debug.plist'
  #  - 'ios/Runner/Info-Release.plist'

flutter_launcher_icons:
  android: "launcher_icon"
  ios: true
  image_path: "assets/images/logo_foreground.png"
  adaptive_icon_foreground: "assets/images/logo_foreground2.png"
  adaptive_icon_background: "#3583d2"
  min_sdk_android: 21 # android min sdk min:16, default 21

Native dependencies
No response
Compilation Error
Launching lib/main.dart on sdk gphone16k x86 64 in debug mode...
ERROR:/home/choti/.gradle/caches/transforms-3/01af56cd9f6768023c319c1450ed2e79/transformed/jetified-appcompat-resources-1.7.0-runtime.jar: D8: java.lang.NullPointerException: Cannot invoke "String.length()" because "<parameter1>" is null
ERROR:/home/choti/.gradle/caches/transforms-3/9c2a499a65c5ac8dc7475674d58b6332/transformed/appcompat-1.7.0-runtime.jar: D8: java.lang.NullPointerException: Cannot invoke "String.length()" because "<parameter1>" is null

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:mergeExtDexDebug'.
> Could not resolve all files for configuration ':app:debugRuntimeClasspath'.
   > Failed to transform appcompat-resources-1.7.0.aar (androidx.appcompat:appcompat-resources:1.7.0) to match attributes {artifactType=android-dex, asm-transformed-variant=NONE, dexing-enable-desugaring=true, dexing-enable-jacoco-instrumentation=false, dexing-is-debuggable=true, dexing-min-sdk=27, org.gradle.category=library, org.gradle.dependency.bundling=external, org.gradle.libraryelements=aar, org.gradle.status=release, org.gradle.usage=java-runtime}.
      > Execution failed for DexingNoClasspathTransform: /home/choti/.gradle/caches/transforms-3/01af56cd9f6768023c319c1450ed2e79/transformed/jetified-appcompat-resources-1.7.0-runtime.jar.
         > Error while dexing.
   > Failed to transform appcompat-1.7.0.aar (androidx.appcompat:appcompat:1.7.0) to match attributes {artifactType=android-dex, asm-transformed-variant=NONE, dexing-enable-desugaring=true, dexing-enable-jacoco-instrumentation=false, dexing-is-debuggable=true, dexing-min-sdk=27, org.gradle.category=library, org.gradle.dependency.bundling=external, org.gradle.libraryelements=aar, org.gradle.status=release, org.gradle.usage=java-runtime}.
      > Execution failed for DexingNoClasspathTransform: /home/choti/.gradle/caches/transforms-3/9c2a499a65c5ac8dc7475674d58b6332/transformed/appcompat-1.7.0-runtime.jar.
         > Error while dexing.

* Try:
> Run with --stacktrace option to get the stack trace.
> Run with --info or --debug option to get more log output.
> Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 40s
Error: Gradle task assembleDebug failed with exit code 1

Exited (1).

Flutter Doctor
choti@choti:~$ flutter doctor -v
[✓] Flutter (Channel stable, 3.24.1, on Ubuntu 22.04.4 LTS 6.8.0-40-generic,
    locale en_US.UTF-8)
    • Flutter version 3.24.1 on channel stable at
      /home/choti/snap/flutter/common/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 5874a72aa4 (2 weeks ago), 2024-08-20 16:46:00 -0500
    • Engine revision c9b9d5780d
    • Dart version 3.5.1
    • DevTools version 2.37.2

[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
    • Android SDK at /home/choti/Android/Sdk
    • Platform android-35, build-tools 34.0.0
    • ANDROID_HOME = /home/choti/Android/Sdk
    • Java binary at: /snap/android-studio/161/jbr/bin/java
    • Java version OpenJDK Runtime Environment (build
      17.0.10+0-17.0.10b1087.21-11609105)
    • All Android licenses accepted.

[✓] Chrome - develop for the web
    • Chrome at google-chrome

[✓] Linux toolchain - develop for Linux desktop
    • clang version 10.0.0-4ubuntu1
    • cmake version 3.16.3
    • ninja version 1.10.0
    • pkg-config version 0.29.1

[✓] Android Studio (version 2024.1)
    • Android Studio at /snap/android-studio/161
    • Flutter plugin version 81.0.2
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build
      17.0.10+0-17.0.10b1087.21-11609105)

[✓] VS Code (version 1.92.2)
    • VS Code at /snap/code/current/usr/share/code
    • Flutter extension version 3.96.0

[✓] Connected device (4 available)
    • RMX3231 (mobile)              • 0151420S34106E16 • android-arm    •
      Android 11 (API 30)
    • sdk gphone16k x86 64 (mobile) • emulator-5554    • android-x64    •
      Android 15 (API 35) (emulator)
    • Linux (desktop)               • linux            • linux-x64      • Ubuntu
      22.04.4 LTS 6.8.0-40-generic
    • Chrome (web)                  • chrome           • web-javascript • Google
      Chrome 128.0.6613.113

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

• No issues found!
choti@choti:~$

Checklist before submitting a bug

[X] I searched issues in this repository and couldn't find such bug/problem
[X] I Google'd a solution and I couldn't find it
[X] I searched on StackOverflow for a solution and I couldn't find it
[X] I read the README.md file of the plugin
[X] I'm using the latest version of the plugin
[X] All dependencies are up to date with flutter pub upgrade
[X] I did a flutter clean
[X] I tried running the example project

This may help: https://github.com/flutter/flutter/issues/145789#issuecomment-2048909224

Bumped My AGP to 8.5 and it is now fixed


WG Introduction BLOG

Create a BLOG Introducing WholeGraph - what it does, how to get code, how to use.
This might need to be tied to the woprk on getting WG tied into cugraph-{dgl/pyg}

Published:  https://developer.nvidia.com/blog/wholegraph-storage-optimizing-memory-and-retrieval-for-graph-neural-networks/


kubeseal: 0.16.0 -> 0.17.0

Automatic update generated by nixpkgs-update tools. This update was made based on information from https://github.com/bitnami-labs/sealed-secrets/releases.
meta.description for kubeseal is: "A Kubernetes controller and tool for one-way encrypted Secrets"
meta.homepage for kubeseal is: "https://github.com/bitnami-labs/sealed-secrets"
meta.changelog for kubeseal is: ""
Updates performed

Golang update

To inspect upstream changes

Release on GitHub

Compare changes on GitHub

Impact

Checks done (click to expand)

built on NixOS
The tests defined in passthru.tests, if any, passed
/nix/store/xhz15sj1s9881kr63b4l6fc2rwzb107f-kubeseal-0.17.0/bin/kubeseal passed the binary check.
1 of 1 passed binary check by having a zero exit code.
1 of 1 passed binary check by having the new version present in output.
found 0.17.0 with grep in /nix/store/xhz15sj1s9881kr63b4l6fc2rwzb107f-kubeseal-0.17.0
found 0.17.0 in filename of file in /nix/store/xhz15sj1s9881kr63b4l6fc2rwzb107f-kubeseal-0.17.0

Rebuild report (if merged into master) (click to expand)

2 total rebuild path(s)

1 package rebuild(s)

1 x86_64-linux rebuild(s)
1 x86_64-darwin rebuild(s)

First fifty rebuilds by attrpath
kubeseal

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/xhz15sj1s9881kr63b4l6fc2rwzb107f-kubeseal-0.17.0 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A kubeseal https://github.com/r-ryantm/nixpkgs/archive/5f6ec81c516c0f067f54cfe5c9e043de5ac89dcb.tar.gz

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/xhz15sj1s9881kr63b4l6fc2rwzb107f-kubeseal-0.17.0
ls -la /nix/store/xhz15sj1s9881kr63b4l6fc2rwzb107f-kubeseal-0.17.0/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

1 package built:

kubeseal

Maintainer pings
cc @groodt @kalbasit for testing.

Result of nixpkgs-review pr 149308 run on x86_64-linux 1

1 package built:

kubeseal


Possible improvement in text alignment in tables.

What is the problem?
The table formatter is improperly aligning the text in the cells. It would be nice to have the formatter align text in centre and right aligned columns to their proper alignment. Currently the formatter is aligning all text to left.
How can I reproduce it?
Type the following:
|column left|column center|column right|
|----|:----:|----:|
|one|two|three|
|four|five|six|

Then run the formatter. It will align it to:
| column left | column center | column right |
| ----------- | :-----------: | -----------: |
| one         | two           | three        |
| four        | five          | six          |

While the ideal output would be:
| column left | column center | column right |
| ----------- | :-----------: | -----------: |
| one         |      two      |        three |
| four        |     five      |          six |

Is there any error message in the console?

No.

The issue has been resolved. See #341.


Cant Open Models

Netron app and version: 5.2.5 Desktop
OS and browser version: Ubuntu 20.04

Steps to Reproduce:

Install app
run and click "Open Model"

It cant open File picker windows, and shows error like
"[10351:0928/152251.289511:ERROR:browser_main_loop.cc(269)] Gtk: gtk_native_dialog_run: assertion '!priv->visible' failed
"
Please attach or link model files to reproduce the issue if necessary.

electron/electron#31152


static TLS errors from jemalloc 5 built on CentOS 7

Description
when enable USE_JEMALLOC with jemalloc 5.0.0(same for 5.0.1) to built MXNet from source on CentOS 7 with devtoolset-3, the compiling program will stop and produce an TLS error when linking libmxnet.so with python OpWrapper
Environment info
----------Python Info----------
Version      : 3.6.3
Compiler     : GCC 7.2.0
Build        : ('default', 'Nov 20 2017 20:41:42')
Arch         : ('64bit', '')
------------Pip Info-----------
Version      : 9.0.1
Directory    : /data/anaconda2/envs/fidoenv3/lib/python3.6/site-packages/pip
----------MXNet Info-----------
Traceback (most recent call last):
File "tools/diagnose.py", line 103, in check_mxnet
import mxnet
File "/home/rd/mxnet/python/mxnet/init.py", line 25, in
from . import engine
File "/home/rd/mxnet/python/mxnet/engine.py", line 23, in
from .base import _LIB, check_call
File "/home/rd/mxnet/python/mxnet/base.py", line 111, in
_LIB = _load_lib()
File "/home/rd/mxnet/python/mxnet/base.py", line 103, in _load_lib
lib = ctypes.CDLL(lib_path[0], ctypes.RTLD_LOCAL)
File "/data/anaconda2/envs/fidoenv3/lib/python3.6/ctypes/init.py", line 348, in init
self._handle = _dlopen(self._name, mode)
OSError: /usr/local/lib/libjemalloc.so.2: cannot allocate memory in static TLS block
----------System Info----------
Platform     : Linux-3.10.0-514.16.1.el7.x86_64-x86_64-with-centos-7.3.1611-Core
system       : Linux
node         : dm-dl-test-bjd-001
release      : 3.10.0-514.16.1.el7.x86_64
version      : #1 SMP Wed Apr 12 15:04:24 UTC 2017
----------Hardware Info----------
machine      : x86_64
processor    : x86_64
Architecture:          x86_64
CPU op-mode(s):        32-bit, 64-bit
Byte Order:            Little Endian
CPU(s):                4
On-line CPU(s) list:   0-3
Thread(s) per core:    1
Core(s) per socket:    1
Socket(s):             4
NUMA node(s):          1
Vendor ID:             GenuineIntel
CPU family:            6
Model:                 63
Model name:            Intel(R) Xeon(R) CPU E5-2630 v3 @ 2.40GHz
Stepping:              2
CPU MHz:               2394.454
BogoMIPS:              4788.90
Hypervisor vendor:     KVM
Virtualization type:   full
L1d cache:             32K
L1i cache:             32K
L2 cache:              256K
L3 cache:              20480K
NUMA node0 CPU(s):     0-3
----------Network Test----------
Setting timeout: 10
Timing for MXNet: https://github.com/apache/incubator-mxnet, DNS: 0.0427 sec, LOAD: 1.3971 sec.
Timing for Gluon Tutorial(en): http://gluon.mxnet.io, DNS: 1.1900 sec, LOAD: 1.1925 sec.
Timing for Gluon Tutorial(cn): https://zh.gluon.ai, DNS: 3.4383 sec, LOAD: 3.6338 sec.
Timing for FashionMNIST: https://apache-mxnet.s3-accelerate.dualstack.amazonaws.com/gluon/dataset/fashion-mnist/train-labels-idx1-ubyte.gz, DNS: 0.8646 sec, LOAD: 2.3594 sec.
Timing for PYPI: https://pypi.python.org/pypi/pip, DNS: 0.0453 sec, LOAD: 0.8300 sec.
Timing for Conda: https://repo.continuum.io/pkgs/free/, DNS: 0.2181 sec, LOAD: 1.0059 sec.
Build info
Compiler (gcc/clang/mingw/visual studio): gcc 4.9.2
MXNet commit hash:
branch v1.0.0
Build config:
USE_CUDA = 1
USE_CUDNN = 1
USE_NVRTC = 1
USE_OPENCV = 0
USE_OPENMP = 1
USE_MKL2017 = 1
USE_MKL2017_EXPERIMENTAL = 1
USE_NNPACK = 1
USE_LAPACK = 1
USE_OPERATOR_TUNING = 1
USE_JEMALLOC = 1
Error Message:
cd /home/rd/mxnet/dmlc-core; make libdmlc.a USE_SSE=1 config=/home/rd/mxnet/config.mk; cd /home/rd/mxnet
make[1]: Entering directory /home/rd/mxnet/dmlc-core' make[1]: libdmlc.a' is up to date.
make[1]: Leaving directory `/home/rd/mxnet/dmlc-core'
(cd cpp-package/scripts; python OpWrapperGenerator.py /home/rd/mxnet/lib/libmxnet.so)
Traceback (most recent call last):
File "OpWrapperGenerator.py", line 425, in
raise(e)
File "OpWrapperGenerator.py", line 419, in
f.write(patternStr % ParseAllOps())
File "OpWrapperGenerator.py", line 314, in ParseAllOps
cdll.libmxnet = cdll.LoadLibrary(sys.argv[1])
File "/data/anaconda2/envs/fidoenv3/lib/python3.6/ctypes/init.py", line 426, in LoadLibrary
return self._dlltype(name)
File "/data/anaconda2/envs/fidoenv3/lib/python3.6/ctypes/init.py", line 348, in init
self._handle = _dlopen(self._name, mode)
OSError: /usr/local/lib/libjemalloc.so.2: cannot allocate memory in static TLS block
make: *** [cpp-package/include/mxnet-cpp/op.h] Error 1
Steps to reproduce

wget https://github.com/jemalloc/jemalloc/releases/download/5.0.0/jemalloc-5.0.0.tar.bz2
tar -xvf jemalloc-5.0.0.tar.bz2
cd jemalloc-5.0.0; ./configure; make; make install
cd ..
git clone https://github.com/apache/incubator-mxnet
cd incubator-mxnet
make -jX

What have you tried to solve it?

Use different version of jemalloc: 5.0.1 doesn't works, 4.5.0 works
Refer jemalloc#937

@popfido FYI, mxnet for linux-64 and osx-64 is now available in the defaults channel. You can also try conda install mxnet. The linux build links to jemalloc and uses the fix mentioned at https://github.com/jemalloc/jemalloc/issues/937 .

Please add labels: "Build", "Installation"


Calibrate SNCosmo fluxes correctly

In the Monitor code so far we have the ability to output DM forced photometry flux information as light curves in each filter. However, we're not sure of the zeropoints or how to get them. This needs to be figured out to understand flux values correctly.

We now have code to get the zero point for the visits. We should now use those in the sncosmo tables.


#329: Provide easier access to the x and y-coordinates of a PolyObject

Also added a function for getting the x, y ánd z coordinates.

This is now only a bound method of PolyObject. It would be valuable to also have it on XYZmodel, maybe XYNmodel and possibly others.

@veenstrajelmer, thanks for the suggestion. I also added the functionality to the XYZModel.
We currently have no XYNModel.

Closing this PR as discussed with @veenstrajelmer.
It would be nice if we can find something more generic that will work for multiple objects.
Jelmer can do that now easily locally.
I think if more users ask for this kind of functionality we can take a look at it in a more broader way.


Allow reordering of players in player select

We already have the button for it, but no functionality yet.
Ideally it should allow dragging elements around but I'm unsure how what would be implemented right now, so we could replace it with two buttons, one for up and one for down maybe.

Implemented in 3aa70cb.


Concurrent request handling

Hey there!! 🙏
I am currently working on a project that involves the sending request to the model using flask api and when user sends the request concurrently the model is not able to handle it. Is there any way i can handle multiple concurrent request to the model and serve multiple users at the same time?
Please help!  @abetlen

I am not sure if your case is similar, but I am facing the same issue:

I have created a flask API endpoint /request in which the user makes the POST request
Based on the information received by the user, I put that in the prompt and it gives result.
I have made the "threaded=True" in flask app.run(threaded=True) which means each new request can be processed separately.
But doing so, with 2 users, the server crashes because it goes for loading 2 models and doesn't work.

I am possibly looking for the same solution, I hope we find some solution to this.
Thanks for opening the issue 🙏🏻

If the hardware computing power is insufficient, the benefits of parallel inference are low. I implemented a simple parallel inference using this project and tested it on V100S. Under the condition of 2 concurrency, the efficiency is not as high as that of a single request.
Supporting parallel inference (batch processing) is a very complex task, involving issues such as kv-cache logit. Instead, you can use the api_like_OAI.py provided by llama.cpp as an alternative. This service supports parallel inference, although the performance is slightly lower during parallel execution.

Hi! I just made such a solution for myself. Here is the code: https://github.com/sergey-zinchenko/llama-cpp-python/tree/model_lock_per_request
I did introduce async locking of all the model stuff for all kinds of requests—stream and not. All the requests will be handled one by one, so it's not kind of concurrent, but at least the server will not crash or interrupt the request it handles at the moment.

@sergey-zinchenko can you provide more details like what changes did you made and how to adopt them in our llama-cpp-python?

@sergey-zinchenko can you provide more details like what changes did you made and how to adopt them in our llama-cpp-python?

https://github.com/abetlen/llama-cpp-python/pull/1550

@malik-787 Shortly I added global async lock mechanism to handle request one by one limiting the number of maximum awaiting requests on the uvicorn level. The server stops crashing and stop closing ongoing inferencing and in my PR incoming requests just awaiting finishing of ongoing one. IMHO that way is more or less better for multiuser scenarios and for k8s deployment.


convert_token returns html headers with user environment variables

It returns the user environment variables in the headers along with response data.  I removed the values due to sensitive data.
http://localhost:8000/auth/convert-token/
The same issue(result) for both DRF and curl.
HTTP/1.1 200 OK
Date
Server
Content-Type
PATH
NVM_RC_VERSION
DB_USER_NAME
DB_PORT
WORKON_HOME
VIRTUALENVWRAPPER_PYTHON
GOOGLE_APPLICATION_CREDENTIALS
COMMAND_MODE
PS1
NICE_KEY_CODE
VIRTUALENVWRAPPER_SCRIPT
VIRTUALENVWRAPPER_WORKON_CD
LOGNAME
XPC_SERVICE_NAME
DB_DEV_HOST
PWD
PYCHARM_HOSTED
PYCHARM_DISPLAY_PORT
__CFBundleIdentifier
PYTHONPATH
NVM_CD_FLAGS
SHELL
DATABASE_NAME
NVM_DIR
PYTHONIOENCODING
CA_PATH
OLDPWD
USER
VIRTUALENVWRAPPER_HOOK_DIR
DEBUG
TMPDIR
SSH_AUTH_SOCK
DJANGO_SETTINGS_MODULE
VIRTUAL_ENV
XPC_FLAGS
PYTHONUNBUFFERED
VIRTUALENVWRAPPER_PROJECT_FILENAME
__CF_USER_TEXT_ENCODING
DB_USER_PASS
PROJECT_HOME
USE_CLOUD_SQL_AUTH_PROXY
LC_CTYPE
NICE_SECRET_CODE
HOME
DATABASE_URL
GS_BUCKET_NAME
SECRET_KEY
TZ
RUN_MAIN
SERVER_NAME
GATEWAY_INTERFACE
SERVER_PORT
REMOTE_HOST
CONTENT_LENGTH
SCRIPT_NAME
SERVER_PROTOCOL
SERVER_SOFTWARE
REQUEST_METHOD
PATH_INFO
QUERY_STRING
REMOTE_ADDR
CONTENT_TYPE
HTTP_HOST
HTTP_USER_AGENT
HTTP_ACCEPT
wsgi.version
wsgi.run_once
wsgi.url_scheme
wsgi.multithread
wsgi.multiprocess
wsgi.file_wrapper
Vary
Allow
X-Frame-Options
Content-Length
X-Content-Type-Options
Referrer-Policy
Cross-Origin-Opener-Policy
{
"access_token": "RlMWGzkVwkSkFn0y68PzSnsDZuQrk8",
"expires_in": 31395.259142,
"scope": "read write",
"refresh_token": "7G6puqPRjQEJ5IMyx7BMq4ZvT1ONQg",
"token_type": "Bearer"
}

I just noticed this only happens if a user already exists(or POSTing for the second time), the first time(new user) only shows the response data as shown below.
HTTP 200 OK
Allow: POST, OPTIONS
Cache-Control: no-store
Content-Type: application/json
Pragma: no-cache
Vary: Accept
{
"access_token": "qqlGnFjpex4SCA4dCQDnTA7tFJhIGf",
"expires_in": 36000,
"token_type": "Bearer",
"scope": "read write",
"refresh_token": "iIYBU49CpBf5RmmQZ9UlaHt2WlkyuO"
}

Hi @snowcrash-arin,
I never saw this issue before. I tried it locally and nothing described by your issue shows up.
I have tested it with and without a user and the response was absolutely the same:
{
"access_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbiI6IjkxZHVidzdQYUxQdEZLZXNzSWhuMWZRZG9OYjBWYyJ9.zyQsbrOGUqvNdDLFcONrgnGCNEDCh05n4tJieHcSi1E",
"expires_in": 36000,
"token_type": "Bearer",
"scope": "read write",
"refresh_token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJ0b2tlbiI6Im5QcUplMDhiM0hqNW83Tmx5NWFyNDNpMEhBNDM3UyJ9.zwEc38-fNGwUAc4KQuhjhTH172FfgeAOq9g85UBKyW4"
}

I am closing this issue for now. Can you please elaborate on your problem more? Please include screenshots etc, whatever makes it easier for me to debug.

Hi @wagnerdelima
If you are using curl, you have to pass -i to see the header contents.
curl -X POST -d "grant_type=convert_token&client_id=z3AO2eQPapXfuBcg9d4a8mVfcdYlCEtRvS8wDE3Q&client_secret=client_secrent&backend=google-oauth2&token=google_token" -i http://localhost:8000/auth/convert-token
Let me know if you don't see what I see even with -i, I'll open a new case with screenshots and more details.
Thanks!


Fix uses of list and tuple for List and Tuple, which causes errors in some Examples

Issue or goal of PR:
Fixed 3 'examples' files that wouldn't successfully complete due to use of list instead of List and tuple instead of Tuple.
What I did
Corrected by using values from Typing.
How to test
Run the files and see successful completion.

[ ] unit tests were written / updated

Documentation
Check one:

[ ] I updated documentation
OR
[ X] No documentation updates required

Somebody's running the examples with 3.9 or lower! Thanks.

@kapman28 FYI github understands certain combinations of text to automatically close issues when PRs are merged.


feat: support parent container

This PR adds support for a parent container via container prop on Root
Fixes #296

Seems to be working great, any updates on getting this merged? Currently facing a bottleneck without this feature.

this would be really nice to have added

Fixed in #413, hugely inspired by this PR, thanks @joaom00.


Input is not interrupted when pointer leaves a sim iframe

In https://github.com/phetsims/molecule-polarity/issues/105 for phetsims/QA/issues/627, @phet-steele noted a problem related to being able to click Studio buttons while the sim was still in the middle of a drag sequence.
I noted other similar (general!) problems in https://github.com/phetsims/molecule-polarity/issues/105#issuecomment-804460900.
In https://github.com/phetsims/molecule-polarity/issues/105#issuecomment-804471507, I noted:

If I'm not running the sim in an iframe, interaction appears to be interrupted when the pointer leaves the bounds of the browser. I think this is the behavior that we want when the pointer leaves an iframe.

In https://github.com/phetsims/molecule-polarity/issues/105#issuecomment-804880786, @samreid noted that this is problem occurs for any iframe, not just the iframes in PhET-iO wrappers:

Since we encourage embedding PhET simulations in iframes without using PhET-iO, maybe this issue is not specific to PhET-iO? For instance, the behavior appears in build/phet/molecule-polarity_en_iframe_phet.html as well, which is produced on build and does not use any PhET-iO. But I agree PhET-iO leverages iframes heavily. Chipper defines the sim-iframe template. But this problem also feels a little like it belongs in Joist since it is framework-y or scenery because it deals with pointer events. What do you recommend?

Labeling for discussion at phet-io and developer meetings. @samreid feel free to drop one of those labels, as you feel is appropriate.

In https://github.com/phetsims/molecule-polarity/issues/105#issuecomment-805040582, @jonathanolson said:

I'm looking more in depth into this, but friction (the dragging of the book) and molecule shapes (the rotation of the molecule) are both cases where it would be incredibly annoying if the action got interrupted when the pointer went out of the window/iframe. Similarly for any case where you're trying to drag something near the border (CCK?)

In https://github.com/phetsims/molecule-polarity/issues/105#issuecomment-805042670, @jonathanolson said:
Most of the items in https://github.com/phetsims/molecule-polarity/issues/105#issuecomment-804460900 seem like actual bugs with how Scenery is handling things, rather than general problems that would result from allowing input from pointers that have gone outside of the iframe.
We SHOULD get events in those cases, the drag releases should happen, and things shouldn't break. @pixelzoom what browser were you using, so I could investigate?

This problem seems closely related to https://github.com/phetsims/scenery/issues/464.
I understand that interrupting the pointer on iframe exit would address these side effects, but I'm wondering if it would feel too buggy if, e.g., a slider knob is dropped if the pointer goes outside of the iframe--if it's a top level frame and you drag a slider knob outside of the browser window, you can continue dragging without interruption.  After re-reading this thread, I'm realizing perhaps @jonathanolson is sharing the same sentiment in https://github.com/phetsims/scenery/issues/1186#issuecomment-805046778

Noting that this iframe behavior was previously known I believe (although I'm having trouble finding the issue) and I believe it varies between browsers.

While this was reported in https://github.com/phetsims/QA/issues/627, @arouinfar and I agreed that this is not relevant to the deliverable (1.1 RC for research study, see https://github.com/phetsims/molecule-polarity/issues/87).  The research collaborator is unlikely to be customizing the sim using Studio. And if he is using Studio and runs into this, we can just tell him "don't do that".  So this issue does not block https://github.com/phetsims/molecule-polarity/issues/87.

I'm unable to reproduce any of https://github.com/phetsims/molecule-polarity/issues/105#issuecomment-804460900 in Chrome 89 / macOS 11.1 if I'm doing things in a window.
However it reproduces when in studio (e.g., an iframe).
https://bugs.chromium.org/p/chromium/issues/detail?id=522109 describes this, and also notes that preventDefault() seems to trigger it (which we presumably need probably for other things... maybe we could avoid preventDefault on a down, but touch-snag doesn't seem like it would handle this well)
After some spec reading, it looks like the lostpointercapture might have potential, and I'm seeing that this is fired in two different places in Safari and Chrome, but always in cases where an interrupt() would actually save us from the general behavior.
I'm going to experiment with this last workaround approach.

@pixelzoom what would you like to discuss in developer meeting. Does this still need to be marked?

There's nothing that I personally want to discuss here.  QA reported the problem, I created the issue, and I'm otherwise not involved.  It's labeled for meetings because @samreid had questions in the last paragraph that is quoted in https://github.com/phetsims/scenery/issues/1186#issue-838895704.  It's up to him to pick an appropriate meeting because he also questioned whether it was specific to PhET-iO or not.

It sounds like @jonathanolson is on the case, and it doesn't need to be on agenda for the upcoming meeting.

I've committed the approach described above: if we receive a pointer capture loss (which usually happens after an "up"), we'll interrupt the pointer. This should handle things correctly in the majority of cases.
It seems like I can still occasionally trigger the bad behavior in Safari (if you continue to move the mouse while releasing it outside and continuing to move it into the frame), but this seems to fix 100% of the "bad" behavior in Chrome, and 95% in Safari. Firefox (on macOS) doesn't need to be worked around, pointer capture is working very nicely.
In these cases, on re-entry in Chrome (and when the "release" is detected outside in Safari), the pointer will be interrupted. Thus the "things still being dragged with an unpressed mouse" behavior should be gone in those cases where we get a pointer capture lost event.
@zepumph can you review this change? Do you think we should synthesize these events for CT fuzzing, since we won't get those extra interrupts currently?
@KatieWoe this will need cross-browser testing, what do you recommend? CT will NOT pick up this change, since it's relying on browser events that our fuzzing does not generate.

All looks great to me.

Do you think we should synthesize these events for CT fuzzing, since we won't get those extra interrupts currently?

It seems like the more we can synthesize, the better. We currently have some for keyboard (KeyboardFuzzer), but otherwise we should probably build out InputFuzzer to support any event that we support in Scenery.

Looks like it should be possible to create (untrusted) pointer events:
var downEvent = new PointerEvent("pointerdown",
   {pointerId: 1,
    bubbles: true,
    cancelable: true,
    pointerType: "touch",
    width: 100,
    height: 100,
    isPrimary: true
   });

Fuzzing currently doesn't go through the pointer events codepath at all, so it's not as simple as just adding capture events. Presumably we can upgrade our fuzzer to use pointer events. Leaving self-assigned.

A short QA issue to test master for this would probably do the job well.

Created https://github.com/phetsims/QA/issues/630 for testing.

This... seems buggy in a built version of friction. Investigating.

SimpleDragHandler was missing pointer interruption. Added.

QA passed for my changes. @pixelzoom I believe this is ready to close, anything else you'd like to have handled?

I checked the scenarios that were reported in https://github.com/phetsims/molecule-polarity/issues/105#issuecomment-804460900, tested on macOS + Chrome lastest.   I'm still seeing weirdness, which look like symptoms of the drag cycle not being completed.
Examples using Studio in "Two Atoms" screen:
Example 1:

Pointer down on one of the Electronegativity slider thumbs.
Move pointer outside of sim iframe and release pointer.  The slider thumb continues to be highlighted.
Move the pointer back inside the sim iframe. Now the slider thumb becomes unhighlighted.

Example 2:

Pointer down on the E-field on/off button, move the on/off knob to the middle of the switch.
Move pointer outside of sim iframe and release pointer.  The on/off knob remains stuck in the middle of the switch.
Move the pointer back inside the sim iframe. Now the on/off knob jumps to either the left or right.

Examples using Studio in "Two Atoms" screen

These are currently anticipated, and unfortunately seems to be the best I can do with Chrome (in iframes, it's much better in a window as normal). Safari ends up giving us an event immediately on release, but Chrome has it delayed until the pointer hovers over the iframe again.

These are currently anticipated

OK, thanks for clarifying.  I didn't understand that from comments above.

and unfortunately seems to be the best I can do with Chrome

Not my call on whether this is acceptable.  Please ask designers and/or the PhET-iO team.

Since both problems from https://github.com/phetsims/scenery/issues/1186#issuecomment-813547903 appear in the previous published version of Natural Selection 1.0.15 https://phet.colorado.edu/sims/html/molecule-polarity/latest/molecule-polarity_en-iframe.html it seems it wouldn’t block publication.

Molecule Polarity is not the issue.  Natural Selection (NS) is about to enter a full dev + RC QA cycle.  I don't see any obvious problems in NS.  And the consensus in Slack phet-io channel was that this does not block NS dev testing.  So I'll consider this non-blocking for NS, unless @amanda-phet or @kathy-phet says otherwise.

Not my call on whether this is acceptable. Please ask designers and/or the PhET-iO team.

@kathy-phet or @arouinfar, thoughts on whether the current Chrome behavior is acceptable? A brief description is:
In Safari/Chrome (in an iframe, NOT a normal window), when you start a drag and move your mouse out of the iframe, it will stop responding to the drag until the mouse is back inside the iframe.
In Chrome (in an iframe, NOT a normal window), when you release the drag outside the iframe, it won't immediately become "released" in the sim. It will only become released once your mouse moves back over the iframe.

For reference, I'm not aware of any way to currently handle this better, but I could investigate more.

Reviewed at PhET-iO meeting. Design wise it looks OK.
Implications:

Backend data message of the release would be delayed until your mouse goes back into the frame. (But we don't have a way to fix this).

We will start a client-facing document about backend data.

See:
https://docs.google.com/document/d/194Ry0hdW8tzWVhyoh3FdaEVtY2f33U7Rdjlzz2uPP_Y/edit


[feature request] Colured water is no real liquid

Not a bug, but a feature request. Is there a reason behind your decision that coloured water is no forge liquid? It would be really cool to be able to use pipes to transport the coloured water and use crafttweaker to use this water in other machines as a dye

I mostly did not make it a proper liquid because its a pain to make a liquid fully behave like water without breaking other mod assumptions about liquids. I may add it as just a fluid in the future with no placable form, but that is best covered by #18.

that's what I meant. I do not need it to be placeable. But it's not important either

Yeah, I'm thinking at this point my best bet is making a set of colored liquids and special case the in the liquid logic, then letting them work with a mod like placeable colored water if you want that functionality. It just takes some rethinking


tests: add fake entry point

this is ONLY to make
ginkgo labels -r
gingko labels ./test/e2e/serial/tests
work
the build tak is supposed to prevent the bogus entry to be consumed in the test binaries, so no ill effects or any change in the e2e serial test binary is expected.

/hold
do we want this at all?

Thank you for looking into this, I tested locally and indeed, lists all the labels. we don't need it though so far but I see no harm either, do as you like

if this is no longer necessary, let's keep the codebase as simple and linear as possible


Expose the html_error function for public use

Right now, we're not supporting a lot of inputs like radio buttons and selects. I wanted to use the error messages and logic around that for my other inputs. By extracting this to a public function, consumers can use that without us having to define a formulator wrapper for every single input type.

cc @gfontenot @anellis


can we remove src/subs?

Now that https://github.com/Microsoft/ApplicationInsights-node.js/pull/235 is pending?
cc @MSLaguana

That should be fine, but I'd defer to @osvaldorosado and @mike-kaufman since they are somewhat helpful as a validation that AI isn't broken (as in, if they compile, AI should work)

they are somewhat helpful as a validation that AI isn't broken (as in, if they compile, AI should work)

I'll let AI guys make a call on this.
Naturally, we need something stronger than compile-time checks to confirm AI is not broken.
That said, compile-time checks like this are useful.  My thinking is we'll eventually have a "test" folder that will include a "test client" that uses & validates the system through exposed public APIs here.  We're not there today.


localhost set up issue

Hello,
Can you please help me out ? I'am having some serious problems with installation on the localhost. I haven't tried it live yet but I guess it will work. Nevertheless, I would like to have a development version working on localhost.
The thing is that when I activate the theme it goes to server problem...
I have no idea where is it coming from, it's the first time I face a problem like this one, I checked my persmissions, checked my .htaccess - all.
The issue only comes up when activating the roots theme. On any other theme, there is no problem.
I tried to google it but I can't find anything coherent about it, have you got any idea on where might it be coming from ?
Any help would be appreciated.

so... what's the issue?

I had an issue with pretty permalink URL's when I had spaces in my wordpress folder/parent folder. Getting rid of them fixed it...

please post on http://groups.google.com/group/roots-theme if you're still having issues


Live Markdown Preview POC

Details

Design Doc
This is a solution proposal for Live Markdown Preview problem.
Using Aztec Editor with ExpensiMark. This solution involves the use of the Aztec editor component in combination with ExpensiMark for real-time Markdown to HTML conversion and preview.
Overview: The Aztec editor is a rich text editor component used for input. It provides features like multi-line input, selection change handling and content size change handling. LiveMarkdownPreview Component: This is a React component that uses the Aztec editor for text input and ExpensiMark for Markdown parsing and conversion.
Markdown Parsing: The LiveMarkdownPreview component uses an instance of ExpensiMark to parse and convert markdown syntax into HTML. This is done in the processHtml function, which takes an HTML string as input and returns an HTML string with markdown syntax.  Real-time Preview: The LiveMarkdownPreview component uses the Aztec editor for text input. As the user types in markdown syntax, the text is parsed and converted into HTML in real-time using the processHtml function. This provides a live preview of the formatting as the user types.
State Management: The LiveMarkdownPreview component uses React's state hooks to manage the HTML content (html state) and the text selection ranges (selection and tempSelection states). These states are updated in response to changes in the text input and selection.
Event Handling: The LiveMarkdownPreview component defines several event handlers for the Aztec editor. These handle changes in the text (handleChangeText), changes in the selection (handleSelectionChange), and other events. These handlers update the component's states as necessary, triggering re-renders to update the live preview.
Fixed Issues
https://github.com/Expensify/App/issues/14872

$
PROPOSAL:
Tests

[ ] Verify that no errors appear in the JS console

Offline tests

QA Steps

[ ] Verify that no errors appear in the JS console

PR Author Checklist

[ ] I linked the correct issue in the ### Fixed Issues section above
[ ] I wrote clear testing steps that cover the changes made in this PR

[ ] I added steps for local testing in the Tests section
[ ] I added steps for the expected offline behavior in the Offline steps section
[ ] I added steps for Staging and/or Production testing in the QA steps section
[ ] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[ ] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[ ] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[ ] I included screenshots or videos for tests on all platforms
[ ] I ran the tests on all platforms & verified they passed on:

[ ] Android / native
[ ] Android / Chrome
[ ] iOS / native
[ ] iOS / Safari
[ ] MacOS / Chrome / Safari
[ ] MacOS / Desktop

[ ] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[ ] I followed proper code patterns (see Reviewing the code)

[ ] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[ ] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[ ] I verified that comments were added to code that is not self explanatory
[ ] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[ ] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[ ] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[ ] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[ ] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[ ] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[ ] I verified the JSDocs style guidelines (in STYLE.md) were followed

[ ] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[ ] I followed the guidelines as stated in the Review Guidelines
[ ] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[ ] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[ ] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[ ] I verified that if a function's arguments changed that all usages have also been updated correctly
[ ] If a new component is created I verified that:

[ ] A similar component doesn't exist in the codebase
[ ] All props are defined accurately and each prop has a /** comment above it */
[ ] The file is named correctly
[ ] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[ ] The only data being stored in the state is data necessary for rendering and nothing else
[ ] If we are not using the full Onyx data that we loaded, I've added the proper selector in order to ensure the component only re-renders when the data it is using changes
[ ] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[ ] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[ ] All JSX used for rendering exists in the render method
[ ] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[ ] If any new file was added I verified that:

[ ] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[ ] If a new CSS style is added I verified that:

[ ] A similar style doesn't already exist
[ ] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG))

[ ] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[ ] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[ ] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[ ] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[ ] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[ ] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

Screenshots/Videos

Web

Mobile Web - Chrome

Mobile Web - Safari

Desktop

iOS

Android

I'm not actually able to run this locally - running into this error trying to install pods
jack@Jacks-MBP ios % pod install

[!] Invalid `Podfile` file: undefined method `prepare_react_native_project!' for #<Pod::Podfile:0x000000010607b8e8 @defined_in_file=#<Pathname:/Users/jack/Expensidev/App/ios/Podfile>, @internal_hash={}, @root_target_definitions=[#<Pod::Podfile::TargetDefinition label=Pods>], @current_target_definition=#<Pod::Podfile::TargetDefinition label=Pods>>.

 #  from /Users/jack/Expensidev/App/ios/Podfile:6
 #  -------------------------------------------
 #  platform :ios, 13
 >  prepare_react_native_project!
 #
 #  -------------------------------------------
jack@Jacks-MBP ios %

Do you have steps to get this set up and run locally?

@thienlnam Thanks for bringing this up, looking into it! +I'll add more info how to run it on local machine 👍


[SPARK-22370][SQL][PYSPARK][FOLLOW-UP] Fix a test failure when xmlrunner is installed.

What changes were proposed in this pull request?
This is a follow-up pr of #19587.
If xmlrunner is installed, VectorizedUDFTests.test_vectorized_udf_check_config fails by the following error because the self which is a subclass of unittest.TestCase in the UDF check_records_per_batch can't be pickled anymore.
PicklingError: Cannot pickle files that are not opened for reading: w

This changes the UDF not to refer the self.
How was this patch tested?
Tested locally.

Test build #85506 has started for PR 20115 at commit f078fe6.

Test build #85506 has finished for PR 20115 at commit f078fe6.

This patch passes all tests.
This patch merges cleanly.
This patch adds no public classes.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/SparkPullRequestBuilder/85506/
Test PASSed.

Merged to master


offset and limit working unexpectedly, resulting limit 0 in compiled SQL

Environment

golang version: 1.18
gorm version: v1.24.3

Problem
We've been using gorm in our production environment. Recently, I noticed a bad case when setting limit(0).

Prior to v1.24.0: gorm ignores limit 0
Since v1.24.0: gorm adds limit 0 to the compiled SQL if we set the query condition to db.Offset(0).Limit(0)

Below are some cases I use to explain to problem.
package main

import (
	"fmt"
	"sync"

	"gorm.io/gorm"
	"gorm.io/gorm/clause"
	"gorm.io/gorm/schema"
	"gorm.io/gorm/utils/tests"
)

var db, _ = gorm.Open(tests.DummyDialector{}, nil)

type User struct {
	ID  int `gorm:"column:id" json:"id"`
	Age int `gorm:"column:age" json:"age"`
}

func main() {
	db.DryRun = true
	user, _ := schema.Parse(&User{}, &sync.Map{}, db.NamingStrategy)
	stmt := gorm.Statement{DB: db, Table: user.Table, Schema: user, Clauses: map[string]clause.Clause{}}
	db.Statement = &stmt
	s1 := db.Where("id=?", 1).Offset(0).Limit(0).Find(&User{})
	fmt.Printf("sql is %+v\n", s1.Statement.SQL.String())
	s2 := db.Where("id=?", 1).Limit(0).Offset(0).Find(&User{})
	fmt.Printf("sql is %+v\n", s2.Statement.SQL.String())
        s3 := db.Where("id=?", 1).Limit(0).Find(&User{})
	fmt.Printf("sql is %+v\n", s3.Statement.SQL.String())
}

s1 ouputs: sql is SELECT * FROM `users` WHERE id=? LIMIT 0
s2 outputs: sql is SELECT * FROM `users` WHERE id=?
s3 outputs: sql is SELECT * FROM `users` WHERE id=? LIMIT 0

Which change caused the problem
This commit changed the behavior in clause/limit.go, resulting in the problem.
Possible solution
Since I'm not familiar with the design priciples of gorm, I decide to report an issue instead of submitting a pull request.
I believe the expected behavior of offset and limit would be:

no condition: no extra clauses
limit(0): no extra clauses
offset(0): offset 0 or no extra clauses
limit(a): limit a
offset(b): offset b
limit(0).offset(0): offset 0 or no extra clauses
limit(a).offset(0): offset 0 limit a or limit a
limit(0).offset(b): offset b
limit(a).offset(b): offset b limit a

To conclude:

set limit when limit is not zero
set offset when offset is not zero

Yes, case mentioned by this issue (https://github.com/go-gorm/gorm/issues/5735#issue-1395194394 ) is :

Specifying a limit of 0 results in all rows being returned instead of none

When I execute Limit(0) firstly, then Offset(0) , it will result in sql generted without limit and offset suffix, which means all data satified condition will be returned.
I can try to make a pr to fix it.

commit

commit

Yes, case mentioned by this issue (#5735 (comment) ) is :

Specifying a limit of 0 results in all rows being returned instead of none

When I execute Limit(0) firstly, then Offset(0) , it will result in sql generted without limit and offset suffix, which means all data satified condition will be returned.
I can try to make a pr to fix it.

Thanks for attaching the related issue. Do you mean that you will try to solve the difference between Limit(0).Offset(0) and Offset(0).Limit(0) but the behavior for zero values would remain what it is now?


[5.4] Storage fake doesn't work well with response()->download()

Laravel Version: 5.4.30
PHP Version: 7.1

Description:
If you are testing file generation and download using the Storage::fake, when you pass the file url to the download response, it doesn't find the file because the url method returns '/storage/filename'.
It should have an option to create the fake so it sets the proper url to the fake config.
Steps To Reproduce:
In your test:
Storage::fake('thedisk');

In your controller:
// Some file creation logic
// ...

return response()->download(
    Storage::disk('thedisk')->url($createdFileName),
    'somefile.xls',
    ['Content-Type' => 'application/vnd.ms-excel']
);

And it will throw:
Symfony\Component\HttpFoundation\File\Exception\FileNotFoundException: The file "/storage/thecreatedfile.xls" does not exist

Please share how you create the file, what's in your $createdFileName variable.
Sharing incomplete steps of replication causes lots of confusion.

I'm using the Maatwebsite Excel package:
Excel::create('template', function ($excel) {
        $excel->sheet('something', function ($sheet) {
            $sheet->fromArray(['a', 'b']);
        });
    })->store(
        'xls',
        Storage::disk('thedisk')
        ->getAdapter()
        ->applyPathPrefix($model->id)
   );

During the test that code stores the file inside framework/testing/disks/datasets/1/template.xls where 1 is the model id, and then for the $createdFileName just:
$createdFileName = "{$model->id}/template.xls";

It doesn't work when calling the url method to that $createdFileName, so the workaround i found to get the test to green was:
$createdFileName = Storage::disk('thedisk')
        ->getAdapter()
        ->applyPathPrefix("{$model->id}/template.xls");

return response()->download(
    $createdFileName,
    'somefile.xls',
    ['Content-Type' => 'application/vnd.ms-excel']
);

Hmmm, I don't think url() should be used here, I've proposed a new method: https://github.com/laravel/framework/pull/20395

Yes, that path or realPath method is a better than the url().

That was merged in 5.4, will be available in next release :)

Thanks!


[Enhancement] Implemented maintaining original aspect ratio when resizing

#1342
Holding down the ALT key (tested on MacOS) and resizing keeps the current object's height width ratio when resizing.
GIF of the feature:
Not holding anything while resizing = free form
Holding shift while resizing = snap to same width and height
Holding alt while resizing = maintain the height and width ratio when resizing

Updated the resize hint to reflect this change as well

Alt is taken by excalidraw/excalidraw

@dwelle

That said, the behavior should work on Shift, if the object being resized was already created.

Sorry, could you clarify what you mean?
Is holding shift to maintain equal side lengths being removed in favor of only when a shape is created?

it should also memorize original aspect ratio the object had when you started resizing (on pointerdown)

I implemented that first, but it didn't feel so ergonomic to be halfway through resizing a shape, hold down the key to trigger this pull request, and have it snap back to how it was before. It felt more natural to lock in the ratio at the point of resizing.
Is there somewhere else/ another application you are drawing inspiration from that I can use the resize tool and see how the maintain aspect ratio behaves?

@quuu I've edited my comment a while moments ago, so maybe you didn't see the latest -- it addresses both points you're asking (how it should work with Shift, and what apps use that behavior).
As for:

I implemented that first, but it didn't feel so ergonomic to be halfway through resizing a shape, hold down the key to trigger this pull request, and have it snap back to how it was before. It felt more natural to lock in the ratio at the point of resizing.

As I mentioned, this is the standard behavior out there, so that user doesn't need to synchronize their combination perfectly. We also use this when you Alt+drag to duplicate an element: you can press Alt anytime during drag to duplicate.

@dwelle

We also use this when you Alt+drag to duplicate an element: you can press Alt anytime during drag to duplicate.

Did not know about this feature haha

I've edited my comment a while ago, so maybe you didn't see the latest -- it addresses both points you're asking (how it should work with Shift, and what apps use that behavior).

I see... I think I'm still missing something: How would a user get the shape back to 1:1 after it's been created if Shift gets repurposed to maintaining the existing shape's aspect ratio?

without the changes being destructive mid-way.

To not be destructive mid-way, maintaining the ratio should only be turned on if the key is held down at the start of resizing?
I look at #1225 a little bit, and it seems to implement a different behavior than this pull request.
Do you think if this pull request was adjusted to meet the standard behavior and key bindings it would still be worth merging in?

I see... I think I'm still missing something: How would a user get the shape back to 1:1 after it's been created if Shift gets repurposed to maintaining the existing shape's aspect ratio?

No, you wouldn't be able to get back to 1:1. You'd need to create a whole new shape, which is fine in my opinion, because the use case of needing to revert a shape back to a 1:1 ratio is less common than retaining its inherent aspect ratio. But be it as it may, I'd rather align with the standard behavior rather then coming up with our own, unless the custom behavior yields obvious benefits (which in this case it doesn't look like it would). In other words, let's implement the behavior I suggested.

To not be destructive mid-way, maintaining the ratio should only be turned on if the key is held down at the start of resizing?

Yes. Once you hold Shift key, maintain original aspect ratio. Once you release it, ditch the aspect ratio and resize the element back to current cursor position. And if you press Shift again after that, go back to maintaining the original aspect ratio again.
You can test it out on https://figma.com.

I looked at #1225 a little bit, and it seems to implement a different behavior than this pull request.
Do you think if this pull request was adjusted to meet the standard behavior and key bindings it would still be worth merging in?

Yes, #1225 is implementing a different thing, but in a similar way (reverts to original position when you release alt).
Your PR is definitely something we're interested in, and thus will be merged sooner or later. Only problem I can see is that it will potentially touch the same logic as #1225 does (and #1225 still isn't fully settled on how it will solve it), and may conflict in non-trivial ways (or duplicate the implementation to an extent). So I'll have to defer to @dai-shi & @jquintozamora.

@dwelle

You can test it out on https://figma.com.

I'm not seeing the behavior you described on Figma. when I start to resize an object, pressing shift snaps the object to 1:1. Can't seem to replicate the behavior of maintaining the original aspect ratio.
Although I think I understand what you're getting at.

Only problem I can see is that it will potentially touch the same logic as #1225 does

Yea... there's only so many hotkeys... looking to hear ideas about the workflow for this

I'm not seeing the behavior you described on Figma. when I start to resize an object, pressing shift snaps the object to 1:1. Can't seem to replicate the behavior of maintaining the original aspect ratio.

You need to first create a shape, release the mouse button, and then resize it again.

Yea... there's only so many hotkeys... looking to hear ideas about the workflow for this

Not about hotkeys, but code. Anyway, we've already settled on reusing Shift for this.

@quuu Thanks for tackling the issue!
Apart from the feature, as we have so many issues for resizing, we'd need to organize them to avoid unnecessary conflicts. Please check #1298. I know there are some fundamental bugs in our current code that need to be fixed soon. I'll get back to you later. Meanwhile, please consider to fix the feature (please expect some code conflicts later). It's a bit amazing (in a good sense) to see it's just one line fix, thanks to our recent refactoring. Very good catch.

@dai-shi
Thanks! I'll take a look at some of the other bugs to fix while this pull request gets discussed.

Sounds good. It's almost like we are stopping in front of one hurdle: How to code to respond keyUp.
Some relevant discussions:

https://github.com/excalidraw/excalidraw/pull/1225#issuecomment-617168284
https://github.com/excalidraw/excalidraw/issues/1340
https://github.com/excalidraw/excalidraw/pull/768

@quuu Just to let you know that #1475 is merged, and you are welcome to continue with any tasks you are interested. I will try to keep #1298 updated.


Arc bug fixes

fix several bugs found in tests/kernel
for details, pls go to commit log

Codecov Report

Merging #8021 into master will decrease coverage by <.01%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master    #8021      +/-   ##
==========================================
- Coverage   55.03%   55.03%   -0.01%
==========================================
  Files         481      480       -1
  Lines       53936    53868      -68
  Branches    10474    10471       -3
==========================================
- Hits        29686    29648      -38
+ Misses      19981    19954      -27
+ Partials     4269     4266       -3

Impacted Files
Coverage Δ

tests/kernel/profiling/profiling_api/src/main.c
83.05% <ø> (ø)
:arrow_up:

arch/posix/core/fatal.c
0% <0%> (-21.43%)
:arrow_down:

kernel/include/kswap.h
100% <0%> (ø)
:arrow_up:

kernel/include/kernel_structs.h
100% <0%> (ø)
:arrow_up:

kernel/thread.c
85.07% <0%> (+2.8%)
:arrow_up:

Continue to review full report at Codecov.

Legend - Click here to learn more
Δ = absolute <relative> (impact), ø = not affected, ? = missing data
Powered by Codecov. Last update d93ecda...9166c2c. Read the comment docs.


Dealing with nans

Hi,
First of all, thanks for this awesome package. May I ask, can you please add a way of dealing with nans (or missing values) in the dataset, especially if the columns are a numeric type of some sort. This could be dropping columns or rows that have nans, or maybe imputing a user defined values.
Thank you,
J.

ds.fillna and ds.dropna / ds.select_non_missing are support (still in packages, soon in master)


[Task]: Resolve Blockhound Callouts for MySQL plugin (Actions Execute API)

SubTasks
We have observed some blocking calls in MySQL plugin actions execute. This task aims at doing further analysis using blockhound

Resolved with the fix for issue https://github.com/appsmithorg/appsmith/issues/36008

Blocking calls found in testDatasource() and getStructure() methods in MySQL.

Couldn't prioritise working on this due to the mockDB going down critical issue.
https://theappsmith.slack.com/archives/C02MUD8DNUR/p1725892395532789

The blockhound callouts above are originating from the reactive r2dbc maven package.
The error is from pool.create() in https://github.com/appsmithorg/appsmith-ee/blob/288dd68f5c3d45069678329bf4f7fc4272c2914b/app/server/appsmith-plugins/mysqlPlugin/src/main/java/com/external/plugins/MySqlPlugin.java#L330
Hence ignoring this callout as it is from a package

Changing the estimation to 1 as resolution is also as part of this issue along with analysation

Ignoring the above blocking call doesn't show any further blockhound callouts for the MySQL plugin.
Hence closing this task as resolved!
cc: @ApekshaBhosale


adding notes for using exported modules from JavaScript

Checklist:

[ ] Added the change to the "Unreleased" section of the changelog
N/A
[x] Added some example of the new feature to the README
Well, not really a new feature, more of a hidden feature!
[ ] Added a test for the contribution (if applicable)
N/A

All good points, I thought I tried some similar suggestions, but will try again soon and see what works and what doesn't in this regard.

Since there's no activity since 3 months I'll close this as I'd like to keep the tracker tidy. Let's reopen when we want to get this in shape again 🙂


Swipe to change between Tabs

 Issue by Hixie
Thursday Jul 16, 2015 at 22:23 GMT
Originally opened as https://github.com/flutter/engine/issues/21

From @eseidelGoogle on July 16, 2015 16:44
This came up in one of our customer meetings yesterday.  On android you can swipe left/right in the content area to change between tabs in a tab view.
@HansMuller
Copied from original issue: domokit/mojo#328

 Comment by Hixie
Monday Oct 26, 2015 at 05:03 GMT

The difficulty here is that not only should the body be pageable, but the indicator should be animated (with the animation slaved to the pager position) when the user is swiping.

@HansMuller Is this easier to do now that you have the TabSelection widget?

Yes, it should be.

Is this fixed now?

I'm working on a bug fix (the bug showed up in the game's tabs).  I'll close this issue after the bug fix has landed.

As of https://github.com/flutter/flutter/pull/969 this feature should be working reasonably well.


⚠ Bofrost.be has degraded performance

In d8685a7, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 1477 ms

Resolved: Bofrost.be performance has improved in 3f209d2 after 6 minutes.


Microhttpd fails with alot of open filehandles

[2020-08-27 13:17:15.945] [opendatacon] [critical] This is opendatacon version '1.3.0 g07208b6(268 ahead) dirty'
[2020-08-27 13:17:15.945] [opendatacon] [critical] Console level set to error
[2020-08-27 13:17:15.945] [opendatacon] [critical] Log level set to debug
Warning: MHD_USE_THREAD_PER_CONNECTION must be used only with MHD_USE_INTERNAL_POLLING_THREAD. Flag MHD_USE_INTERNAL_POLLING_THREAD was added. Consider setting MHD_USE_INTERNAL_POLLING_THREAD explicitly.
Failed to create inter-thread communication channel: Too many open files
odc> [2020-08-27 13:17:17.738] [WebUI] [error] Failed to start microhttpd daemon. MHD_start_daemon() returned nullptr

This happens when running configs that open ALOT of file handles. It should be on the roadmap to change the WebUI backend to a more modern async, or at least re-entrant library. We might have to live with it until then...

With VPRN 70 (with web port)

microhttpd failed to create the tcp port because of lack of file descriptors available.

lsof: WARNING: can't stat() fuse.xrdp-chansrv file system /home/neil/thinclient_drives
Output information may be incomplete.
117373
With VPRN 80 (with web port)
lsof: WARNING: can't stat() fuse.xrdp-chansrv file system /home/neil/thinclient_drives
Output information may be incomplete.
113561
As we can see on the same machine we have 3812 extra file handlers in VPRN70, that is what causing the issue of microhttpd failure

We don't use libmicrohttpd anymore


Collection links need a "show more" on the collection detail view

Context
See single-cell-ux for context. There is now one collection with 18 links:

A "Show More" was added for long Collection descriptions. Perhaps it could also be applied when the number of links introduces a white space gap between the collection information and the datasets.

# of Links
# of Collections

0
9

1
18

2
19

3
22

4
10

5
13

6
4

7
3

8
1

9
3

12
1

18
1

UX Design

Issue moved to chanzuckerberg/single-cell-data-portal #3501 via Zenhub


Greenkeeper/coveralls 3.0.5

fixes #335

Pull Request Test Coverage Report for Build 851

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 96.648%

Totals

Change from base Build 174:
0.0%

Covered Lines:
636

Relevant Lines:
661

💛  - Coveralls