[Android]Drawable images are removed in release builds

Overview
In Android code in a Flutter project, when specifying an image resource from an HTML img tag, the image is not displayed in the release build.
It is likely that this problem is caused by the removal of image resources in the process of shrinking the release build.
Steps to Reproduce

Execute flutter create to create a new project.
Place a image(sample_image.png) in android/app/src/main/res/drawable of your Flutter project.
Execute flutter run --release on the code sample(see "Code sample" section below).
Tap the show button to display Android Activity.

Code sample
class MyHomePage extends StatelessWidget {
  const MyHomePage({Key? key}) : super(key: key);

  static const MethodChannel _channel = MethodChannel('image_shrink');

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('test'),
      ),
      body: Center(
        child: TextButton(
          child: const Text('show'),
          onPressed: () {
            _channel.invokeMethod('show');
          },
        ),
      ),
    );
  }
}

class MainActivity: FlutterActivity() {
    override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
        super.configureFlutterEngine(flutterEngine)

        val channel = MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "image_shrink")
        channel.setMethodCallHandler { call: MethodCall, result: MethodChannel.Result ->
            when (call.method) {
                "show" -> {
                    val intent = Intent(this@MainActivity, HtmlImageActivity::class.java)
                    startActivity(intent)
                }
                else -> {
                    result.notImplemented()
                }
            }
        }

    }
}

class HtmlImageActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_html_image)

        val textView = findViewById<TextView>(R.id.textView)
        textView.text = HtmlCompat.fromHtml("",
            HtmlCompat.FROM_HTML_MODE_COMPACT, HtmlLocalImageGetter(applicationContext), null)
    }
}

class HtmlLocalImageGetter (private val mContext: Context) : Html.ImageGetter {
    override fun getDrawable(source: String): Drawable {
        val res = mContext.resources
        val drawable = ResourcesCompat.getDrawable(res, res.getIdentifier(source, "drawable", mContext.packageName), null)
            ?: throw Exception()
        drawable.setBounds(0, 0, drawable.intrinsicWidth, drawable.intrinsicHeight)
        return drawable
    }
}

Expected results:

The image is displayed for both debug / release.

Actual results:

The image is displayed in debug but not in release.

Left image is debug, right image is release.

Additional Information

If you do a similar implementation in an Android project that doesn't include Flutter, the image is displayed correctly in both debug and release.
If a resource name is specified as in the sample code below, the image is displayed correctly in both debug and release.

Code sample
val res = resources.getIdentifier("sample_image", "drawable", packageName)
val imageView: ImageView = findViewById(R.id.imageView)
imageView.setImageResource(res)

If you explicitly specify to keep the image, the image is displayed correctly in both debug and release.

I'm not sure, but I expect this to happen because the Flutter project has strict reference checks enabled.
Is strict reference checks enabled in Flutter?Or is there a cause elsewhere?

Hi @keisuke-kiriyama, Thanks for filing the issue. With your reproducible steps the build seems to be failing, Do I need to any dependencies for HtmlCompat to work?

logs
Launching lib/main.dart on Redmi K20 Pro in debug mode...
Warning: Mapping new ns http://schemas.android.com/repository/android/common/02 to old ns http://schemas.android.com/repository/android/common/01
Warning: Mapping new ns http://schemas.android.com/repository/android/generic/02 to old ns http://schemas.android.com/repository/android/generic/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/addon2/02 to old ns http://schemas.android.com/sdk/android/repo/addon2/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/repository2/02 to old ns http://schemas.android.com/sdk/android/repo/repository2/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/sys-img2/02 to old ns http://schemas.android.com/sdk/android/repo/sys-img2/01
Warning: Mapping new ns http://schemas.android.com/repository/android/common/02 to old ns http://schemas.android.com/repository/android/common/01
Warning: Mapping new ns http://schemas.android.com/repository/android/generic/02 to old ns http://schemas.android.com/repository/android/generic/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/addon2/02 to old ns http://schemas.android.com/sdk/android/repo/addon2/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/repository2/02 to old ns http://schemas.android.com/sdk/android/repo/repository2/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/sys-img2/02 to old ns http://schemas.android.com/sdk/android/repo/sys-img2/01
e: /Users/mahesh/Desktop/resource_test/android/app/src/main/kotlin/com/example/resource_test/MainActivity.kt: (6, 56): Unresolved reference: FlutterEngine
e: /Users/mahesh/Desktop/resource_test/android/app/src/main/kotlin/com/example/resource_test/MainActivity.kt: (9, 23): Unresolved reference: MethodChannel
e: /Users/mahesh/Desktop/resource_test/android/app/src/main/kotlin/com/example/resource_test/MainActivity.kt: (10, 46): Unresolved reference: MethodCall
e: /Users/mahesh/Desktop/resource_test/android/app/src/main/kotlin/com/example/resource_test/MainActivity.kt: (10, 66): Unresolved reference: MethodChannel
e: /Users/mahesh/Desktop/resource_test/android/app/src/main/kotlin/com/example/resource_test/MainActivity.kt: (13, 34): Unresolved reference: Intent
e: /Users/mahesh/Desktop/resource_test/android/app/src/main/kotlin/com/example/resource_test/MainActivity.kt: (25, 27): Unresolved reference: AppCompatActivity
e: /Users/mahesh/Desktop/resource_test/android/app/src/main/kotlin/com/example/resource_test/MainActivity.kt: (26, 5): 'onCreate' overrides nothing
e: /Users/mahesh/Desktop/resource_test/android/app/src/main/kotlin/com/example/resource_test/MainActivity.kt: (26, 47): Unresolved reference: Bundle
e: /Users/mahesh/Desktop/resource_test/android/app/src/main/kotlin/com/example/resource_test/MainActivity.kt: (27, 15): Unresolved reference: onCreate
e: /Users/mahesh/Desktop/resource_test/android/app/src/main/kotlin/com/example/resource_test/MainActivity.kt: (28, 9): Unresolved reference: setContentView
e: /Users/mahesh/Desktop/resource_test/android/app/src/main/kotlin/com/example/resource_test/MainActivity.kt: (28, 33): Unresolved reference: activity_html_image
e: /Users/mahesh/Desktop/resource_test/android/app/src/main/kotlin/com/example/resource_test/MainActivity.kt: (30, 24): Unresolved reference: findViewById
e: /Users/mahesh/Desktop/resource_test/android/app/src/main/kotlin/com/example/resource_test/MainActivity.kt: (30, 37): Unresolved reference: TextView
e: /Users/mahesh/Desktop/resource_test/android/app/src/main/kotlin/com/example/resource_test/MainActivity.kt: (30, 52): Unresolved reference: textView
e: /Users/mahesh/Desktop/resource_test/android/app/src/main/kotlin/com/example/resource_test/MainActivity.kt: (31, 18): Variable expected
e: /Users/mahesh/Desktop/resource_test/android/app/src/main/kotlin/com/example/resource_test/MainActivity.kt: (31, 25): Unresolved reference: HtmlCompat
e: /Users/mahesh/Desktop/resource_test/android/app/src/main/kotlin/com/example/resource_test/MainActivity.kt: (32, 13): Unresolved reference: HtmlCompat
e: /Users/mahesh/Desktop/resource_test/android/app/src/main/kotlin/com/example/resource_test/MainActivity.kt: (32, 69): Unresolved reference: applicationContext
e: /Users/mahesh/Desktop/resource_test/android/app/src/main/kotlin/com/example/resource_test/MainActivity.kt: (36, 51): Unresolved reference: Context
e: /Users/mahesh/Desktop/resource_test/android/app/src/main/kotlin/com/example/resource_test/MainActivity.kt: (36, 62): Unresolved reference: Html
e: /Users/mahesh/Desktop/resource_test/android/app/src/main/kotlin/com/example/resource_test/MainActivity.kt: (37, 5): 'getDrawable' overrides nothing
e: /Users/mahesh/Desktop/resource_test/android/app/src/main/kotlin/com/example/resource_test/MainActivity.kt: (37, 47): Unresolved reference: Drawable
e: /Users/mahesh/Desktop/resource_test/android/app/src/main/kotlin/com/example/resource_test/MainActivity.kt: (39, 24): Unresolved reference: ResourcesCompat
e: /Users/mahesh/Desktop/resource_test/android/app/src/main/kotlin/com/example/resource_test/MainActivity.kt: (41, 18): Unresolved reference: setBounds
e: /Users/mahesh/Desktop/resource_test/android/app/src/main/kotlin/com/example/resource_test/MainActivity.kt: (41, 43): Unresolved reference: intrinsicWidth
e: /Users/mahesh/Desktop/resource_test/android/app/src/main/kotlin/com/example/resource_test/MainActivity.kt: (41, 68): Unresolved reference: intrinsicHeight

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:compileDebugKotlin'.
> Compilation error. See log for more details

* 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 4s
Exception: Gradle task assembleDebug failed with exit code 1
Exited (sigterm)

Thank you for your confirmation.
Since import etc. are omitted from the Sample code, it is necessary to fill it.

main.dart
import 'package:flutter/material.dart';
import 'package:flutter/services.dart';

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

class MyApp extends StatelessWidget {
  const MyApp({Key? key}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      title: 'Flutter Demo',
      theme: ThemeData(
        primarySwatch: Colors.blue,
      ),
      home: const MyHomePage(),
    );
  }
}

class MyHomePage extends StatelessWidget {
  const MyHomePage({Key? key}) : super(key: key);

  static const MethodChannel _channel = MethodChannel('image_shrink');

  @override
  Widget build(BuildContext context) {
    return Scaffold(
      appBar: AppBar(
        title: const Text('test'),
      ),
      body: Center(
        child: TextButton(
          child: const Text('show'),
          onPressed: () {
            _channel.invokeMethod('show');
          },
        ),
      ),
    );
  }
}

MainActivity.kt
package com.example.resource_test

import android.content.Intent
import io.flutter.embedding.android.FlutterActivity
import io.flutter.embedding.engine.FlutterEngine
import io.flutter.plugin.common.MethodCall
import io.flutter.plugin.common.MethodChannel

class MainActivity: FlutterActivity() {
    override fun configureFlutterEngine(flutterEngine: FlutterEngine) {
        super.configureFlutterEngine(flutterEngine)

        val channel = MethodChannel(flutterEngine.dartExecutor.binaryMessenger, "image_shrink")
        channel.setMethodCallHandler { call: MethodCall, result: MethodChannel.Result ->
            when (call.method) {
                "show" -> {
                    val intent = Intent(this@MainActivity, HtmlImageActivity::class.java)
                    startActivity(intent)
                }
                else -> {
                    result.notImplemented()
                }
            }
        }
    }
}

HtmlImageActivity.kt
package com.example.resource_test

import android.content.Context
import android.graphics.drawable.Drawable
import androidx.appcompat.app.AppCompatActivity
import android.os.Bundle
import android.text.Html
import android.widget.TextView
import androidx.core.content.res.ResourcesCompat
import androidx.core.text.HtmlCompat

class HtmlImageActivity : AppCompatActivity() {
    override fun onCreate(savedInstanceState: Bundle?) {
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_html_image)

        val textView = findViewById<TextView>(R.id.textView)
        textView.text = HtmlCompat.fromHtml("",
            HtmlCompat.FROM_HTML_MODE_COMPACT, HtmlLocalImageGetter(applicationContext), null)
    }
}

class HtmlLocalImageGetter (private val mContext: Context) : Html.ImageGetter {
    override fun getDrawable(source: String): Drawable {
        val res = mContext.resources
        val drawable = ResourcesCompat.getDrawable(res, res.getIdentifier(source, "drawable", mContext.packageName), null)
            ?: throw Exception()
        drawable.setBounds(0, 0, drawable.intrinsicWidth, drawable.intrinsicHeight)
        return drawable
    }
}

build.gradle
buildscript {
    ext.kotlin_version = '1.6.21'
    repositories {
        google()
        mavenCentral()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:4.1.0'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

allprojects {
    repositories {
        google()
        mavenCentral()
    }
}

rootProject.buildDir = '../build'
subprojects {
    project.buildDir = "${rootProject.buildDir}/${project.name}"
    project.evaluationDependsOn(':app')
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

app/build.gradle
def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
    localPropertiesFile.withReader('UTF-8') { reader ->
        localProperties.load(reader)
    }
}

def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
    throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}

def flutterVersionCode = localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
    flutterVersionCode = '1'
}

def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
    flutterVersionName = '1.0'
}

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

android {
    compileSdkVersion 31

    compileOptions {
        sourceCompatibility JavaVersion.VERSION_1_8
        targetCompatibility JavaVersion.VERSION_1_8
    }

    kotlinOptions {
        jvmTarget = '1.8'
    }

    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }

    defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "com.example.resource_test"
        minSdkVersion 30
        targetSdkVersion 31
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
    }

    buildTypes {
        release {
            // TODO: Add your own signing config for the release build.
            // Signing with the debug keys for now, so `flutter run --release` works.
            signingConfig signingConfigs.debug
        }
    }
}

flutter {
    source '../..'
}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    implementation 'androidx.appcompat:appcompat:1.4.1'
    implementation 'com.google.android.material:material:1.5.0'
    implementation 'androidx.constraintlayout:constraintlayout:2.1.3'
}

AndroidManifest.xml(you should specify AppFullScreenTheme to HtmlImageActivity)
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.resource_test" >

    <application
        android:icon="@mipmap/ic_launcher"
        android:label="resource_test" >
        <activity
            android:name=".HtmlImageActivity"
            android:theme="@style/AppFullScreenTheme">
        </activity>
        <activity
            android:name=".MainActivity"
            android:configChanges="orientation|keyboardHidden|keyboard|screenSize|smallestScreenSize|locale|layoutDirection|fontScale|screenLayout|density|uiMode"
            android:hardwareAccelerated="true"
            android:launchMode="singleTop"
            android:theme="@style/LaunchTheme"
            android:windowSoftInputMode="adjustResize" >

            <meta-data
                android:name="io.flutter.embedding.android.NormalTheme"
                android:resource="@style/NormalTheme" />

            <meta-data
                android:name="io.flutter.embedding.android.SplashScreenDrawable"
                android:resource="@drawable/launch_background" />

            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>

        <meta-data
            android:name="flutterEmbedding"
            android:value="2" />
    </application>

</manifest>

values/styles.xml(you should add AppFullScreenTheme)
<?xml version="1.0" encoding="utf-8"?>
<resources>

</resources>

Code sample

% fvm flutter --version
Flutter 2.10.5 • channel stable • https://github.com/flutter/flutter.git
Framework • revision 5464c5bac7 (8 days ago) • 2022-04-18 09:55:37 -0700
Engine • revision 57d3bac3dd
Tools • Dart 2.16.2 • DevTools 2.9.2

Thanks for the code sample @keisuke-kiriyama, Looks like the layout file is missing, I see error on this line

setContentView(R.layout.activity_html_image)

Here's the sample project resource_test.zip, it would be great if you can update and send a runnable sample project.

please add the layout file below (activity_html_image.xml) to resource_test/android/app/src/main/res/layout.
<?xml version="1.0" encoding="utf-8"?>
<androidx.constraintlayout.widget.ConstraintLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context=".HtmlImageActivity">

  <TextView
      android:id="@+id/textView"
      android:layout_width="wrap_content"
      android:layout_height="wrap_content"
      android:text="TextView"
      app:layout_constraintBottom_toBottomOf="parent"
      app:layout_constraintEnd_toEndOf="parent"
      app:layout_constraintStart_toStartOf="parent"
      app:layout_constraintTop_toTopOf="parent" />
</androidx.constraintlayout.widget.ConstraintLayout>%

Thanks for the code sample @keisuke-kiriyama,  I am able to reproduce the issue on stable and the master channel. The code sample loads the drawable image in debug mode but not in the release model. The complete sample project for reproduction can be found here

debug
release

flutter doctor -v (mac)
[✓] Flutter (Channel stable, 2.10.5, on macOS 12.3 21E230 darwin-arm, locale en-IN)
    • Flutter version 2.10.5 at /Users/mahesh/Documents/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 5464c5bac7 (12 hours ago), 2022-04-18 09:55:37 -0700
    • Engine revision 57d3bac3dd
    • Dart version 2.16.2
    • DevTools version 2.9.2

[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    • Android SDK at /Users/mahesh/Library/Android/sdk
    • Platform android-32, build-tools 31.0.0
    • ANDROID_HOME = /Users/mahesh/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.11+0-b60-7772763)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS (Xcode 13.2.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • CocoaPods version 1.10.2

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

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

[✓] IntelliJ IDEA Community Edition (version 2021.2.1)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 61.2.4
    • Dart plugin version 212.5080.8

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

[✓] Connected device (4 available)
    • Redmi K20 Pro (mobile) • <IP_ADDRESS>:55555                    • android-arm64  • Android 11 (API 30)
    • iPhone 12 Pro (mobile) • 535317A4-921C-488F-B234-C2CC6D4AE5A1 • ios            • com.apple.CoreSimulator.SimRuntime.iOS-14-5 (simulator)
    • macOS (desktop)        • macos                                • darwin-arm64   • macOS 12.3 21E230 darwin-arm
    • Chrome (web)           • chrome                               • web-javascript • Google Chrome 100.0.4896.88

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

• No issues found!

[✓] Flutter (Channel master, 2.13.0-0.0.pre.712, on macOS 12.3 21E230 darwin-arm, locale en-IN)
    • Flutter version 2.13.0-0.0.pre.712 at /Users/mahesh/Documents/flutter_master
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 8c22f5648a (77 minutes ago), 2022-04-25 05:34:07 -0400
    • Engine revision 10efa195bf
    • Dart version 2.18.0 (build 2.18.0-44.0.dev)
    • DevTools version 2.12.2

[✓] Android toolchain - develop for Android devices (Android SDK version 31.0.0)
    • Android SDK at /Users/mahesh/Library/Android/sdk
    • Platform android-32, build-tools 31.0.0
    • ANDROID_HOME = /Users/mahesh/Library/Android/sdk
    • Java binary at: /Applications/Android Studio.app/Contents/jre/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 11.0.11+0-b60-7772763)
    • All Android licenses accepted.

[!] Xcode - develop for iOS and macOS (Xcode 13.2.1)
    • Xcode at /Applications/Xcode.app/Contents/Developer
    ! CocoaPods 1.10.2 out of date (1.11.0 is recommended).
        CocoaPods is used to retrieve the iOS and macOS platform side's plugin code that
        responds to your plugin usage on the Dart side.
        Without CocoaPods, plugins will not work on iOS or macOS.
        For more info, see https://flutter.dev/platform-plugins
      To upgrade see https://guides.cocoapods.org/using/getting-started.html#installation for
      instructions.

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

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

[✓] IntelliJ IDEA Community Edition (version 2021.2.1)
    • IntelliJ at /Applications/IntelliJ IDEA CE.app
    • Flutter plugin version 61.2.4
    • Dart plugin version 212.5080.8

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

[✓] Connected device (3 available)
    • Redmi K20 Pro (mobile) • <IP_ADDRESS>:5533 • android-arm64  • Android 11 (API 30)
    • macOS (desktop)        • macos            • darwin-arm64   • macOS 12.3 21E230 darwin-arm
    • Chrome (web)           • chrome           • web-javascript • Google Chrome 100.0.4896.127

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

! Doctor found issues in 1 category.

The Android tools are removing the dash.png resource in the release build because the HtmlLocalImageGetter loads the resource dynamically and does not statically reference the resource's ID.
You can work around this by setting shrinkResources false in the release build or by configuring shrinkResources to retain that image.

@jason-simmons
Thank you for you reply.
Are the "Android tools" you say included in Flutter?
Will Android tools not be used in Android projects that don't include Flutter?

Flutter builds Android apps using the standard build tools provided by the Android SDK.
See https://developer.android.com/studio/build/shrink-code

The concern of this issue is not whether shrinkResources is enabled or not.
HtmlLocalImageGetter loads the resource dynamically.
In Android-native projects with shrinkResources true, the resource shrinker does not remove such resources by default.
Does Flutter change the default behavior?
See: https://developer.android.com/studio/build/shrink-code

However, if your code makes a call to Resources.getIdentifier() (or if any of your libraries do that—the AppCompat library does), that means your code is looking up resource names based on dynamically-generated strings. When you do this, the resource shrinker behaves defensively by default and marks all resources with a matching name format as potentially used and unavailable for removal.

cc @blasten

Does Flutter change the default behavior?

You can try flutter build apk/appbundle --release --no-shrink, or use ./gradlew assembleRelease from the android directory.
The Flutter tool shrinks by default, and doesn't have a way of determining when your app explicitly set the value to false.
what are you trying to do? Is this some type of plugin that loads files from a dynamically generated filename string?

There are two configurations for resource shrinking: shrinkResources and tools:shrinkMode.
Here an example.
// static reference
val name = "static_image.png"
val res = resources.getIdentifier(name, "drawable", packageName)

// dynamic reference
val name = String.format("dynamic_%1d", angle + 1)
val res = resources.getIdentifier(name, "drawable", packageName)

shrinkResources = false
shrinkResources = true & tools:shrinkMode = safe
shrinkResources = true & tools:shrinkMode = strict

static
not shrinked
shrinked
shrinked

dynamic
not shrinked
not shrinked
shrinked

The Android default befavior is shrinkResources = true & tools:shrinkMode = safe, while the Flutter one seems to be shrinkResources = true & tools:shrinkMode = strict.
I could not find the configuration about tools:shrinkMode in Flutter repository, but I suspect that there are some tricks in Flutter resource processing.

what are you trying to do?

I am creating a Flutter project with some Android native codes and resources.
There is a workaround of this issue by using tools:keep, but I would like to know whether this behavior is as expected or not.

@blasten Could you reopen this?

@uny if this is your own app, have you tried using the flags described in https://github.com/flutter/flutter/issues/102455#issuecomment-1115492914?

@blasten Please read the comment https://github.com/flutter/flutter/issues/102455#issuecomment-1115792495 .

I suspect that there are some tricks in Flutter resource processing.

No. The only bit that the Flutter tool sets is  shrinkResources: true https://github.com/flutter/flutter/blob/master/packages/flutter_tools/gradle/flutter.gradle#L258.
It looks liketools:shrinkMode = strict is defined in keep.xml. The flutter tool does not generate this file.

You can see that there is not keep.xml in the project when you try the steps to reproduce https://github.com/flutter/flutter/issues/102455#issue-1213527956.

OK, I gave up.
What I would like to ask is that why is the behavior different between Android native and Flutter?.
There is no keep.xml but tools:shrinkMode will be strict only in the Flutter project.
I see that Flutter team does not intend the difference and something may be wrong.
I will check the Flutter's build process when I have time and create another issue if I found the cause.


geometry

This PR adds setters to @kfranqueiro's initial geometry getter work, along with tests. The actual setters could probably be refactored, but focus was put on readability.

refs #8

I can appreciate the focus on readability in this initial iteration, and I found myself debating whether some of the shortenings I suggested detract considerably from that.  However, I think at the very least, shortening the code in setMarginBox may actually improve readability for that one given the common base in both cases.
It might be possible to shorten this more considerably, but I'd need to give my brain another iteration to catch that, and I suspect it'd involve some ugly <any> casts to get around our old favorite TS7017.


AzurePrep: add user feedback

Add user feedback for all stages - what is the program doing after each user input, etc

Updated at AzurePrepUpdates branch.


Add testnet packageIds

Summary
Add published packageIds to Move.toml files

Closing in favor of https://github.com/circlefin/stablecoin-sui/pull/6


added correct checks, defaults and conversion to REST only WMTS

this also fixes #461

@tomkralidis I merge this one before #620 and update the PR.

@chrisgraf merged. It took a while. Sorry.


[feature request] Multi-select namespace to exclude from view

What would you like to be added:
The ability to select and multiselect  namespace to exclude from the current view
Why is this needed:
When you do not know in advance what namespaces will be called, but you want to be able to see them, you can't use the current multi-select to display them unless you keep the namespace dropdown open so you can pick up the new namespace when it appears. Instead, it would be better to say "show me everything except what is selected"
For example, I want to see everything except what is in the kube-system namespace. Right now, I have to CTRL+Click on every namespace except for kube-system, then add any new namespaces to that list if and when they appear.
In a terminal I can just do something like:
watch kubectl get pods --all-namespaces \| grep -Ev "^\(kube-system\)"
I want to be able to do this with the Lens IDE
Environment you are Lens application on:

Kubernetes distribution: GKE
Desktop OS: Linux (Fedora 35)

FYI If namespaces don't get created often you can already just deselect "kube-system".

The cluster is a dev/testing cluster, so new namespaces get created and deleted frequently. Deselecting kube-system from the list also switches off "all-namespaces" mode, so I no longer see any new pods on new namespaces showing up.

Still not fixed

Would love to have a preference that let's you ignore specific namespaces from even showing, so that I can have "show all namespaces" and see new ones that popup without the system.


Unknown filter rule: `':-' When trying to add filter flag to FLAGS

Describe the bug
We're trying to set up a better workflow where files that are not part of the deployment, not excluded in rsync, and not listed in our .gitignore file are deleted.  Found what seemed to be a pretty decent option. However it causes an error when the pipeline is ran.
Error:
Unknown filter rule: `':-'
rsync error: syntax or usage error (code 1) at exclude.c(1212) [client=3.2.7]

To reproduce
Create a pipeline in Bitbucket using the WPengine pipe:
            - pipe: wpengine/wpe-site-deploy:v1
              variables:
                WPE_SSHG_KEY_PRIVATE: $WPE_SSHG_KEY_PRIVATE
                WPE_ENV: ENVNAME
                FLAGS: --include='**.gitignore' --exclude='/.git' --filter='\:- .gitignore' --delete-after

Expected behavior
Expect for the repo to be deployed to the respective environment and all files not explicitly excluded nor listed in our .gitignore are deleted.
Build Output & Screenshots
Related Output from the pipeline:
Authenticated to [env.ssh.wpengine.net](http://env.ssh.wpengine.net/) ([IP]:22) using "publickey".
debug1: setting up multiplex master socket
debug1: channel 0: new mux listener [/root/.ssh/ctl/c84fdf] (inactive timeout: 0)
debug1: forking to background
debug1: Entering interactive session.
debug1: pledge: id
!!! MULTIPLEX SSH CONNECTION ESTABLISHED !!!
Unknown filter rule: `':-'
rsync error: syntax or usage error (code 1) at exclude.c(1212) [client=3.2.7]

Version information

Action version: v1
WordPress version: 6.4.2

Additional context
I'm up for other best practices to handle this if there is a known better way.

Hi @ops-andy, we have just enabled the issue tracker on our pipe's Bitbucket repository. Would you mind transferring this issue over there? If this is a Bitbucket specific thing that doesn't affect GitHub it will help us keep track.
When you port the issue, could you tell us where it is you expect files to be deleted? Each step in a pipeline runs in a docker container that pulls the repository and then gets destroyed after use, so how are you persisting the deletion?

Committing the deletions back to your Bitbucket repository?
Saving an artifact?
Is there another reason that deleting files only in the pipe's container is useful to you?

If the answer is none of the above, then I'm not sure that deleting files during your deploy step will do what you want, even if rsync wasn't complaining.
Aside from that extra context, it sounds like this could be an escaping problem with the flags. I'll brush up on the rsync --filter flag and follow up with you in Bitbucket if this is still an issue for you.


Pileupsubmodule

Added submodule for pileup. Updated pileup version and made corresponding changes in Mango.

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

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


Go to definition opens duplicate instances of files.

Version: 1.52.1
Commit: ea3859d4ba2f3e577a159bc91e3074c5d85c0523
Date: 2020-12-16T16:32:10.090Z
Electron: 9.3.5
Chrome: 83.0.4103.122
Node.js: 12.14.1
V8: <IP_ADDRESS>-electron.0
OS: Linux x64 5.4.0-58-generic
-I have two source files open A and B
-each A and B are in their own separate editor pane
-File A contains a method call that is defined in File B.
-when I hit 'go to definition' on this method, vscode opens a new instance of file B inside of file A's editor pane.
The expected behaviour is that the editor would just jump to a focus the existing instance of file B in the other editor pane.

(Experimental duplicate detection)
Thanks for submitting this issue. Please also check if it is already covered by an existing one, like:

"Go back" Jumps to different editor when in split editor mode with same File (#95818)

Not a duplicate. Thanks though bot.

-when I hit 'go to definition' on this method, vscode opens a new instance of file B inside of file A's editor pane.

Do you mean that Peek view is opened? See https://code.visualstudio.com/Docs/editor/editingevolved#_peek
If there are several definitions for various "go to ..." you would get Peek view. To change this check family of "Goto Location" settings (searching by editor.gotoLocation) and check that editor.definitionLinkOpensInPeek is false

I have a method call. I right click on the method and in the subsequent dropdown menu I hit "goto definition". It then opens a brand new instance of the file that the method is defined in, instead of focusing the existing instance of the file.
No peek view involved. Let me know if I still need to provide clarification.

Oh, I was confused by "inside of file A's editor pane." looks like you are talking about editors group.
By default new editors are opened/focused within same group so you can have independent groups and navigation in one won't break focus/workflow in other.
Setting "workbench.editor.revealIfOpen": true should focus file in other groups instead (when possible) which I guess is your preferred behavior.


xkbDir: fix evaluation bug in xkbDir option

This fixes the errors that came up in https://github.com/NixOS/nixpkgs/pull/11930

I suspect just using type = types.package; should be enough to make this work.

I pushed what's used in other options having the same problems.

But I don't consider it very nice either, and having to do this certainly seems nix-dev-unfriendly.

Ah, now I found what I struggled to recall: #10039.


In function resetMagHeading, the reset of output_states is done twice in 321 sequence situation!

	// calculate the amount that the quaternion has changed by
	_state_reset_status.quat_change = quat_before_reset.inversed() * _state.quat_nominal;

	// add the reset amount to the output observer buffered data
	outputSample output_states;
	unsigned output_length = _output_buffer.get_length();
	for (unsigned i = 0; i < output_length; i++) {
		output_states = _output_buffer.get_from_index(i);
		output_states.quat_nominal = _state_reset_status.quat_change * output_states.quat_nominal;
		_output_buffer.push_to_index(i, output_states);
	}

	// apply the change in attitude quaternion to our newest quaternion estimate
	// which was already taken out from the output buffer
	_output_new.quat_nominal = _state_reset_status.quat_change * _output_new.quat_nominal;

	// capture the reset event
	_state_reset_status.quat_counter++;

Please explain which variable what you think is being reset twice - it is not obvious to me.

each quaternion in the output buffer is rotated through the reset amount, then output_new is rotated.


[opengl-2] Cherry pick "Add WebP decoding support to Linux and Windows"

Cherry pick of https://github.com/maplibre/maplibre-native/pull/1314 to bring WebP decoding support to the opengl-2 branch.
WebP support has been requested a few times in TileServer-GL, like this thread https://github.com/maptiler/tileserver-gl/issues/426#issuecomment-1731116965

@ntadej  I was trying to merge in this webp support cherry pick, but i notice the added test fails in QT . Do you know if this test was ignored in main, or if something was added to support webp for QT? it doesn't seem like it fails on main.

You should also pick #1662 which includes important security updates to libwebp.

I already merged that vpkg update as part of https://github.com/maplibre/maplibre-native/pull/1940

On the question of the qt webp  "Unsupported image type" error, it seems by default it uses this QImage::fromData to decode the image. But it looks like it does not support webp from https://doc.qt.io/qt-6/qimagereader.html#supportedImageFormats , so I guess an unsupported error may make sense.
I was looking at adding in code for when 'QT_IMAGE_DECODERS' is set to false, like
https://github.com/maplibre/maplibre-native/pull/2029/commits/5bdfe0b87e923a7feb347ac32b34581ddf06938e , but I think that needs a few libraries added and it doesn't seem like that is what was done in main.

Guessing maybe qt might need a 'mage I/O Plugin' for WEBP?   https://doc.qt.io/qt-6/qtimageformats-index.html#the-image-i-o-plugins

The plugin is not built by default. The test was just disabled in main.
I would not update the GCC version in this branch unless strictly needed.

Do you know where that test gets disabled?

Thanks. I'm going to close this and re-open a fresh PR without all the testing, and just apply that #if !defined(__QT__)


ops 3 - IaC setup

follow up on #7

update MariaDB configuration to use ColumnStore engine
review Meilisearch to see if we want to integrate it
give DB server it's own internal/private domain name -- may assist with IaC setup
start on CloudFormation templates for automated deployment
adjust db-instance disk size and determine if we want to use S3 for object storage
consider / start documenting backup plan

Note that the current plan is not use ColumnStore.
We want to test out RDS and see how that compares to our current db.


quic-interop: change alpn from hq-29 to hq-interop

I was taking a look at https://interop.seemann.io/ and noticed some failures. After some local debugging, it seems to be the ALPN.

Wonderful! Thank you very much for the PR.
In addition to making this change, do we need to do any changes to the interop runner itself? cc @janaiyengar


can't initial Animated in componentDidMount in Android

(Android RN0.47)I code this
'use strict';
let _animateHandler;
class MAnimated extends Component{

    constructor(props){
        super(props);

        this.state={
            opacityAnmValue: new Animated.Value(0),
        }
    }

    componentDidMount(){
        _animateHandler = Animated.timing(
            this.state.opacityAnmValue,
            {
                toValue: 1,
                duration: 3000,
                easing: Easing.bezier(0.15, 0.73, 0.37, 1.2)
            }
        );
    }

    _onPress(){
        _animateHandler.start && _animateHandler.start();
    }

    render(){
        return (
            <View style={styles.container}>
            <Animated.View style={[styles.content, {opacity: this.state.opacityAnmValue}]}>
                <Text>hi</Text>
            </Animated.View>
            <TouchableOpacity onPress={() => this._onPress()} style={styles.btnContent}>
            <View><Text>Start Animated</Text></View>
            </TouchableOpacity>
            </View>
        );
    }
}

When i press this TouchableOpacity , it throw error(undefined is not an object(evaluating '_animatedHandler.start'))with a red screen , ,however, it's works when i code like below:
constructor(props){
        super(props);

        this.state={
            opacityAnmValue: new Animated.Value(0),
        }
    }

    componentDidMount(){
    }

    _onPress(){
        _animateHandler = Animated.timing(
            this.state.opacityAnmValue,
            {
                toValue: 1,
                duration: 3000,
                easing: Easing.bezier(0.15, 0.73, 0.37, 1.2)
            }
        ).start();
       // _animateHandler.start && _animateHandler.start();
    }
render(){
/**no change with render**/
}

Why the frist code way can't work ? thank you for your answer

You need to call .start() if you want the animation to start. Is there any reason why you do not want to call .start?

As you can see, I initial the animation in componentDidMount()  instead of  in _onPress()(I guess if I code in this way, it would improve my user experience by reduce _onPress-runnig time, but I not really sure ),and I call it on_onPress(), what I want is that the animation will not .start until users press my button.

This issue looks like a question that would be best asked on StackOverflow.
StackOverflow is amazing for Q&A: it has a reputation system, voting, the ability to mark a question as answered. Because of the reputation system it is likely the community will see and answer your question there. This also helps us use the GitHub bug tracker for bugs only.
Will close this as this is really a question that should be asked on StackOverflow.


route not registering

I've created a new route for a new version, and it's not registering...
Route::api([
  'namespace' => 'Api\V2',
  'before' => 'useragent',
  'version' => ['v2'],
  'after' => 'session.cookie.remove',
], function ($router) {

  // Can't access unless you have a valid token
  Route::group([ 'before' => 'oauth' ], function () {
    Route::resource('resource1', 'ResourceOneController', [ 'only' => [ 'show' ] ]);
  });

});

Route::api([
  'namespace' => 'Api\V1',
  'before' => 'useragent',
  'version' => ['v1'],
  'after' => 'session.cookie.remove',
], function ($router) {

  // Can't access unless you have a valid token
  Route::group([ 'before' => 'oauth' ], function () {
    Route::resource('resource1', 'ResourceOneController', [ 'only' => [ 'show' ] ]);
  });
});

However, the V2 route isn't visible in 'php artisan api:routes'
Any ideas?

Does it show up if you remove v1?
Have you tried sending requests to both and checking if they actually get called?

Yes, whichever route I declare last is visible.

Ok can if you send the headers for the version does it work?
—
Sent from Mailbox
On Tue, Mar 17, 2015 at 4:21 AM, Geoff Lancaster<EMAIL_ADDRESS>wrote:

Yes, whichever route I declare last is visible.
Reply to this email directly or view it on GitHub:
https://github.com/dingo/api/issues/380#issuecomment-82096571

Version of the package are you using mate?

0.8.2

Any other thoughts on this?


What Are Fake Cols/Fields For? (Add Documentation)

The docs do not state what fake columns and fields are for, or show example of using them.

Fake Fields Trait
 Fake Columns Trait

I also don't see the CRUD library using either of these traits in a meaningful way.
Side Note
I originally wanted a "fake field" on the create method of a crud I've created. It polls a remote resource via ajax and updates several db column fields based on the response. This field doesn't correspond to any one column, so I needed a way to create a crud field that is ignored.
Looks like an HTML crud field is the best way for this?

Hi @zschuessler ,
You can create a field that is ignored by the CRUD's store/update just like you would any other field. The only difference would be NOT to include it in the $fillable property on your model. If you're using $guarded, then it should be guarded.
Fake fields are used in a very specific fashion: they show up on the front-end, but instead of being stored in their own column, they're all bundled into an array and stored as JSON in an "extras" column. It's a handy way to add unimportant fields without creating migrations. It's mostly used in the PageManager package. Each page template can have a bunch of fields, of different types, but they're mostly just text, so it's not important for them to be in a normal form in a relational DB. You can read more about fake fields here.
Cheers!

Awesome, thank you


Update virtual-machines-windows-faq.md

Add Windows 10 as a supported OS for an Azure VM.

@alexandair,
Thanks for having already signed the Contribution License Agreement. Your agreement was validated by Microsoft. We will now review your pull request.
Thanks,
Microsoft Pull Request Bot

@cynthn Hi Cynthia Please review these proposed changes. Thanks.

#sign-off @alexandair thanks for the feedback :)

@cynthn You're welcome.


Not Working in Catalina - 10.15.7 (19H15)

Its not working in my mac. please add support to Catalina as well.

same problem. Thats really sad, because i love this project


Mininet through exception when running with eventlet.

Actual Behavior:
If subprocess library is patched by eventlet (>0.20), mininet throws exception when creating a new node.
File "/usr/lib/python3/dist-packages/mininet/node.py", line 1067, in init
Switch.init( self, name, **params )
File "/usr/lib/python3/dist-packages/mininet/node.py", line 889, in init
Node.init( self, name, **params )
File "/usr/lib/python3/dist-packages/mininet/node.py", line 111, in init
self.startShell()
File "/usr/lib/python3/dist-packages/mininet/node.py", line 157, in startShell
self.pollOut = select.poll()
AttributeError: module 'select' has no attribute 'poll'
It seems eventlet removed that function in 0.20 release.
Detailed Steps to Reproduce the Behavior:

Install python3-eventlet (0.20).
Run eventlet monkey_patch. (eventlet.monkey_patch())
Create a mininet node.

Additional Information:

HI Bolei. I don't think it's a good idea to patch the standard Python library. If eventlet breaks subprocess, I don't think it is a Mininet error, is it?

this is said to be intentional, see https://github.com/eventlet/eventlet/issues/608


userId when uploading files

Is there a way to pass Meteor.userId() when the image is uploaded? I've been trying to figure that one out for a while now.

You use the formdata as described to to add meta data to the images


Missing file in benchmark

This has a non-committed file in plutus-core-test.  See #5375, #5376, and #5377.

This is fixed (ie, it now fails, as expected) by #5382.


ValueConverter converts first custom rule and ignores the rest custom ones

Continuing from conversion https://github.com/langium/langium/pull/1067#issuecomment-1574258361.
Langium version: 1.2
Package name: mermaid-parser
Steps To Reproduce

Create custom ValueConverter by extending the default.
Set custom pattern function.
Add Value Converter to language module.
Add the custom TokenBuilder to language module.
Parse the code.

Link to code example:

Custom ValueConverter: https://github.com/Yokozuna59/mermaid-lint/blob/44e3428e94087a4e82257767403c92726590c8f3/packages/mermaid-parser/src/language/mermaid-value-converter.ts#L13-L51
Custom pattern function: https://github.com/Yokozuna59/mermaid-lint/blob/44e3428e94087a4e82257767403c92726590c8f3/packages/mermaid-parser/src/language/matchers/common.ts#L29-L36
Custom TokenBuilder: https://github.com/Yokozuna59/mermaid-lint/blob/44e3428e94087a4e82257767403c92726590c8f3/packages/mermaid-parser/src/language/mermaid-token-builder.ts#L11-L37
Sample code to parse: https://github.com/Yokozuna59/mermaid-lint/blob/44e3428e94087a4e82257767403c92726590c8f3/packages/mermaid-parser/tests/common/title.test.ts#L146-L158

The current behavior
The entered input:
pie title test
title sample

Enters matcher functions:

First match:

Second match:

Enters ValueConverter
I added console.log in ValueConverter to see how many times have been entered, only once:

Then goes stray to building AST.

Note: It's occurs when there is more than one value need to be converted, not only duplicate rule.

The expected behavior
Matches both custom rules, convert values, set the value of both with no errors.

@Yokozuna59 again, the issue is somewhere else. Your fragment rule TITLE_AND_ACCESSIBILITIES isn't parsing NEWLINE even though it's in the input between both TITLE terminals. Replacing TITLE_AND_ACCESSIBILITIES rule with the following does the trick:
fragment TITLE_AND_ACCESSIBILITIES:
    ((accDescr=ACC_DESCR | accTitle=ACC_TITLE | title=TITLE) NEWLINE*)+
;

It works, but that would break the Section parse rule that needs NEWLINE+ if TITLE_AND_ACCESSIBILITIES fragment exists.

You can probably move NEWLINE* in front of the assignments instead of after it, that should fix it.

You can probably move NEWLINE* in front of the assignments instead of after it, that should fix it.

No it didn't, it also brook other parts other than section test cases. Here is the parser errors:
[
  NoViableAltException: Expecting: one of these possible Token sequences:
    1. [ACC_DESCR]
    2. [ACC_TITLE]
    3. [TITLE]
  but found: '"GitHub"'
      at ChevrotainWrapper.ErrorHandler.raiseNoAltException (/home/potato/work/yokozuna59/mermaid-lint/node_modules/.pnpm/chevrotain@10.4.2/node_modules/chevrotain/src/parse/parser/traits/error_handler.ts:120:7)
      at ChevrotainWrapper.RecognizerEngine.orInternal (/home/potato/work/yokozuna59/mermaid-lint/node_modules/.pnpm/chevrotain@10.4.2/node_modules/chevrotain/src/parse/parser/traits/recognizer_engine.ts:652:10)
      at ChevrotainWrapper.RecognizerApi.or (/home/potato/work/yokozuna59/mermaid-lint/node_modules/.pnpm/chevrotain@10.4.2/node_modules/chevrotain/src/parse/parser/traits/recognizer_api.ts:71:17)
      at ChevrotainWrapper.wrapOr (/home/potato/work/yokozuna59/mermaid-lint/node_modules/.pnpm/langium@1.2.0/node_modules/langium/src/parser/langium-parser.ts:559:14)
      at LangiumParser.alternatives (/home/potato/work/yokozuna59/mermaid-lint/node_modules/.pnpm/langium@1.2.0/node_modules/langium/src/parser/langium-parser.ts:83:22)
      at /home/potato/work/yokozuna59/mermaid-lint/node_modules/.pnpm/langium@1.2.0/node_modules/langium/src/parser/parser-builder-base.ts:176:37
      at /home/potato/work/yokozuna59/mermaid-lint/node_modules/.pnpm/langium@1.2.0/node_modules/langium/src/parser/parser-builder-base.ts:255:48
      at Array.forEach (<anonymous>)
      at /home/potato/work/yokozuna59/mermaid-lint/node_modules/.pnpm/langium@1.2.0/node_modules/langium/src/parser/parser-builder-base.ts:255:30
      at ChevrotainWrapper.DEF (/home/potato/work/yokozuna59/mermaid-lint/node_modules/.pnpm/langium@1.2.0/node_modules/langium/src/parser/parser-builder-base.ts:351:28) {
    token: {
      image: '"GitHub"',
      startOffset: 41,
      endOffset: 48,
      startLine: 2,
      endLine: 2,
      startColumn: 17,
      endColumn: 24,
      tokenTypeIdx: 16,
      tokenType: [Object]
    },
    resyncedTokens: [],
    previousToken: {
      image: '\n',
      startOffset: 24,
      endOffset: 24,
      startLine: 1,
      endLine: 1,
      startColumn: 25,
      endColumn: 25,
      tokenTypeIdx: 8,
      tokenType: [Object]
    },
    context: { ruleStack: [Array], ruleOccurrenceStack: [Array] }
  },
  NotAllInputParsedException: Expecting end of file but found `"GitHub"`.
      at ChevrotainWrapper.RecognizerEngine.ruleFinallyStateUpdate (/home/potato/work/yokozuna59/mermaid-lint/node_modules/.pnpm/chevrotain@10.4.2/node_modules/chevrotain/src/parse/parser/traits/recognizer_engine.ts:671:23)
      at ChevrotainWrapper.invokeRuleWithTryCst [as Mermaid] (/home/potato/work/yokozuna59/mermaid-lint/node_modules/.pnpm/chevrotain@10.4.2/node_modules/chevrotain/src/parse/parser/traits/recognizer_engine.ts:245:16)
      at LangiumParser.parse (/home/potato/work/yokozuna59/mermaid-lint/node_modules/.pnpm/langium@1.2.0/node_modules/langium/src/parser/langium-parser.ts:154:38)
      at DefaultLangiumDocumentFactory.parse (/home/potato/work/yokozuna59/mermaid-lint/node_modules/.pnpm/langium@1.2.0/node_modules/langium/src/workspace/documents.ts:251:46)
      at DefaultLangiumDocumentFactory.create (/home/potato/work/yokozuna59/mermaid-lint/node_modules/.pnpm/langium@1.2.0/node_modules/langium/src/workspace/documents.ts:170:38)
      at DefaultLangiumDocumentFactory.fromString (/home/potato/work/yokozuna59/mermaid-lint/node_modules/.pnpm/langium@1.2.0/node_modules/langium/src/workspace/documents.ts:156:21)
      at parse (/home/potato/work/yokozuna59/mermaid-lint/packages/mermaid-parser/tests/test-utils.ts:24:59)
      at /home/potato/work/yokozuna59/mermaid-lint/packages/mermaid-parser/tests/pie/syntax.test.ts:274:49
      at runTest (file:///home/potato/work/yokozuna59/mermaid-lint/node_modules/.pnpm/@vitest+runner@0.31.4/node_modules/@vitest/runner/dist/index.js:508:11)
      at runSuite (file:///home/potato/work/yokozuna59/mermaid-lint/node_modules/.pnpm/@vitest+runner@0.31.4/node_modules/@vitest/runner/dist/index.js:611:15) {
    token: {
      image: '"GitHub"',
      startOffset: 41,
      endOffset: 48,
      startLine: 2,
      endLine: 2,
      startColumn: 17,
      endColumn: 24,
      tokenTypeIdx: 16,
      tokenType: [Object]
    },
    resyncedTokens: [],
    context: { ruleStack: [], ruleOccurrenceStack: [] }
  }
]```

@Yokozuna59 That's an issue you encounter due to NEWLINE tokens at the start of groups. The parser will enter the optional group due to it's lookahead matching a NEWLINE token (or multiple). Since it's already inside of the group, it will try to parse TITLE_AND_ACCESSIBILITIES as well, which has a mandatory ACC_DESCR|ACC_TITLE|TITLE group in there. That's the reason for the parser error.
Again, I would wholeheartedly recommend to rethink your approach to parsing NEWLINE and move it to the end of groups/statements. Having them at the start of groups will always lead to problems somewhere down the line.

@Yokozuna59 That's an issue you encounter due to NEWLINE tokens at the start of groups. The parser will enter the optional group due to it's lookahead matching a NEWLINE token (or multiple). Since it's already inside of the group, it will try to parse TITLE_AND_ACCESSIBILITIES as well, which has a mandatory ACC_DESCR|ACC_TITLE|TITLE group in there. That's the reason for the parser error.

Oh, I see why. It appears that it would be hard to implement that fragment rule so that it doesn't affect other parts that needs NEWLINE.

Again, I would wholeheartedly recommend to rethink your approach to parsing NEWLINE and move it to the end of groups/statements. Having them at the start of groups will always lead to problems somewhere down the line.

It would be really hard to implement it in this way; some parts need to have NEWLINE at the beginning, and some don't.
For instance, in the Section parse rule, the first section would be parsed currently if TITLE_AND_ACCESSIBILITIES exists since that fragment would parse the whole line, but what about if it doesn't? then the following code would be fine:
pie "section": 1

And I can't add NEWLINE+ after Section because it'll throw errors if it was at EOF. The solution here didn't work https://github.com/langium/langium/discussions/1048#discussioncomment-5948913.

Anyway, I'll close the issue since it appears that the issue was on the grammar side, not the langium side as I thought. I really apologize for disturbing you guys the past few weeks because of my lack of skills in the great framework.
Thanks for your help so much!

I might do what you have suggested:

Override the Lexer service to always return a NEWLINE token at the end of the token stream. That way you don't need to work with the EOF token (which doesn't seem to work, we've also experienced this issue recently).

To add NEWLINE token after each time match of TITLE_AND_ACCESSIBILITIES fragment rule to prevent greedily consume of newlines.

I really apologize for disturbing you guys the past few weeks because of my lack of skills in the great framework.

All good, you're asking questions in good faith to learn something new. We've all been there :)
I am by the way very interested in seeing a Langium based parser merged into the Mermaid code base. This is what you're discussing in the other issue, right? This would be a huge boost in download numbers and popularity for Langium.

To add NEWLINE token after each time match of TITLE_AND_ACCESSIBILITIES fragment rule to prevent greedily consume of newlines. But not sure it if would affect other parts from location perspective.

Yes, that's one way to do it. Looking at the original jison grammar, I begin to wonder why you don't transcribe it one to one into the Langium grammar? The jison grammar also seems to use eol at the end of each statement. They're both EBNF-esque language definitions, so that should work without any issues. Changing the grammar like you're doing right now will certainly result in edge case regressions from previous mermaid versions.

All good, you're asking questions in good faith to learn something new. We've all been there :)

Thanks!

I am by the way very interested in seeing a Langium based parser merged into the Mermaid code base. This is what you're discussing in the other issue, right?

Yes! That's the goal; I'm currently planning to support it as a standalone parser before supporting other services, e.g., LSP, etc.
I'm still not sure what's the best approach for using it as parser not a LSP.
Here is what I come up with in this pr.

Looking at the original jison grammar, I begin to wonder why you don't transcribe it one to one into the Langium grammar? The jison grammar also seems to use eol at the end of each statement. They're both EBNF-esque language definitions, so that should work without any issues. Changing the grammar like you're doing right now will certainly result in edge case regressions from previous mermaid versions.

As I said before, the EOF token from chevrotain isn't working as expected, or maybe I used it in the wrong way, and it's properly the second one.
Maybe because it uses it as /NOT_APPLICABLE/ instead of really EOF.

As I said before, the EOF token from chevrotain isn't working as expected, or maybe I used it in the wrong way, and it's properly the second one.

Yeah, I'm not sure how to deal with EOF in Chevrotain either. My recommendation would be to add a NEWLINE token to the end of the token stream in the Lexer service. That would alleviate the need for trying to parse the EOF token at all. See here for an example.


Unknown error occurred / Adding cloud device not possible

Hi,
i have added my new device via homewhiz and its working on my phone.
So i tried to install and configure it in HA but getting the error: Unknown error occurred
In the log i can find:
2023-07-28 14:10:05.230 ERROR (MainThread) [aiohttp.server] Error handling request
Traceback (most recent call last):
  File "/usr/local/lib/python3.11/site-packages/aiohttp/web_protocol.py", line 433, in _handle_request
    resp = await request_handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/aiohttp/web_app.py", line 504, in _handle
    resp = await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/local/lib/python3.11/site-packages/aiohttp/web_middlewares.py", line 117, in impl
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 85, in security_filter_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 100, in forwarded_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 28, in request_context_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 80, in ban_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 236, in auth_middleware
    return await handler(request)
           ^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 148, in handle
    result = await handler(request, **request.match_info)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 181, in post
    return await super().post(request, flow_id)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/http/data_validator.py", line 72, in wrapper
    result = await method(view, request, data, *args, **kwargs)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/data_entry_flow.py", line 110, in post
    result = await self._flow_mgr.async_configure(flow_id, data)
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 271, in async_configure
    result = await self._async_handle_step(
             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 367, in _async_handle_step
    result: FlowResult = await getattr(flow, method)(user_input)
                         ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/homewhiz/config_flow.py", line 182, in async_step_provide_cloud_credentials
    return await self.async_step_select_cloud_device()
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/homewhiz/config_flow.py", line 228, in async_step_select_cloud_device
    self._cloud_appliances = await fetch_appliance_infos(
                             ^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/homewhiz/api.py", line 287, in fetch_appliance_infos
    resp = await make_api_get_request(
           ^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/config/custom_components/homewhiz/api.py", line 214, in make_api_get_request
    if not contents["success"]:
           ~~~~~~~~^^^^^^^^^^^
KeyError: 'success'

Andy hints?
Thanks,
Ede

Hi Ede,
thanks for reporting this issue! 👍
Could you please test if this issue still occurs with the latest beta release? Thanks!

Hi @TechHummel ,
unfortunately it don't seem to work.
I am getting an error message that not all needed fields are provided?
Regards,
Ede

There haven't been any changes recently, however the last official release was even older 😄 So I think you installed it correctly.
Can you tell me your device digital ID? What kind of device are you trying to add?

Hi, my model is<PHONE_NUMBER> its a dryer.
Can i send that id private?


Add support for --suffix option

Optional suffix can be used to install multiple versions of the same
tool side-by-side - e.g.
$ pipx install --suffix=_3.1 foo==3.1.2 --> foo_3.1
$ pipx install --suffix=_2.2 foo==2.2.0 --> foo_2.2

Great work, thanks. @uranusjr @itsayellow this looks good to merge to me. Any thoughts you'd like to share before I do so?

Thank you for the merge :)


optional use of system protobuffer

IMPORTANT: Please don´t commit to master, we will test your changes first at the beta branch!
1. Tell us something about your changes.
if you want to use system protoc then add cmake option -DUSE_SYSTEM_PROTO_LIBS=ON
default is OFF
This can be useful for building for LibreElec (see #659)
2. If this changes affect the .conf file. Please provide the changed section
no
3. Reference a issue (optional)
#659
Note: For further discussions use our forum: forum.hyperion-project.org

thank you very much. works for me. /cc @lrusak FYI you'll need this next time you update hyperion in LE.


Doesn't support CUDA version 12

After I run pip install ., it throws an error from nvcc
      [ 16%] No update step for 'eigen'
      [ 22%] No patch step for 'eigen'
      [ 27%] No configure step for 'eigen'
      [ 33%] No build step for 'eigen'
      [ 38%] No install step for 'eigen'
      [ 44%] Completed 'eigen'
      [ 44%] Built target eigen
      [ 50%] Building CXX object CMakeFiles/test_kdtree.dir/src/kdtree.cpp.o
      [ 55%] Building CUDA object CMakeFiles/test_kdtree.dir/src/nndistance_g.cu.o
      nvcc fatal   : Unsupported gpu architecture 'compute_35'
      make[2]: *** [CMakeFiles/test_kdtree.dir/build.make:91: CMakeFiles/test_kdtree.dir/src/nndistance_g.cu.o] Error 1
      make[1]: *** [CMakeFiles/Makefile2:131: CMakeFiles/test_kdtree.dir/all] Error 2
      make: *** [Makefile:101: all] Error 2
      Building extension...
      Building extension #2...

My CUDA version is 12.4
Due to CUDA 12.4 doesn't support architecture 'compute_35' anymore

Thanks for reporting this problem which I was able to reproduce. I increased the minimum required compute capability to 50, which solved the problem on my machine. Feel free to re-open the issue if the problem persists.


Override to String Methods For Data Types

Often times when I'm debugging in Visual Studio, or in general, I'd like to see an informative string representation of the object.
I override the ToString() method in all of the library's class objects. For example, a Transfer looks as such:
[2241454] [eeebb131bafc98d0360224706eb2672d48ae0c875ea9f6b96f816e4c1c791d45] (2020-11-29 20:27:34) - 89FqVYkvtZzHqxZWTcSK8Ubo5pMyywDQc38py3egXn3CaSdb7damB84JKCys6A7wBvW9cy5yNamWaGQ68mQwp41bVKae4rf - 0.001000000000 - 0.00001245 - Confirmations: 16095

and in Visual Studio:

Here is another example, for the Connection object.

Here is another example, for the BlockHeader
[2000] (4/19/2014 9:21:11 PM) b05e197bc2af06e6597d88a251552a1773de04f4dc3d6fadce9120cc1a347e38 - Size: 386, Weight: 386, TxCount: 0, Reward: 17.558663608751

and in Visual Studio:

@rbrunner7
If you can have a look at the calculations to convert from Monero to Piconero and vice-versa, that would be great. Maybe I will add a suite of tests for this. Utilities/PriceUtilities.cs. I verified PiconeroToMonero by eye-balling the Reward  (Reward: 17.558663608751) in BlockHeader (above), for block 2000, comparing it to the on-chain value (on xmrchain.net) and it checks out.

The conversions look ok to me.
And those ToString methods are certainly very useful and valuable. I do that as well in my own code and found out that good ToString methods can help enormously. It's also making good use of a feature of C# and its tooling that to this extent is pretty unique among programming tools as far as I know.


GH-3539 use a cleaner and shutdown hook instead of finalize()

GitHub issue resolved: #3539
Briefly describe the changes proposed in this PR:
Use a Cleaner and shutdown hook to make sure unused
resources are removed cleanly and efficiently without spooky behaviour.

PR Author Checklist (see the contributor guidelines for more details):

[x] my pull request is self-contained
[ ] I've added tests for the changes I made
[x] I've applied code formatting (you can use mvn process-resources to format from the command line)
[x] I've squashed my commits where necessary
[x] every commit message starts with the issue number (GH-xxxx) followed by a meaningful description of the change

@kenwenzel please have a look at this and verify that I got the intention right.

This implementation is buggy and does not work as intended.

Marked this as stale to signal that the PR hasn't been active for a while and that we should consider closing it.


Package compilation fails because Bosh can't 'ping' the compilation VMs

What happened:
When deploying to OpenStack through BOSH (V 266.4.0) the deployment fails at the compilation stage because it times out trying to ping (protocol 3) the compilation VMs to confirm that they have been created.
The VMs are actually created successfully on OpenStack and can be accessed through SSH, but the Bosh director thinks they failed since it can't reach them.
All our other deployments (using Ubuntu Trusty) compile and work just fine, it only happens with the Xenial stemcells we used for CFCR. We have tried with Xenial stemcells versions 97.12, 97 and 87.3, and they all have the same problem.
How to reproduce it (as minimally and precisely as possible):
Deploy on OpenStack with BOSH V 266.4.0
Anything else we need to know?:

We are using the latest kubo release and kubo-deployment versions (0.20.0)
We have reduced everything to one instance/zone.
Ping in this case should refer to the directors NATS messaging system and not the ICMP network ping.
The problem we described is from us looking at the task debug logs, but the actual returned error from the deployment is misleading:
Error: Attempt to delete object did not result in a single row modification (Rows Deleted: 0, SQL: DELETE FROM "vms" WHERE ("id" = xxx))

Hi @bloeys
We asked for help in cloudfoundry#bosh slack.

Hi @bloeys
There was a similar issue. You can join https://cloudfoundry.slack.com/archives/C02HPPYQ2/p1535552784000100 to follow up or you can create an issue in bosh directly https://github.com/cloudfoundry/bosh/issues/new/choose

Sorry. I have never ssh'ed to compilation VMs before.
You can try to use https://github.com/cloudfoundry/os-conf-release and add the user. But I don't know if it is even possible.

Additionally, you can try to use the following repo to use pre-compiled releases https://github.com/starkandwayne/cfcr-compiled-deployment

Thank you very much, this seems helpful.
You can't SSH into compilation VMs from bosh, at least not by default, so what I do is add a public IP to one of the VMs and then SSH manually, not through bosh.
Now I was doing additional testing, and it seems this is a general bosh issue and not specific to CFCR, as in any deployment if I try to compile something with Xenial it fails, so it is indeed more fit to put an issue on the bosh Github.
But one question I have is, does CFCR work with all features if I switch to Trusty stemcells?

It should work. We haven't done any changes specific for xenial stemcell.

I have successfully deployed CFCR by switching to trusty. I am closing this issue as this appears to be a more general bosh issue and not specific to CFCR. Thanks for the help here.
If you are following this, the issue will be disucssed in the referenced post.


CSHARP-2439: Update how AssemblyInfo properties are specified

Evergreen patch build:
https://evergreen.mongodb.com/version/5c0063dec9ec445df83b1293

Removing myself from Reviewers.

Pushed new commit.
New Evergreen patch build:
https://evergreen.mongodb.com/version/5c07df6ac9ec44695b389d66

Rebased and merged.


chore: build portable binary

Codecov Report
Base: 79.07% // Head: 79.34% // Increases project coverage by +0.26% :tada:

Coverage data is based on head (a26a04b) compared to base (c32bce6).
Patch has no changes to coverable lines.

Additional details and impacted files
@@             Coverage Diff             @@
##           develop     #126      +/-   ##
===========================================
+ Coverage    79.07%   79.34%   +0.26%
===========================================
  Files           23       23
  Lines         4880     4947      +67
===========================================
+ Hits          3859     3925      +66
- Misses        1021     1022       +1

Flag
Coverage Δ

unittests
79.34% <ø> (+0.26%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

src/protocols/status.rs
84.09% <0.00%> (ø)

...s/light_client/components/send_last_state_proof.rs
93.14% <0.00%> (+0.11%)
:arrow_up:

src/protocols/light_client/peers.rs
85.50% <0.00%> (+0.16%)
:arrow_up:

src/protocols/light_client/mod.rs
81.87% <0.00%> (+0.99%)
:arrow_up:

src/protocols/light_client/sampling.rs
100.00% <0.00%> (+2.22%)
:arrow_up:

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.


Fix flightgear, simgear & speed_dreams

Motivation for this change
All 3 of these packages are broken in 18.09 due to incompatibility with the version of openscenegraph in 18.09. The idea is to reintroduce the version of openscenegraph shipped with 18.03 so these applications can work again.
Things done
As well as adding a second version of openscenegraph I have version bumped both flightgear & simgear, and fixed a separate bug in speed_dreams.
Since all of these packages are currently broken in 18.09 my intention is that these changes are backported to 18.09.

[x] Tested using sandboxing (nix.useSandbox on NixOS, or option sandbox in nix.conf on non-NixOS)
Built on platform(s)

[x] NixOS
[ ] macOS
[ ] other Linux distributions

[ ] Tested via one or more NixOS test(s) if existing and applicable for the change (look inside nixos/tests)
[ ] Tested compilation of all pkgs that depend on this change using nix-shell -p nox --run "nox-review wip"
[x] Tested execution of all binary files (usually in ./result/bin/)
[ ] Determined the impact on package closure size (by running nix path-info -S before and after)
[x] Fits CONTRIBUTING.md.

Success on aarch64-linux (full log)
Attempted: openscenegraph
Partial log (click to expand)
these paths will be fetched (7.65 MiB download, 46.81 MiB unpacked):
  /nix/store/pjnwnddrds6fryfxfq36cnm9w00c9acf-openscenegraph-3.6.2
copying path '/nix/store/pjnwnddrds6fryfxfq36cnm9w00c9acf-openscenegraph-3.6.2' from 'https://cache.nixos.org'...
/nix/store/pjnwnddrds6fryfxfq36cnm9w00c9acf-openscenegraph-3.6.2

Success on x86_64-linux (full log)
Attempted: openscenegraph
Partial log (click to expand)
  /nix/store/mfbspg0y079dl8dcrk5rsh3mh10wjwmp-mesa-noglu-18.2.2
  /nix/store/n84xfswbxip8ca0yqyssai1c106dzwc8-openscenegraph-3.6.2
copying path '/nix/store/mfbspg0y079dl8dcrk5rsh3mh10wjwmp-mesa-noglu-18.2.2' from 'https://cache.nixos.org'...
copying path '/nix/store/a87pywhz6p67b7dy3mb4i0vq1m0nwsd9-mesa-noglu-18.2.2-drivers' from 'https://cache.nixos.org'...
copying path '/nix/store/3jkazlcyhqss2kyy385ajhy6jcwzxdpk-mesa-noglu-18.2.2-dev' from 'https://cache.nixos.org'...
copying path '/nix/store/d6dx6fylzg4z1yli7f57392q0bzklzz2-libGL-1.0.0-dev' from 'https://cache.nixos.org'...
copying path '/nix/store/1ka1hdfk5bahykd2ccwlhxrnai3253rx-glu-9.0.0-dev' from 'https://cache.nixos.org'...
copying path '/nix/store/61hw8d7zg4c95dpnilszsfsi146y4mds-libGLU-combined' from 'https://cache.nixos.org'...
copying path '/nix/store/n84xfswbxip8ca0yqyssai1c106dzwc8-openscenegraph-3.6.2' from 'https://cache.nixos.org'...
/nix/store/n84xfswbxip8ca0yqyssai1c106dzwc8-openscenegraph-3.6.2

How exactly did GitHub manage not to put me into mention-notifications…

Thank you kindly!


Scroll view improvement

[x] @Jddesigner0003 We need to improve scroll view does not look correct

[x] Have to maintain the consistency across the app Bitcoin and Asset both

[x] Adding two pending asset  icons

@Deveshshankar   Can you please check and share with me your feedback?

Waiting counter party and Waiting confirmation: this two point small info contant was pending.
for scroll view i was thinking main balance and name we can show center and right side image

Figma: https://www.figma.com/design/e0RxSAiRCMt5Z48LJVNEXr/Tribe-RGB?node-id=4466-12758&t=kMy4i5wXA7A8e8xA-1

@akshay8551 you can proceed


Threebot stop gives timeout and other errors

I have the latest code on js-sdk repo .
When i try threebot stop , i get this error :
(js-sdk-vpmH-Z_5-py3.6) root@sdk:~/js-sdk# threebot stop
Traceback (most recent call last):
  File "/root/.cache/pypoetry/virtualenvs/js-sdk-vpmH-Z_5-py3.6/bin/threebot", line 11, in <module>
    load_entry_point('js-sdk', 'console_scripts', 'threebot')()
  File "/root/.cache/pypoetry/virtualenvs/js-sdk-vpmH-Z_5-py3.6/lib/python3.6/site-packages/click/core.py", line 829, in __call__
    return self.main(*args, **kwargs)
  File "/root/.cache/pypoetry/virtualenvs/js-sdk-vpmH-Z_5-py3.6/lib/python3.6/site-packages/click/core.py", line 782, in main
    rv = self.invoke(ctx)
  File "/root/.cache/pypoetry/virtualenvs/js-sdk-vpmH-Z_5-py3.6/lib/python3.6/site-packages/click/core.py", line 1259, in invoke
    return _process_result(sub_ctx.command.invoke(sub_ctx))
  File "/root/.cache/pypoetry/virtualenvs/js-sdk-vpmH-Z_5-py3.6/lib/python3.6/site-packages/click/core.py", line 1066, in invoke
    return ctx.invoke(self.callback, **ctx.params)
  File "/root/.cache/pypoetry/virtualenvs/js-sdk-vpmH-Z_5-py3.6/lib/python3.6/site-packages/click/core.py", line 610, in invoke
    return callback(*args, **kwargs)
  File "/root/js-sdk/jumpscale/entry_points/threebot.py", line 89, in stop
    threebot_cmd.stop()
  File "/root/.cache/pypoetry/virtualenvs/js-sdk-vpmH-Z_5-py3.6/src/js-ng/jumpscale/tools/startupcmd/startupcmd.py", line 204, in stop
    self.wait_for_stop(die=die, timeout=timeout)
  File "/root/.cache/pypoetry/virtualenvs/js-sdk-vpmH-Z_5-py3.6/src/js-ng/jumpscale/tools/startupcmd/startupcmd.py", line 253, in wait_for_stop
    self._wait(False, die, timeout)
  File "/root/.cache/pypoetry/virtualenvs/js-sdk-vpmH-Z_5-py3.6/src/js-ng/jumpscale/tools/startupcmd/startupcmd.py", line 241, in _wait
    raise j.exceptions.Timeout(f"Wait operation exceeded timeout: {timeout}")
jumpscale.core.exceptions.exceptions.Timeout: Wait operation exceeded timeout: 60

(js-sdk-vpmH-Z_5-py3.6) root@sdk:~/js-sdk# git log -2
commit 863e736bbe480f6d15a327634e7925011a1816a8 (HEAD -> development, origin/development, origin/HEAD)
Merge: e42eaba 5870b31
Author: Jo De Boeck<EMAIL_ADDRESS>Date:   Tue Jun 30 11:56:25 2020 +0200

    Merge pull request #139 from threefoldtech/development_nginx

    Improvements in starting/stopping nginx for threebot

commit 5870b31fd8b357b21e317eb0e9cdd502b50daf4d
Author: Jo De Boeck<EMAIL_ADDRESS>Date:   Tue Jun 30 11:54:51 2020 +0200

    Improvements in starting/stopping nginx for threebot

    Signed-off-by: Jo De Boeck<EMAIL_ADDRESS>

@siddiquagig please attach result of
ps -eaf | grep nginx
after reproducing the error above
Also what are the "other errors" you are referring to in the title?

Ok just the timeout error then
Result of ps -eaf | grep nginx

Issue can't be reproduced stop command works as expected, can you please pull latest and try again @siddiquagig ?

Works now


the newest dep version cant't get golang package

the newest dep version cant't get golang package
What is the difference between the two versions?
What version of dep are you using (dep version)?
dep 0.3.0
dep 0.3.1/0.3.2
What dep command did you run?
dep ensure
Gopkg.toml
[[constraint]]
name = "golang.org/x/text"
branch = "master"
source = "github.com/golang/text"
What did you expect to see?
i want get the text package from github.com
when i used dep 0.3.0 that's ok.
What did you see instead?
when i use dep 0.3.1/0.3.2：
error:
✗ unable to deduce repository and source type for "golang.org/x/text": unable to read metadata: unable to
fetch raw metadata: failed HTTP request to URL "http://golang.org/x/text?go-get=1": Get http://golang.org/x
/text?go-get=1: dial tcp <IP_ADDRESS>:80: connectex: A connection attempt failed because the connected party
did not properly respond after a period of time, or established connection failed because connected host ha
s failed to respond.

@godcong hi, this looks like a network error. Seems to work as expected for me. Can you try again?

Are you behind the GFW? I remember people having issues with golang.org behind the GFW.

the same to you !

http://golang.org/x/text?go-get=1
Nothing to see here; move along.

yes,GFW problem!
add http_porxy = your GFW proxy, .

[[constraint]]     name = "golang.org/x/text"     branch = "master"     source = "github.com/golang/text"
But there is another problem.
why not directly download from [github.com/golang/text]
send ( http://golang.org/x/text?go-get=1 ) to get meta data ,should  on the back!

I'm behind the GFW and met same problem.
However, in my understanding, source is a solution for this: when dep cannot access golang.org, use github instead.

this issue is really annoying to me, could it be made higher priority?

to do :
export http_porxy = your GFW proxy

assuming that it's spelled correctly (http_proxy, or HTTP_PROXY), these should be picked up and used automatically by dep, including by the bit where we look for go-get metadata. that should work on tip, as well as pretty much every released version of dep.

Confirmed. On 0.3.0 I can use source as a solution when I'm having issues with my corporate proxy. On 0.3.2 this no longer works.

use ignored label:
 # required = ["github.com/user/thing/cmd/thing"]
 ignored = [
    "git.apache.org/thrift.git/lib/go/thrift",
    "golang.org/x/sys/unix",
 ]

Me too, source does't work in a92678159ec741a4d28f4b2ea4727de1156ab823.
i use:
[[constraint]]
  branch = "master"
  name = "golang.org/x/crypto"
  source = "https://github.com/golang/crypto.git"

run dep ensure -update golang.org/x/crypto,  get:
  ✗ unable to deduce repository and source type for "golang.org/x/net": unable to read metadata: unable to fetch raw metadata: failed HTTP request to URL "http://golang.org/x/net?go-get=1": Get http://golang.org/x/net?go-get=1: dial tcp <IP_ADDRESS>:80: i/o timeout

Since you guys can reproduce it, can you git bisect and find out the exact commit where this broke? That would help in finding out what changed that's could be causing this.

I met the same issue with 0.3.2

I'm not sure why this issue was closed. I'm behind a proxy that allows "github.com" access but not "golang.org" access. Using the source option is supposed to solve this issue but it is not working.

Ok that is helpful information. Thank you.
On Mar 1, 2018 11:25 AM, "sam boyer"<EMAIL_ADDRESS>wrote:
The issue is closed because the source option is not supposed to help you
work around your local machine's network issues. It's a global setting that
potentially pollutes the ecosystem with conflicts when it's used in that
way.
The expectation is that If your proxy doesn't allow access to golang.org,
then you need a different proxy.
The more proper solution for this is registries. Progress towards that is
also happening.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/golang/dep/issues/1322#issuecomment-369647091, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AAAtnbvOGCegzhCVwiM-xXNpFNL2qcx2ks5taCD4gaJpZM4QIu1K
.

if you have a proxy client
put you proxy on in you cmd:
run set http_proxy=ip:port before use dep ensure.
example(windows):
set http_proxy=<IP_ADDRESS>:1235
set https_proxy=<IP_ADDRESS>:1235
it can visit golang.org to fix this issus

a patch try to fix this issue:
https://github.com/bensonfx/dep/tree/feature-add-golang-package-alt-url
may somebody have a better way
TODO list

add mirror set function, i.e.

`dep mirror add golang.org/x/${name}:github.com/golang/${name} .and ${name} is a placeholder.
dep mirror remove  golang.org/x/${name}
dep mirror list

use alternateive url of google.org package at SourceManager.DeduceProjectRoot

will it be special env variable like DEP_HTTP_PROXY in future?
now I did below to solve this problem
alias dep='export http_proxy=http://me:1087;https_proxy=http://me:1087;dep'
but this is not gorgeous.

@godcong  how to remove two check function(ValidateParams ValidateProjectRoots) and rebuild dep.

@waliguder fix the function other error will happened.
the best is to set the proxy

I had this issue when using dep inside docker containers on windows. Restarting docker fixed the issue.


Fix loop.

Scope & Purpose
This fixes the following problem:
If a coordinator wants to roll back a create database operation and the database has - for whatever reason - already been removed from the agency, then the corresponding retry loop runs endlessly, always running into 412 precondition failed. This endless loop is broken by the changes in this PR.
Forward port of https://github.com/arangodb/arangodb/pull/13166
Backport of https://github.com/arangodb/arangodb/pull/13174
TODO: still needs an automated test.

[x] :hankey: Bugfix (requires CHANGELOG entry)
[ ] :pizza: New feature (requires CHANGELOG entry, feature documentation and release notes)
[ ] :fire: Performance improvement
[ ] :hammer: Refactoring/simplification
[x] :book: CHANGELOG entry made

Backports:

[x] Backports required for: 3.6 (https://github.com/arangodb/arangodb/pull/13166)

Testing & Verification

[x] This change is a trivial rework / code cleanup without any test coverage.
[ ] The behavior in this PR was manually tested
[ ] This change is already covered by existing tests, such as (please describe tests).
[ ] This PR adds tests that were used to verify all changes:

[ ] Added new C++ Unit tests
[ ] Added new integration tests (e.g. in shell_server / shell_server_aql)
[ ] Added new resilience tests (only if the feature is impacted by failovers)

[ ] There are tests in an external testing repository:
[ ] I ensured this code runs with ASan / TSan or other static verification tools

Link to Jenkins PR run:
http://<IP_ADDRESS>:8080/view/PR/job/arangodb-matrix-pr/13107/

http://jenkins.arangodb.biz:8080/view/PR/job/arangodb-matrix-pr/13253/

Tests blue except unrelated known unreliable test.

We will have a tests in a second PR

@neunhoef please review merge

http://jenkins.arangodb.biz:8080/view/PR/job/arangodb-matrix-pr/13433/

Tests blue.


Allow to switch between ramp and category view

CR: @xavijam 🙏

I feel I can baptize this component as the most complicated component of the builder. Well done man!
🚢 🇮🇹


Implement updateOwnNFT

fix #64

I'm worried that the two PRs together will exceed the contract size since it's really just barely there.


Enum values are not being randomized

example:
    private enum TestEnum {
        ONE, TWO, THREE, FOUR, FIVE;
    }

    private static void testEnum() {
        EnhancedRandom random = EnhancedRandomBuilder.aNewEnhancedRandomBuilder().build();

        for( int x=0; x<10; x++ ) {
            System.out.println(random.nextObject(TestEnum.class));
        }
    }

FOUR
FOUR
FOUR
FOUR
FOUR
FOUR
FOUR
FOUR
FOUR
FOUR

You can work around this by explicitly setting an EnumRandomizer for the enum
EnhancedRandom random = EnhancedRandomBuilder.aNewEnhancedRandomBuilder()
                .randomize(TestEnum.class, EnumRandomizer.aNewEnumRandomizer(TestEnum.class))
                .build();

From looking around the code it seems that the same seed is being reused for the EnumRandomizer each time, which would be fine if it was cached for each enum class.

this is with version 'io.github.benas:random-beans:3.2.0'

Hi,
Thank you for pointing out this issue, I was able to reproduce it.
I'll keep you informed once I publish the fix.
Kind regards
Mahmoud

Hi @pmaciocia
The fix has been published in version 3.3.0-SNAPSHOT.
Could you please give it a try and keep me informed if it is ok for you?
Many thanks upfront.
Kind regards
Mahmoud

Hi @benas,
Just tested and looks like it's working now.
Thanks for making this project - its been very useful to me.
Peter

Hi Peter,
Glad it helped! Thank you for reporting this issue.
Kind regards
Mahmoud


week view: each event in different row

In week view every event - even single day events - are pushed in seperate rows. Is there an easy way to get around this? In the example below there are a number of single-day events. I would like to display these at the top of the day.

Thanks

i am facing issue for daywise. events are not showing on relevant time. Please help me out asap.
Thanks

Please make a new issue for your problem as its not related to this issue.


Refactor portal header

📥 Proposed changes
Greatly simplify the structure of the Header component. It seems like the Card component from Jøkul was used as a basis, and a lot of the props/functionality from that was still implemented.
I realize I've also made it a bit less generalized, but I don't think we need to implement patterns for headers we don't really have a pattern for yet.
☑ Submission checklist

[x] I have read the CONTRIBUTING doc
[x] yarn build works locally with my changes
[x] I have added tests that prove my fix is effective or that my feature works
[x] I have added necessary documentation (if appropriate)

💬 Further comments
This is not directly related to this PR, but I'm not sure that i like this architecture:

I presume it is meant to approximate the structure of the packages in Jøkul, but is this the right place to do that? If we assume that our code will be "stolen" by the teams, we should write the portal and its architecture in the way we would like the teams to write their projects, not as a library.
As it stands now, we get a lot of folders, winding paths, and not-so-pretty imports like this:

The packages in Jøkul (which you will automatically have available if you edit the portal) already illustrate the architecture of the library, so shouldn't we rather illustrate the architecture we proposed to the teams earlier?:

Edit: This could also be a great teaching exercise for a Jøkul bootcamp/hackathon: refactoring a component from a project (the portal?) to a Jøkul library style- and React package.

Skjønner ikke helt hva den further comments peker til.
Vi har ikke den strukturen i portalen i dag? Anyways, ref Dan Abramov https://mobile.twitter.com/dan_abramov/status/1027248875072114689 evt http://react-file-structure.surge.sh/
Men ja, er enig med det at samlokasjon på intensjon er bedre enn å samle basert på funksjon eller teknologi.

Vi har ikke den strukturen i portalen i dag?

Denne PR-en er ikke mot master, men mot branchen der @eduardodir og @joms har jobbet litt med refaktorering og redesign av portalen. Tok det som en PR for å ha et sted å diskutere arkitekturen i forbindelse med en relevant kodeendring.


Why is MetalPetal written in Objective C ?

Hi thank you for developing this amazing framework, making our lives way more easy.
As I start moving to Metal because of OpenGLES deprecation by Apple. I looked into GPUImage3 and MetalPetal. But I realized that MetalPetal is written in ObjectiveC, I wonder if there is a specific reason why is that, since Swift is meant to be the future of Apple software development.
I cant help to wonder, what may happen if Apple slowly switch to Swift ONLY apps in years to come. Would it be wise to write such a complex (and big) framework such as MetalPetal in ObjectiveC right now ?
are there any plans for a Swift rewrite ?
This is just a general doubt, because I wanna be cautious when choosing the right technology (framework/lib) before investing development time in my own long term projects.
Anyways, great job you are doing there. As a second adjacent question.
Are you guys being funded by a larger corporation, or are you powered by Donations, If so it would be great to know how we can contribute.
Cheers

Thank you for your well versed response.
Appreciated.


Version 1.0.0 Changes

1.0.0 was recently released on NPM but the changes do not appear to be here.
Just wondering if there were any breaking changes?
Thanks

Nothing breaking, but two things to watch out: the removal of Connection: close if running node > 0.11.4, which should make multiple requests to a server run much faster, and secondly, a few changes to the way post bodies can be set through parameters.
I hope to update the documentation this week.


Enhance Prometheus alerting rules

Some examples alert rules:

https://github.com/infinityworks/prometheus-example-queries
https://stefanprodan.com/2016/a-monitoring-solution-for-docker-hosts-containers-and-containerized-services/

Create dedicated rules to test the space left on each device.

Let's run the rules to do a REX


Update work-with-multi-factor-authentication.md

Change spelling mistake "hidding" to "hiding"

@docscorp-jimlim : Thanks for your contribution! The author(s) have been notified to review your proposed change.


Please use pre-release option in GitHub releases

Please mark prerelease as prerelease. This helps downstream in a build automation etc. when using GitHub APIs. For example currently v6.1.0-preview.2 is showing up in https://api.github.com/repos/powershell/powershell/releases with "prerelease": false.

Was in #6815

@TravisEz13 / @iSazonov This doesn't seem to be an issue anymore. Can this issue be closed?


Upload File from JavaScript

I have a PDF file in server and when i'll edit the form i don't know how upload that file in input. Someone can help me, please?

There are plenty of examples in the documentations.


added fix for appbar

I created a small fix for the appbar on a mobile device.
If you have an appbar with a lot of entries and/or subentries it is not usable on mobile devices, because there is no possibility to scroll.
I currently have this issue here
The fix I made is simple:
I created a class for the header that makes it scrollable and a class that hides the overflow of the bottom. Both class will be added on open and removed on close of the appbar.
I don't know if their is a utility class for overflow-hidden that could be used, but I didn't find one.
What do you think about this fix?

The logic is wrong. The scroll should be a menu, not the entire appbar.

added in 4.3.3

Thank you. Looks perfect.


limiting exponential pto delay to a constant

resolves #3594

@cliffc-spirent Friendly reminder that we still need the CLA.

@marten-seemann the current status is that the Chief Architect has met with the General Counsel and there are some more internal forms to fill out before the CEO gets to make final approval. I wish I was kidding.

CLA was submitted Friday, still waiting to hear back from Google.

@lucas-clemente can you please check the CLA?

Forced a rescan, but nothing changed.

It looks like the CLA finally made its way through.


AbstractUserSocialAuth and user field related_name

I am getting a problem with the user field of the AbstractUserSocialAuth: if I try to create an alternative UserSocialAuth inheriting AbstractUserSocialAuth the related_name of the user fields will clash because both will inherit the related_name from AbstractUserSocialAuth:
accounts.CustomUserSocialAuth.user: (fields.E304) Reverse accessor for 'CustomUserSocialAuth.user' clashes with reverse accessor for 'UserSocialAuth.user'.
        HINT: Add or change a related_name argument to the definition for 'CustomUserSocialAuth.user' or 'UserSocialAuth.user'.
accounts.CustomUserSocialAuth.user: (fields.E305) Reverse query name for 'CustomUserSocialAuth.user' clashes with reverse query name for 'UserSocialAuth.user'.
        HINT: Add or change a related_name argument to the definition for 'CustomUserSocialAuth.user' or 'UserSocialAuth.user'.
default.UserSocialAuth.user: (fields.E304) Reverse accessor for 'UserSocialAuth.user' clashes with reverse accessor for 'CustomUserSocialAuth.user'.
        HINT: Add or change a related_name argument to the definition for 'UserSocialAuth.user' or 'CustomUserSocialAuth.user'.
default.UserSocialAuth.user: (fields.E305) Reverse query name for 'UserSocialAuth.user' clashes with reverse query name for 'CustomUserSocialAuth.user'.
        HINT: Add or change a related_name argument to the definition for 'UserSocialAuth.user' or 'CustomUserSocialAuth.user'.

What is the expected way to override this class? As per Django's documentation the related_name should not be hardcoded in an abstract class, maybe I'm missing something, can you help?

Another question regarding https://github.com/omab/python-social-auth/blob/master/social/apps/django_app/default/models.py#L50
Why is the child class hardcoded in the parent abstract class?
Shouldn't this be:
except cls.DoesNotExist:

Like it is in the mixin which is the base for AbstractUserSocialAuth?

I've created https://github.com/python-social-auth/social-app-django/issues/7 to track the needed work to fix this (second issue, cls.DoesNotExists is already fixed).

The override should also override the user field and the corresponding related name to avoid the clash, I've removed the usage of .social_auth related field from the examples and the lib since it should't depend on such property due to overridable nature of it, Storage.user.get_social_auth_for_user(...) can be used for such means too, where Storage is the custom storage solution that overrides the built-in one.

The override should also override the user field and the corresponding related name to avoid the clash, I've removed the usage of .social_auth related field from the examples and the lib since it should't depend on such property due to overridable nature of it, Storage.user.get_social_auth_for_user(...) can be used for such means too, where Storage is the custom storage solution that overrides the built-in one.

Is there an alternative approach that is a bit more production-friendly?


Wrongly placed DistillOptions

It has been placed into tools package.

Oh we used DistillerOptions in reporters....

Then I think we should put the reporters in base as well. They are Aya-specific.

Then I think we should put the reporters in base as well. They are Aya-specific.

They are quite general and useful for compilers except for DistillerOptions.

I agree. Maybe we should make DistillerOptions generic too -- make the Key generic, and make AyaDistillerOptions. But it's up to you.

I agree. Maybe we should make DistillerOptions generic too -- make the Key generic, and make AyaDistillerOptions. But it's up to you.

Exactly. You again read my mind! 😉

Fixed in #794