Add validation for hiding all the profiles

Summary of the Pull Request
Prevent the Terminal from toasting it's marshmallows when the user hides all their profiles. In that case, we'll just revert to the defaults.
PR Checklist

[x] Closes #2794
[x] I work here
[x] Tests added/passed
[n/a] Requires documentation to be updated

Validation Steps Performed

ran tests
validated manually

@carlos-zamora mind stepping in and having a look here? ty


ci: add zot as a candidate OCI registry

Signed-off-by: Ramkumar Chinchani<EMAIL_ADDRESS>

https://github.com/rchincha/notation/pull/26
^ here is a successful run with this PR

Codecov Report

Merging #479 (249b3b1) into main (7a947d5) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main     #479   +/-   ##
=======================================
  Coverage   32.14%   32.14%
=======================================
  Files          25       25
  Lines        1341     1341
=======================================
  Hits          431      431
  Misses        898      898
  Partials       12       12

:mega: We’re building smart automated test selection to slash your CI/CD build times. Learn more

Instead of having this kind of "ecosystem" thing, how about using zot as the test registry for notation E2E testing? /cc @JeyJeyGao @priteshbandi
@rchincha I remember that zot can serve traffic directly from an OCI layout. Does zot support writing to an OCI layout?

Instead of having this kind of "ecosystem" thing, how about using zot as the test registry for notation E2E testing? /cc @JeyJeyGao @priteshbandi
@rchincha I remember that zot can serve traffic directly from an OCI layout. Does zot support writing to an OCI layout?

Yes, that is exactly what it is doing when you push signatures to it. Pls. feel free to verify.
Once you give an OCI layout to zot, it takes full control of it (modulo original file/dir perms, etc)

@rchincha Hi Ramkumar. Thanks for your contribution. The Notation E2E testing framework needs to generate user configurations dynamically, so creating user config and isolation shoud be done in the E2E testing framework. We use Zot registry in the script which is an open PR now. Please have a look if you want. I appreciate your suggestion.

@rchincha The Notation E2E testing framework has been merged with Zot as the default registry. Also adopted your suggestion to support multi-registry! Related code
The function of this PR has been included in the E2E framework, so the PR can be closed. I appreciate your work. If you have any suggestion about our project, please let us know. Thanks!

@rchincha The Notation E2E testing framework has been merged with Zot as the default registry. Also adopted your suggestion to support multi-registry! Related code The function of this PR has been included in the E2E framework, so the PR can be closed. I appreciate your work. If you have any suggestion about our project, please let us know. Thanks!

Closing this PR as per suggestion.


reflect: ArrayOf allows negative length

This program should probably panic instead of printing [-100]uint8: https://play.golang.org/p/gnjsjBoKNvQ
/cc @griesemer @ianlancetaylor

I agree that this should panic.

I agree that this should panic.

I'll take a stab if there's no objection!

I'll take a stab if there's no objection!

@tpaschalis No objection. I think this should be a pretty straightforward issue to fix. Thanks.

@tpaschalis No objection. I think this should be a pretty straightforward issue to fix. Thanks.


Update README.md

Not sure if it's just a composer thing, but class registration does not work for me unless I use the FQCN.

I don't think it's a composer only thing. You have to provide the full name because that's how the autoloader looks for things.


nixosTests.installer: Fix grub1 test being unreliable

The kernel sometimes assigns /dev/sdb to the 8GiB disk. This, in turn,
means the test will fail because we're targeting the wrong disk.
machine # [    0.000000] sd 2:0:0:0: [sda] 16777216 512-byte logical blocks: (8.59 GB/8.00 GiB)
machine # [    0.000000] sd 3:0:0:0: [sdb] 1048576 512-byte logical blocks: (537 MB/512 MiB)

machine # [    0.000000] sd 2:0:0:0: [sdb] 16777216 512-byte logical blocks: (8.59 GB/8.00 GiB)
machine # [    0.000000] sd 3:0:0:0: [sda] 1048576 512-byte logical blocks: (537 MB/512 MiB)

Note how the "sd x:0:0:0:` ID is stable. That is because QEMU is
told to give specific identifiers to the disks. So using the
dev/disk/by-id/ identifiers is stable.
Things done

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

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

[x] 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 nixpkgs-review --run "nixpkgs-review wip"
[ ] 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)
[ ] Ensured that relevant documentation is up to date
[x] Fits CONTRIBUTING.md.

Tested by forcing the sda/sdb swap this way:
diff --git a/nixos/tests/installer.nix b/nixos/tests/installer.nix
index 24c55081f9a..2eee224351b 100644
--- a/nixos/tests/installer.nix
+++ b/nixos/tests/installer.nix
@@ -702,12 +702,19 @@ in {
           + " mkpart primary linux-swap 1M 1024M"
           + " mkpart primary ext2 1024M -1s",
           "udevadm settle",
+      )
+      print(machine.succeed("find /dev/disk/ '!' -type d -printf '%p → %l\n' | sort"))
+      machine.succeed(
           "mkswap ${grubDevice}-part1 -L swap",
           "swapon -L swap",
           "mkfs.ext3 -L nixos ${grubDevice}-part2",
           "mount LABEL=nixos /mnt",
           "mkdir -p /mnt/tmp",
       )
+      machine.succeed("echo success")
+      machine.succeed(
+          'if [[ "$(find ${grubDevice} -printf \'%l\')" != "../../sdb" ]]; then exit 22; else true; fi'
+      )
     '';
     grubVersion = 1;
     # /dev/sda is not stable, even when the SCSI disk number is.

 $ until (clear; tmux clear ; time env -i nix-build nixos/release-combined.nix -A nixos.tests.installer.grub1.x86_64-linux); do echo derp; done

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


shops

Possible items:

Gradient profiles.
A bomb that removes levels (a random amount of levels) from a clan of your choice.
More slots for the clan

┆Issue is synchronized with this Trello card

➤ Jedi S.K.K commented:
magic melon was here


readme doesn't indicate what the main application file is

I assume it's main.cpp, since I can see that in various sections of the file, but we never explicitly list what mbed CLI expects to find when it builds.

@iriark01 are you happy to add this to the docs?

I believe this is resolved. Please reopen if needed.


Extension Type Compile Error with Icon Tree Shaking

Issue
Compiling a Flutter app for Android, iOS, and MacOS fails with the below exception. The compile succeeds with icon tree shaking disabled (ie, either disabled with --no-tree-shake-icons or by compiling in debug mode). While icon tree shaking is from the Flutter CLI tool, the exception seems to indicate this is a Dart bug.
The extension type also must be imported manually, as the IDE won't auto-import it with the assist. (edit: this is https://github.com/dart-lang/sdk/issues/54657)

Exception logs (Click to expand)
╰─❯ flutter build apk --release

Target aot_android_asset_bundle failed: IconTreeShakerException: ConstFinder failure: Unhandled exception:
Reference to package:flutter_extension_type_repro/age_rating.dart::AgeRating is not bound to an AST node. An extension type declaration was expected
#0      Reference.asExtensionTypeDeclaration (package:kernel/canonical_name.dart:579:7)
#1      ExtensionType.extensionTypeDeclaration (package:kernel/ast.dart:11971:41)
#2      ExtensionType.visitChildren (package:kernel/ast.dart:12084:5)
#3      RecursiveVisitor.defaultNode (package:kernel/visitor.dart:1727:10)
#4      VisitorDefault.defaultDartType (package:kernel/visitor.dart:1524:39)
#5      DartTypeVisitorDefaultMixin.visitExtensionType (package:kernel/visitor.dart:804:47)
#6      ExtensionType.accept (package:kernel/ast.dart:12074:14)
#7      Field.visitChildren (package:kernel/ast.dart:2526:10)
#8      RecursiveVisitor.defaultNode (package:kernel/visitor.dart:1727:10)
#9      VisitorDefault.defaultTreeNode (package:kernel/visitor.dart:1521:39)
#10     TreeVisitorDefault.defaultMember (package:kernel/visitor.dart:626:35)
#11     MemberVisitorDefaultMixin.visitField (package:kernel/visitor.dart:413:31)
#12     Field.accept (package:kernel/ast.dart:2514:40)
#13     visitList (package:kernel/ast.dart:14886:14)
#14     Class.visitChildren (package:kernel/ast.dart:1500:5)
#15     RecursiveVisitor.defaultNode (package:kernel/visitor.dart:1727:10)
#16     VisitorDefault.defaultTreeNode (package:kernel/visitor.dart:1521:39)
#17     TreeVisitorDefaultMixin.visitClass (package:kernel/visitor.dart:556:31)
#18     _ConstVisitor.visitClass (package:kernel/const_finder.dart:132:11)
#19     Class.accept (package:kernel/ast.dart:1461:38)
#20     visitList (package:kernel/ast.dart:14886:14)
#21     Library.visitChildren (package:kernel/ast.dart:596:5)
#22     ConstFinder.findInstances (package:kernel/const_finder.dart:208:15)
#23     main (file:///C:/b/s/w/ir/cache/builder/src/flutter/tools/const_finder/bin/main.dart:103:41)
#24     _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:295:33)
#25     _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:184:12)

To disable icon tree shaking, pass --no-tree-shake-icons to the requested flutter build command

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:compileFlutterBuildRelease'.
> Process 'command 'C:\Users\Boolean\.puro\envs\stable\flutter\bin\flutter.bat'' finished with non-zero exit value 1

* 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 11s
Running Gradle task 'assembleRelease'...                           12.6s
Gradle task assembleRelease failed with exit code 1

Exception logs with verbose enabled (Click to expand)
╰─❯ flutter build apk --release -v
[ +162 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
[   +4 ms] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
[        ] Artifact Instance of 'LegacyCanvasKitRemover' is not required, skipping update.
[   +4 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[  +55 ms] Artifact Instance of 'MaterialFonts' is not required, skipping update.
[        ] Artifact Instance of 'GradleWrapper' is not required, skipping update.
[   +5 ms] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
[        ] Artifact Instance of 'LegacyCanvasKitRemover' is not required, skipping update.
[        ] Artifact Instance of 'FlutterSdk' is not required, skipping update.
[        ] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'FontSubsetArtifacts' is not required, skipping update.
[        ] Artifact Instance of 'PubDependencies' is not required, skipping update.
[ +114 ms] Skipping pub get: version match.
[ +135 ms] Generating B:\dev\GitHub\flutter_extension_type_repro\android\app\src\main\java\io\flutter\plugins\GeneratedPluginRegistrant.java
[  +48 ms] executing: C:\Users\Boolean\AppData\Local\Programs\Android Studio\jbr\bin\java -version
[ +112 ms] Exit code 0 from: C:\Users\Boolean\AppData\Local\Programs\Android Studio\jbr\bin\java -version
[        ] openjdk version "17.0.9" 2023-10-17
           OpenJDK Runtime Environment (build 17.0.9+0--11185874)
           OpenJDK 64-Bit Server VM (build 17.0.9+0--11185874, mixed mode)
[   +1 ms] executing: C:\Users\Boolean\AppData\Local\Programs\Android Studio\jbr\bin\java -version
[ +106 ms] Exit code 0 from: C:\Users\Boolean\AppData\Local\Programs\Android Studio\jbr\bin\java -version
[        ] openjdk version "17.0.9" 2023-10-17
           OpenJDK Runtime Environment (build 17.0.9+0--11185874)
           OpenJDK 64-Bit Server VM (build 17.0.9+0--11185874, mixed mode)
[  +10 ms] executing: C:\Users\Boolean\AppData\Local\Programs\Android Studio\jbr\bin\java --version
[ +112 ms] Exit code 0 from: C:\Users\Boolean\AppData\Local\Programs\Android Studio\jbr\bin\java --version
[        ] openjdk 17.0.9 2023-10-17
           OpenJDK Runtime Environment (build 17.0.9+0--11185874)
           OpenJDK 64-Bit Server VM (build 17.0.9+0--11185874, mixed mode)
[  +16 ms] Using gradle from B:\dev\GitHub\flutter_extension_type_repro\android\gradlew.bat.
[   +1 ms] Running Gradle task 'assembleRelease'...
[   +3 ms] executing: [B:\dev\GitHub\flutter_extension_type_repro\android/] B:\dev\GitHub\flutter_extension_type_repro\android\gradlew.bat --full-stacktrace --info -Pverbose=true
-Ptarget-platform=android-arm,android-arm64,android-x64 -Ptarget=lib\main.dart -Pbase-application-name=android.app.Application -Pdart-obfuscation=false -Ptrack-widget-creation=true
-Ptree-shake-icons=true assembleRelease
[ +572 ms] Initialized native services in: C:\Users\Boolean\.gradle\native
[        ] Initialized jansi services in: C:\Users\Boolean\.gradle\native
[ +111 ms] Welcome to Gradle 7.6.3!
[        ] Here are the highlights of this release:
[        ]  - Added support for Java 19.
[        ]  - Introduced `--rerun` flag for individual task rerun.
[        ]  - Improved dependency block for test suites to be strongly typed.
[        ]  - Added a pluggable system for Java toolchains provisioning.
[        ] For more details see https://docs.gradle.org/7.6.3/release-notes.html
[        ] Received JVM installation metadata from 'C:\Users\Boolean\AppData\Local\Programs\Android Studio\jbr': {JAVA_HOME=C:\Users\Boolean\AppData\Local\Programs\Android Studio\jbr,
JAVA_VERSION=17.0.9, JAVA_VENDOR=JetBrains s.r.o., RUNTIME_NAME=OpenJDK Runtime Environment, RUNTIME_VERSION=17.0.9+0--11185874, VM_NAME=OpenJDK 64-Bit Server VM,
VM_VERSION=17.0.9+0--11185874, VM_VENDOR=JetBrains s.r.o., OS_ARCH=amd64}
[ +400 ms] The client will now receive all logging from the daemon (pid: 44960). The daemon log file: C:\Users\Boolean\.gradle\daemon\7.6.3\daemon-44960.out.log
[        ] Starting 18th build in daemon [uptime: 30 mins 29.511 secs, performance: 100%]
[        ] Using 16 worker leases.
[        ] Now considering [B:\dev\GitHub\flutter_extension_type_repro\android, C:\Users\Boolean\.puro\envs\stable\flutter\packages\flutter_tools\gradle,
C:\Users\Boolean\.puro\envs\master\flutter\packages\flutter_tools\gradle, C:\Users\Boolean\.puro\envs\beta\flutter\packages\flutter_tools\gradle] as hierarchies to watch
[   +1 ms] Watching 4 directory hierarchies to track changes
[        ] Watching the file system is configured to be enabled if available
[        ] File system watching is active
[        ] Starting Build
[        ] Now considering [C:\Users\Boolean\.puro\envs\stable\flutter\packages\flutter_tools\gradle, B:\dev\GitHub\flutter_extension_type_repro\android,
C:\Users\Boolean\.puro\envs\master\flutter\packages\flutter_tools\gradle, C:\Users\Boolean\.puro\envs\beta\flutter\packages\flutter_tools\gradle] as hierarchies to watch
[        ] Watching 4 directory hierarchies to track changes
[        ] > Configure project :gradle
[        ] Evaluating project ':gradle' using build file 'C:\Users\Boolean\.puro\envs\stable\flutter\packages\flutter_tools\gradle\build.gradle.kts'.
[        ] Caching disabled for Kotlin DSL accessors for project ':gradle' because:
[        ]   Build cache is disabled
[        ] Skipping Kotlin DSL accessors for project ':gradle' as it is up-to-date.
[        ] Resolve mutations for :gradle:compileJava (Thread[Execution worker,5,main]) started.
[        ] :gradle:compileJava (Thread[Execution worker Thread 12,5,main]) started.
[        ] > Task :gradle:compileJava NO-SOURCE
[        ] Skipping task ':gradle:compileJava' as it has no source files and no previous output files.
[        ] Resolve mutations for :gradle:compileGroovy (Thread[Execution worker Thread 12,5,main]) started.
[        ] :gradle:compileGroovy (Thread[Execution worker Thread 12,5,main]) started.
[  +83 ms] > Task :gradle:compileGroovy UP-TO-DATE
[        ] Caching disabled for task ':gradle:compileGroovy' because:
[        ]   Build cache is disabled
[        ] Skipping task ':gradle:compileGroovy' as it is up-to-date.
[        ] Resolve mutations for :gradle:pluginDescriptors (Thread[Execution worker Thread 12,5,main]) started.
[        ] :gradle:pluginDescriptors (Thread[Execution worker Thread 6,5,main]) started.
[        ] > Task :gradle:pluginDescriptors UP-TO-DATE
[        ] Caching disabled for task ':gradle:pluginDescriptors' because:
[   +1 ms]   Build cache is disabled
[        ] Skipping task ':gradle:pluginDescriptors' as it is up-to-date.
[        ] Resolve mutations for :gradle:processResources (Thread[Execution worker Thread 6,5,main]) started.
[        ] :gradle:processResources (Thread[Execution worker Thread 10,5,main]) started.
[        ] > Task :gradle:processResources UP-TO-DATE
[        ] Caching disabled for task ':gradle:processResources' because:
[        ]   Build cache is disabled
[        ] Skipping task ':gradle:processResources' as it is up-to-date.
[        ] Resolve mutations for :gradle:classes (Thread[Execution worker Thread 10,5,main]) started.
[        ] :gradle:classes (Thread[Execution worker Thread 10,5,main]) started.
[        ] > Task :gradle:classes UP-TO-DATE
[        ] Skipping task ':gradle:classes' as it has no actions.
[        ] Resolve mutations for :gradle:jar (Thread[Execution worker Thread 4,5,main]) started.
[        ] :gradle:jar (Thread[Execution worker Thread 4,5,main]) started.
[        ] > Task :gradle:jar UP-TO-DATE
[        ] Caching disabled for task ':gradle:jar' because:
[        ]   Build cache is disabled
[        ] Skipping task ':gradle:jar' as it is up-to-date.
[  +85 ms] Settings evaluated using settings file 'B:\dev\GitHub\flutter_extension_type_repro\android\settings.gradle'.
[        ] Projects loaded. Root project using build file 'B:\dev\GitHub\flutter_extension_type_repro\android\build.gradle'.
[        ] Included projects: [root project 'android', project ':app']
[        ] > Configure project :app
[        ] Evaluating project ':app' using build file 'B:\dev\GitHub\flutter_extension_type_repro\android\app\build.gradle'.
[        ] Using Kotlin Gradle Plugin gradle70 variant
[        ] Parsed shrinker version: 3.3.70
[        ] > Configure project :
[        ] Evaluating root project 'android' using build file 'B:\dev\GitHub\flutter_extension_type_repro\android\build.gradle'.
[        ] All projects evaluated.
[        ] Task name matched 'assembleRelease'
[        ] Selected primary task 'assembleRelease' from project :
[ +106 ms] WARNING:We recommend using a newer Android Gradle plugin to use compileSdk = 34
[        ] This Android Gradle plugin (7.3.0) was tested up to compileSdk = 33
[        ] This warning can be suppressed by adding
[        ]     android.suppressUnsupportedCompileSdk=34
[        ] to this project's gradle.properties
[        ] The build will continue, but you are strongly encouraged to update your project to
[        ] use a newer Android Gradle Plugin that has been tested with compileSdk = 34
[        ] Tasks to be executed: [task ':app:buildKotlinToolingMetadata', task ':app:compileFlutterBuildRelease', task ':app:packLibsflutterBuildRelease', task ':app:preBuild', task
':app:preReleaseBuild', task ':app:compileReleaseAidl', task ':app:compileReleaseRenderscript', task ':app:generateReleaseBuildConfig', task ':app:checkReleaseAarMetadata', task
':app:cleanMergeReleaseAssets', task ':app:mergeReleaseShaders', task ':app:compileReleaseShaders', task ':app:generateReleaseAssets', task ':app:mergeReleaseAssets', task
':app:copyFlutterAssetsRelease', task ':app:generateReleaseResValues', task ':app:mapReleaseSourceSetPaths', task ':app:generateReleaseResources', task ':app:mergeReleaseResources', task
':app:createReleaseCompatibleScreenManifests', task ':app:extractDeepLinksRelease', task ':app:processReleaseMainManifest', task ':app:processReleaseManifest', task
':app:processReleaseManifestForPackage', task ':app:processReleaseResources', task ':app:compileReleaseKotlin', task ':app:javaPreCompileRelease', task ':app:compileReleaseJavaWithJavac',
task ':app:extractProguardFiles', task ':app:lintVitalAnalyzeRelease', task ':app:lintVitalReportRelease', task ':app:lintVitalRelease', task ':app:mergeReleaseJniLibFolders', task
':app:mergeReleaseNativeLibs', task ':app:stripReleaseDebugSymbols', task ':app:extractReleaseNativeSymbolTables', task ':app:mergeReleaseNativeDebugMetadata', task
':app:mergeReleaseArtProfile', task ':app:checkReleaseDuplicateClasses', task ':app:mergeReleaseGeneratedProguardFiles', task ':app:processReleaseJavaRes', task
':app:mergeReleaseJavaResource', task ':app:minifyReleaseWithR8', task ':app:compileReleaseArtProfile', task ':app:compressReleaseAssets', task
':app:processApplicationManifestReleaseForBundle', task ':app:bundleReleaseResources', task ':app:shrinkReleaseRes', task ':app:optimizeReleaseResources', task
':app:collectReleaseDependencies', task ':app:sdkReleaseDependencyData', task ':app:validateSigningRelease', task ':app:writeReleaseAppMetadata', task
':app:writeReleaseSigningConfigVersions', task ':app:packageRelease', task ':app:createReleaseApkListingFileRedirect', task ':app:assembleRelease']
[   +2 ms] Tasks that were excluded: []
[        ] Resolve mutations for :app:buildKotlinToolingMetadata (Thread[Execution worker Thread 13,5,main]) started.
[        ] :app:buildKotlinToolingMetadata (Thread[Execution worker Thread 8,5,main]) started.
[        ] > Task :app:buildKotlinToolingMetadata UP-TO-DATE
[        ] Caching disabled for task ':app:buildKotlinToolingMetadata' because:
[        ]   Build cache is disabled
[        ] Skipping task ':app:buildKotlinToolingMetadata' as it is up-to-date.
[        ] Resolve mutations for :app:compileFlutterBuildRelease (Thread[Execution worker Thread 8,5,main]) started.
[        ] :app:compileFlutterBuildRelease (Thread[Execution worker Thread 8,5,main]) started.
[+1991 ms] > Task :app:compileFlutterBuildRelease
[        ] Caching disabled for task ':app:compileFlutterBuildRelease' because:
[        ]   Build cache is disabled
[        ] Task ':app:compileFlutterBuildRelease' is not up-to-date because:
[        ]   Task has failed previously.
[        ] Starting process 'command 'C:\Users\Boolean\.puro\envs\stable\flutter\bin\flutter.bat''. Working directory: B:\dev\GitHub\flutter_extension_type_repro Command:
C:\Users\Boolean\.puro\envs\stable\flutter\bin\flutter.bat --verbose assemble --no-version-check --depfile
B:\dev\GitHub\flutter_extension_type_repro\build\app\intermediates\flutter\release/flutter_build.d --output
B:\dev\GitHub\flutter_extension_type_repro\build\app\intermediates\flutter\release -dTargetFile=lib\main.dart -dTargetPlatform=android -dBuildMode=release -dTrackWidgetCreation=true
-dTreeShakeIcons=true -dFlavor= -dAndroidArchs=android-arm android-arm64 android-x64 -dMinSdkVersion=19 -dIsAndroidLibrary=false android_aot_bundle_release_android-arm
android_aot_bundle_release_android-arm64 android_aot_bundle_release_android-x64
[   +1 ms] Successfully started process 'command 'C:\Users\Boolean\.puro\envs\stable\flutter\bin\flutter.bat''
[        ] [ +151 ms] Artifact Instance of 'AndroidGenSnapshotArtifacts' is not required, skipping update.
[        ] [   +4 ms] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
[        ] [        ] Artifact Instance of 'LegacyCanvasKitRemover' is not required, skipping update.
[        ] [   +4 ms] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[        ] [ +104 ms] Artifact Instance of 'MaterialFonts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'GradleWrapper' is not required, skipping update.
[        ] [   +6 ms] Artifact Instance of 'AndroidInternalBuildArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'IOSEngineArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'FlutterWebSdk' is not required, skipping update.
[        ] [        ] Artifact Instance of 'LegacyCanvasKitRemover' is not required, skipping update.
[        ] [        ] Artifact Instance of 'FlutterSdk' is not required, skipping update.
[        ] [        ] Artifact Instance of 'WindowsEngineArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'MacOSEngineArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'LinuxEngineArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'LinuxFuchsiaSDKArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'MacOSFuchsiaSDKArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'FlutterRunnerSDKArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'FlutterRunnerDebugSymbols' is not required, skipping update.
[        ] [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[   +1 ms] [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'IosUsbArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'FontSubsetArtifacts' is not required, skipping update.
[        ] [        ] Artifact Instance of 'PubDependencies' is not required, skipping update.
[        ] [  +15 ms] Initializing file store
[        ] [   +9 ms] Done initializing file store
[        ] [  +80 ms] Skipping target: native_assets
[        ] [   +1 ms] Skipping target: gen_localizations
[        ] [   +2 ms] Skipping target: gen_dart_plugin_registrant
[        ] [ +496 ms] Skipping target: kernel_snapshot
[        ] [  +16 ms] Skipping target: android_aot_release_android-arm
[        ] [  +28 ms] aot_android_asset_bundle: Starting due to {}
[        ] [  +19 ms] Skipping target: android_aot_release_android-arm64
[        ] [  +13 ms] Skipping target: android_aot_release_android-x64
[        ] [  +86 ms] shaderc command: [C:\Users\Boolean\.puro\envs\stable\flutter\bin\cache\artifacts\engine\windows-x64\impellerc.exe, --runtime-stage-gles, --iplr,
--sl=B:\dev\GitHub\flutter_extension_type_repro\build\app\intermediates\flutter\release\flutter_assets\shaders/ink_sparkle.frag,
--spirv=B:\dev\GitHub\flutter_extension_type_repro\build\app\intermediates\flutter\release\flutter_assets\shaders/ink_sparkle.frag.spirv,
--input=C:\Users\Boolean\.puro\envs\stable\flutter\packages\flutter\lib\src\material\shaders\ink_sparkle.frag, --input-type=frag,
--include=C:\Users\Boolean\.puro\envs\stable\flutter\packages\flutter\lib\src\material\shaders,
--include=C:\Users\Boolean\.puro\envs\stable\flutter\bin\cache\artifacts\engine\windows-x64\shader_lib]
[   +1 ms] [  +44 ms] Running command: C:\Users\Boolean\.puro\envs\stable\flutter\bin\cache\dart-sdk\bin\dart.exe --disable-dart-dev
C:\Users\Boolean\.puro\envs\stable\flutter\bin\cache\artifacts\engine\windows-x64\const_finder.dart.snapshot --kernel-file
B:\dev\GitHub\flutter_extension_type_repro\.dart_tool\flutter_build\7858408b882699f0afedc621b813d0e3\app.dill --class-library-uri package:flutter/src/widgets/icon_data.dart --class-name
IconData --annotation-class-name _StaticIconProvider --annotation-class-library-uri package:flutter/src/widgets/icon_data.dart
[  +72 ms] [ +489 ms] Persisting file store
[        ] [   +7 ms] Done persisting file store
[        ] [   +4 ms] Target aot_android_asset_bundle failed: IconTreeShakerException: ConstFinder failure: Unhandled exception:
[   +1 ms]            Reference to package:flutter_extension_type_repro/age_rating.dart::AgeRating is not bound to an AST node. An extension type declaration was expected
[        ]            #0      Reference.asExtensionTypeDeclaration (package:kernel/canonical_name.dart:579:7)
[        ]            #1      ExtensionType.extensionTypeDeclaration (package:kernel/ast.dart:11971:41)
[        ]            #2      ExtensionType.visitChildren (package:kernel/ast.dart:12084:5)
[        ]            #3      RecursiveVisitor.defaultNode (package:kernel/visitor.dart:1727:10)
[        ]            #4      VisitorDefault.defaultDartType (package:kernel/visitor.dart:1524:39)
[        ]            #5      DartTypeVisitorDefaultMixin.visitExtensionType (package:kernel/visitor.dart:804:47)
[        ]            #6      ExtensionType.accept (package:kernel/ast.dart:12074:14)
[        ]            #7      Field.visitChildren (package:kernel/ast.dart:2526:10)
[        ]            #8      RecursiveVisitor.defaultNode (package:kernel/visitor.dart:1727:10)
[        ]            #9      VisitorDefault.defaultTreeNode (package:kernel/visitor.dart:1521:39)
[        ]            #10     TreeVisitorDefault.defaultMember (package:kernel/visitor.dart:626:35)
[        ]            #11     MemberVisitorDefaultMixin.visitField (package:kernel/visitor.dart:413:31)
[        ]            #12     Field.accept (package:kernel/ast.dart:2514:40)
[        ]            #13     visitList (package:kernel/ast.dart:14886:14)
[        ]            #14     Class.visitChildren (package:kernel/ast.dart:1500:5)
[        ]            #15     RecursiveVisitor.defaultNode (package:kernel/visitor.dart:1727:10)
[        ]            #16     VisitorDefault.defaultTreeNode (package:kernel/visitor.dart:1521:39)
[        ]            #17     TreeVisitorDefaultMixin.visitClass (package:kernel/visitor.dart:556:31)
[        ]            #18     _ConstVisitor.visitClass (package:kernel/const_finder.dart:132:11)
[        ]            #19     Class.accept (package:kernel/ast.dart:1461:38)
[        ]            #20     visitList (package:kernel/ast.dart:14886:14)
[        ]            #21     Library.visitChildren (package:kernel/ast.dart:596:5)
[        ]            #22     ConstFinder.findInstances (package:kernel/const_finder.dart:208:15)
[        ]            #23     main (file:///C:/b/s/w/ir/cache/builder/src/flutter/tools/const_finder/bin/main.dart:103:41)
[        ]            #24     _delayEntrypointInvocation.<anonymous closure> (dart:isolate-patch/isolate_patch.dart:295:33)
[        ]            #25     _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:184:12)
[        ]            To disable icon tree shaking, pass --no-tree-shake-icons to the requested flutter build command
[        ]            #0      IconTreeShaker._findConstants (package:flutter_tools/src/build_system/targets/icon_tree_shaker.dart:298:7)
[        ]            <asynchronous suspension>
[        ]            #1      IconTreeShaker._getIconData (package:flutter_tools/src/build_system/targets/icon_tree_shaker.dart:109:45)
[        ]            <asynchronous suspension>
[        ]            #2      IconTreeShaker.subsetFont (package:flutter_tools/src/build_system/targets/icon_tree_shaker.dart:178:5)
[        ]            <asynchronous suspension>
[        ]            #3      copyAssets.<anonymous closure> (package:flutter_tools/src/build_system/targets/assets.dart:130:25)
[        ]            <asynchronous suspension>
[        ]            #4      Future.wait.<anonymous closure> (dart:async/future.dart:518:21)
[        ]            <asynchronous suspension>
[        ]            #5      copyAssets (package:flutter_tools/src/build_system/targets/assets.dart:108:3)
[        ]            <asynchronous suspension>
[        ]            #6      AndroidAssetBundle.build (package:flutter_tools/src/build_system/targets/android.dart:66:34)
[        ]            <asynchronous suspension>
[        ]            #7      _BuildInstance._invokeInternal (package:flutter_tools/src/build_system/build_system.dart:861:9)
[        ]            <asynchronous suspension>
[        ]            #8      Future.wait.<anonymous closure> (dart:async/future.dart:518:21)
[        ]            <asynchronous suspension>
[        ]            #9      _BuildInstance.invokeTarget (package:flutter_tools/src/build_system/build_system.dart:799:32)
[        ]            <asynchronous suspension>
[        ]            #10     Future.wait.<anonymous closure> (dart:async/future.dart:518:21)
[        ]            <asynchronous suspension>
[        ]            #11     _BuildInstance.invokeTarget (package:flutter_tools/src/build_system/build_system.dart:799:32)
[        ]            <asynchronous suspension>
[        ]            #12     FlutterBuildSystem.build (package:flutter_tools/src/build_system/build_system.dart:628:16)
[        ]            <asynchronous suspension>
[        ]            #13     AssembleCommand.runCommand (package:flutter_tools/src/commands/assemble.dart:318:32)
[        ]            <asynchronous suspension>
[        ]            #14     FlutterCommand.run.<anonymous closure> (package:flutter_tools/src/runner/flutter_command.dart:1389:27)
[        ]            <asynchronous suspension>
[        ]            #15     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:153:19)
[        ]            <asynchronous suspension>
[        ]            #16     CommandRunner.runCommand (package:args/command_runner.dart:212:13)
[        ]            <asynchronous suspension>
[        ]            #17     FlutterCommandRunner.runCommand.<anonymous closure> (package:flutter_tools/src/runner/flutter_command_runner.dart:355:9)
[        ]            <asynchronous suspension>
[        ]            #18     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:153:19)
[        ]            <asynchronous suspension>
[        ]            #19     FlutterCommandRunner.runCommand (package:flutter_tools/src/runner/flutter_command_runner.dart:295:5)
[        ]            <asynchronous suspension>
[        ]            #20     run.<anonymous closure>.<anonymous closure> (package:flutter_tools/runner.dart:119:9)
[        ]            <asynchronous suspension>
[        ]            #21     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:153:19)
[        ]            <asynchronous suspension>
[        ]            #22     main (package:flutter_tools/executable.dart:90:3)
[        ]            <asynchronous suspension>
[  +63 ms] [   +9 ms] "flutter assemble" took 1,459ms.
[        ] [   +2 ms]
[        ]            #0      throwToolExit (package:flutter_tools/src/base/common.dart:10:3)
[        ]            #1      AssembleCommand.runCommand (package:flutter_tools/src/commands/assemble.dart:335:7)
[        ]            <asynchronous suspension>
[        ]            #2      FlutterCommand.run.<anonymous closure> (package:flutter_tools/src/runner/flutter_command.dart:1389:27)
[        ]            <asynchronous suspension>
[        ]            #3      AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:153:19)
[        ]            <asynchronous suspension>
[        ]            #4      CommandRunner.runCommand (package:args/command_runner.dart:212:13)
[        ]            <asynchronous suspension>
[        ]            #5      FlutterCommandRunner.runCommand.<anonymous closure> (package:flutter_tools/src/runner/flutter_command_runner.dart:355:9)
[        ]            <asynchronous suspension>
[        ]            #6      AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:153:19)
[        ]            <asynchronous suspension>
[        ]            #7      FlutterCommandRunner.runCommand (package:flutter_tools/src/runner/flutter_command_runner.dart:295:5)
[        ]            <asynchronous suspension>
[        ]            #8      run.<anonymous closure>.<anonymous closure> (package:flutter_tools/runner.dart:119:9)
[        ]            <asynchronous suspension>
[        ]            #9      AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:153:19)
[        ]            <asynchronous suspension>
[        ]            #10     main (package:flutter_tools/executable.dart:90:3)
[        ]            <asynchronous suspension>
[        ] FAILURE: Build failed with an exception.
[        ] * What went wrong:
[        ] Execution failed for task ':app:compileFlutterBuildRelease'.
[        ] > Process 'command 'C:\Users\Boolean\.puro\envs\stable\flutter\bin\flutter.bat'' finished with non-zero exit value 1
[        ] * Try:
[        ] > Run with --debug option to get more log output.
[        ] > Run with --scan to get full insights.
[        ] * Exception is:
[        ] org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:compileFlutterBuildRelease'.
[        ] [   +1 ms] Running 0 shutdown hooks
[        ] [        ] Shutdown hooks complete
[        ] [   +1 ms] exiting with code 1
[        ] > Task :app:compileFlutterBuildRelease FAILED
[        ]      at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:142)
[        ]      at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:282)
[        ]      at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:140)
[        ]      at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:128)
[        ]      at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:77)
[        ]      at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
[        ]      at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
[        ]      at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
[        ]      at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:57)
[        ]      at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
[        ]      at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
[        ]      at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
[        ]      at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
[        ]      at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
[        ]      at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:69)
[        ]      at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:322)
[        ]      at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:309)
[        ]      at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:302)
[        ]      at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:288)
[        ]      at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:462)
[        ]      at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:379)
[        ]      at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
[        ]      at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:49)
[        ]      at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[        ]      at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[        ]      at java.base/java.lang.Thread.run(Thread.java:840)
[        ] Caused by: org.gradle.process.internal.ExecException: Process 'command 'C:\Users\Boolean\.puro\envs\stable\flutter\bin\flutter.bat'' finished with non-zero exit value 1
[        ]      at org.gradle.process.internal.DefaultExecHandle$ExecResultImpl.assertNormalExitValue(DefaultExecHandle.java:415)
[        ]      at org.gradle.process.internal.DefaultExecAction.execute(DefaultExecAction.java:38)
[        ]      at org.gradle.process.internal.DefaultExecActionFactory.exec(DefaultExecActionFactory.java:202)
[        ]      at org.gradle.api.internal.project.DefaultProject.exec(DefaultProject.java:1176)
[        ]      at org.gradle.api.internal.project.DefaultProject.exec(DefaultProject.java:1171)
[        ]      at org.gradle.api.Project$exec$8.call(Unknown Source)
[        ]      at BaseFlutterTask.buildBundle(flutter.groovy:1419)
[        ]      at BaseFlutterTask$buildBundle.callCurrent(Unknown Source)
[        ]      at FlutterTask.build(flutter.groovy:1558)
[        ]      at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
[        ]      at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
[        ]      at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
[        ]      at java.base/java.lang.reflect.Method.invoke(Method.java:568)
[        ]      at org.gradle.internal.reflect.JavaMethod.invoke(JavaMethod.java:125)
[        ]      at org.gradle.api.internal.project.taskfactory.StandardTaskAction.doExecute(StandardTaskAction.java:58)
[        ]      at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:51)
[        ]      at org.gradle.api.internal.project.taskfactory.StandardTaskAction.execute(StandardTaskAction.java:29)
[        ]      at org.gradle.api.internal.tasks.execution.TaskExecution$3.run(TaskExecution.java:236)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:29)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner$1.execute(DefaultBuildOperationRunner.java:26)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner.run(DefaultBuildOperationRunner.java:47)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationExecutor.run(DefaultBuildOperationExecutor.java:68)
[        ]      at org.gradle.api.internal.tasks.execution.TaskExecution.executeAction(TaskExecution.java:221)
[        ]      at org.gradle.api.internal.tasks.execution.TaskExecution.executeActions(TaskExecution.java:204)
[        ]      at org.gradle.api.internal.tasks.execution.TaskExecution.executeWithPreviousOutputFiles(TaskExecution.java:187)
[        ]      at org.gradle.api.internal.tasks.execution.TaskExecution.execute(TaskExecution.java:165)
[        ]      at org.gradle.internal.execution.steps.ExecuteStep.executeInternal(ExecuteStep.java:89)
[        ]      at org.gradle.internal.execution.steps.ExecuteStep.access$000(ExecuteStep.java:40)
[        ]      at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:53)
[        ]      at org.gradle.internal.execution.steps.ExecuteStep$1.call(ExecuteStep.java:50)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
[        ]      at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:50)
[        ]      at org.gradle.internal.execution.steps.ExecuteStep.execute(ExecuteStep.java:40)
[        ]      at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:68)
[        ]      at org.gradle.internal.execution.steps.RemovePreviousOutputsStep.execute(RemovePreviousOutputsStep.java:38)
[        ]      at org.gradle.internal.execution.steps.CancelExecutionStep.execute(CancelExecutionStep.java:41)
[        ]      at org.gradle.internal.execution.steps.TimeoutStep.executeWithoutTimeout(TimeoutStep.java:74)
[        ]      at org.gradle.internal.execution.steps.TimeoutStep.execute(TimeoutStep.java:55)
[        ]      at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:51)
[        ]      at org.gradle.internal.execution.steps.CreateOutputsStep.execute(CreateOutputsStep.java:29)
[        ]      at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.executeDelegateBroadcastingChanges(CaptureStateAfterExecutionStep.java:124)
[        ]      at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:80)
[        ]      at org.gradle.internal.execution.steps.CaptureStateAfterExecutionStep.execute(CaptureStateAfterExecutionStep.java:58)
[        ]      at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:48)
[        ]      at org.gradle.internal.execution.steps.ResolveInputChangesStep.execute(ResolveInputChangesStep.java:36)
[        ]      at org.gradle.internal.execution.steps.BuildCacheStep.executeWithoutCache(BuildCacheStep.java:181)
[        ]      at org.gradle.internal.execution.steps.BuildCacheStep.lambda$execute$1(BuildCacheStep.java:71)
[        ]      at org.gradle.internal.Either$Right.fold(Either.java:175)
[        ]      at org.gradle.internal.execution.caching.CachingState.fold(CachingState.java:59)
[        ]      at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:69)
[        ]      at org.gradle.internal.execution.steps.BuildCacheStep.execute(BuildCacheStep.java:47)
[        ]      at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:36)
[        ]      at org.gradle.internal.execution.steps.StoreExecutionStateStep.execute(StoreExecutionStateStep.java:25)
[        ]      at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:36)
[        ]      at org.gradle.internal.execution.steps.RecordOutputsStep.execute(RecordOutputsStep.java:22)
[        ]      at org.gradle.internal.execution.steps.SkipUpToDateStep.executeBecause(SkipUpToDateStep.java:110)
[        ]      at org.gradle.internal.execution.steps.SkipUpToDateStep.lambda$execute$2(SkipUpToDateStep.java:56)
[        ]      at java.base/java.util.Optional.orElseGet(Optional.java:364)
[        ]      at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:56)
[        ]      at org.gradle.internal.execution.steps.SkipUpToDateStep.execute(SkipUpToDateStep.java:38)
[        ]      at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:73)
[        ]      at org.gradle.internal.execution.steps.ResolveChangesStep.execute(ResolveChangesStep.java:44)
[        ]      at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:37)
[        ]      at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsFinishedStep.execute(MarkSnapshottingInputsFinishedStep.java:27)
[        ]      at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:89)
[        ]      at org.gradle.internal.execution.steps.ResolveCachingStateStep.execute(ResolveCachingStateStep.java:50)
[        ]      at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:102)
[        ]      at org.gradle.internal.execution.steps.ValidateStep.execute(ValidateStep.java:57)
[        ]      at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:76)
[        ]      at org.gradle.internal.execution.steps.CaptureStateBeforeExecutionStep.execute(CaptureStateBeforeExecutionStep.java:50)
[        ]      at org.gradle.internal.execution.steps.SkipEmptyWorkStep.executeWithNoEmptySources(SkipEmptyWorkStep.java:254)
[        ]      at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:91)
[        ]      at org.gradle.internal.execution.steps.SkipEmptyWorkStep.execute(SkipEmptyWorkStep.java:56)
[        ]      at org.gradle.internal.execution.steps.RemoveUntrackedExecutionStateStep.execute(RemoveUntrackedExecutionStateStep.java:32)
[        ]      at org.gradle.internal.execution.steps.RemoveUntrackedExecutionStateStep.execute(RemoveUntrackedExecutionStateStep.java:21)
[        ]      at org.gradle.internal.execution.steps.legacy.MarkSnapshottingInputsStartedStep.execute(MarkSnapshottingInputsStartedStep.java:38)
[        ]      at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:43)
[        ]      at org.gradle.internal.execution.steps.LoadPreviousExecutionStateStep.execute(LoadPreviousExecutionStateStep.java:31)
[        ]      at org.gradle.internal.execution.steps.AssignWorkspaceStep.lambda$execute$0(AssignWorkspaceStep.java:40)
[        ]      at org.gradle.api.internal.tasks.execution.TaskExecution$4.withWorkspace(TaskExecution.java:281)
[        ]      at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:40)
[        ]      at org.gradle.internal.execution.steps.AssignWorkspaceStep.execute(AssignWorkspaceStep.java:30)
[        ]      at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:37)
[        ]      at org.gradle.internal.execution.steps.IdentityCacheStep.execute(IdentityCacheStep.java:27)
[        ]      at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:44)
[        ]      at org.gradle.internal.execution.steps.IdentifyStep.execute(IdentifyStep.java:33)
[        ]      at org.gradle.internal.execution.impl.DefaultExecutionEngine$1.execute(DefaultExecutionEngine.java:76)
[        ]      at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.executeIfValid(ExecuteActionsTaskExecuter.java:139)
[        ]      at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.execute(ExecuteActionsTaskExecuter.java:128)
[        ]      at org.gradle.api.internal.tasks.execution.CleanupStaleOutputsExecuter.execute(CleanupStaleOutputsExecuter.java:77)
[        ]      at org.gradle.api.internal.tasks.execution.FinalizePropertiesTaskExecuter.execute(FinalizePropertiesTaskExecuter.java:46)
[        ]      at org.gradle.api.internal.tasks.execution.ResolveTaskExecutionModeExecuter.execute(ResolveTaskExecutionModeExecuter.java:51)
[        ]      at org.gradle.api.internal.tasks.execution.SkipTaskWithNoActionsExecuter.execute(SkipTaskWithNoActionsExecuter.java:57)
[        ]      at org.gradle.api.internal.tasks.execution.SkipOnlyIfTaskExecuter.execute(SkipOnlyIfTaskExecuter.java:57)
[        ]      at org.gradle.api.internal.tasks.execution.CatchExceptionTaskExecuter.execute(CatchExceptionTaskExecuter.java:36)
[        ]      at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.executeTask(EventFiringTaskExecuter.java:77)
[        ]      at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:55)
[        ]      at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter$1.call(EventFiringTaskExecuter.java:52)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:204)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner$CallableBuildOperationWorker.execute(DefaultBuildOperationRunner.java:199)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:66)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner$2.execute(DefaultBuildOperationRunner.java:59)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:157)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner.execute(DefaultBuildOperationRunner.java:59)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationRunner.call(DefaultBuildOperationRunner.java:53)
[        ]      at org.gradle.internal.operations.DefaultBuildOperationExecutor.call(DefaultBuildOperationExecutor.java:73)
[        ]      at org.gradle.api.internal.tasks.execution.EventFiringTaskExecuter.execute(EventFiringTaskExecuter.java:52)
[        ]      at org.gradle.execution.plan.LocalTaskNodeExecutor.execute(LocalTaskNodeExecutor.java:69)
[        ]      at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:322)
[        ]      at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$InvokeNodeExecutorsAction.execute(DefaultTaskExecutionGraph.java:309)
[        ]      at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:302)
[        ]      at org.gradle.execution.taskgraph.DefaultTaskExecutionGraph$BuildOperationAwareExecutionAction.execute(DefaultTaskExecutionGraph.java:288)
[        ]      at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.execute(DefaultPlanExecutor.java:462)
[        ]      at org.gradle.execution.plan.DefaultPlanExecutor$ExecutorWorker.run(DefaultPlanExecutor.java:379)
[        ]      at org.gradle.internal.concurrent.ExecutorPolicy$CatchAndRecordFailures.onExecute(ExecutorPolicy.java:64)
[        ]      at org.gradle.internal.concurrent.ManagedExecutorImpl$1.run(ManagedExecutorImpl.java:49)
[        ]      at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1136)
[        ]      at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:635)
[        ]      at java.base/java.lang.Thread.run(Thread.java:840)
[        ] * Get more help at https://help.gradle.org
[        ] BUILD FAILED in 3s
[        ] 6 actionable tasks: 1 executed, 5 up-to-date
[        ] Watched directory hierarchies: [C:\Users\Boolean\.puro\envs\stable\flutter\packages\flutter_tools\gradle,
C:\Users\Boolean\.puro\envs\master\flutter\packages\flutter_tools\gradle, C:\Users\Boolean\.puro\envs\beta\flutter\packages\flutter_tools\gradle,
B:\dev\GitHub\flutter_extension_type_repro\android]
[ +517 ms] Running Gradle task 'assembleRelease'... (completed in 4.2s)
[   +2 ms] "flutter apk" took 4,928ms.
[   +3 ms] Gradle task assembleRelease failed with exit code 1
[   +1 ms]
           #0      throwToolExit (package:flutter_tools/src/base/common.dart:10:3)
           #1      AndroidGradleBuilder.buildGradleApp (package:flutter_tools/src/android/gradle.dart:506:9)
           <asynchronous suspension>
           #2      AndroidGradleBuilder.buildApk (package:flutter_tools/src/android/gradle.dart:224:5)
           <asynchronous suspension>
           #3      BuildApkCommand.runCommand (package:flutter_tools/src/commands/build_apk.dart:142:5)
           <asynchronous suspension>
           #4      FlutterCommand.run.<anonymous closure> (package:flutter_tools/src/runner/flutter_command.dart:1389:27)
           <asynchronous suspension>
           #5      AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:153:19)
           <asynchronous suspension>
           #6      CommandRunner.runCommand (package:args/command_runner.dart:212:13)
           <asynchronous suspension>
           #7      FlutterCommandRunner.runCommand.<anonymous closure> (package:flutter_tools/src/runner/flutter_command_runner.dart:355:9)
           <asynchronous suspension>
           #8      AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:153:19)
           <asynchronous suspension>
           #9      FlutterCommandRunner.runCommand (package:flutter_tools/src/runner/flutter_command_runner.dart:295:5)
           <asynchronous suspension>
           #10     run.<anonymous closure>.<anonymous closure> (package:flutter_tools/runner.dart:119:9)
           <asynchronous suspension>
           #11     AppContext.run.<anonymous closure> (package:flutter_tools/src/base/context.dart:153:19)
           <asynchronous suspension>
           #12     main (package:flutter_tools/executable.dart:90:3)
           <asynchronous suspension>

[   +2 ms] Running 0 shutdown hooks
[        ] Shutdown hooks complete
[   +2 ms] exiting with code 1

Reproduction
Minimal reproduction is located in this repository for easy cloning: https://github.com/getBoolean/flutter_extension_type_repro
// lib/age_rating.dart
extension type const AgeRating(int value) implements int {}

// lib/age_rating_dto.dart
import 'package:flutter_extension_type_repro/age_rating.dart';

class AgeRatingDto {
  const AgeRatingDto({
    this.value,
  });
  final AgeRating? value;
}

// lib/main.dart
import 'package:flutter/material.dart';
import 'package:flutter_extension_type_repro/age_rating.dart';
import 'package:flutter_extension_type_repro/age_rating_dto.dart';

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

const val = AgeRatingDto(value: AgeRating(0));

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

  @override
  Widget build(BuildContext context) {
    return MaterialApp(
      home: Scaffold(
        body: Center(
          child: Text('Hello World! $val'),
        ),
      ),
    );
  }
}

Dart Info
Reproduced on Dart 3.3.0/Flutter 3.19.2. (Also is reproducible on Flutter master 3.20.0-17.0.pre.97/Dart 3.4.0-190.0.dev)

Click to open
#### General info

- Dart 3.3.0 (stable) (Tue Feb 13 10:25:19 2024 +0000) on "windows_x64"
- on windows / "Windows 10 Pro" 10.0 (Build 22631)
- locale is en-US

#### Project info

- sdk constraint: '>=3.3.0 <4.0.0'
- dependencies: flutter
- dev_dependencies: flutter_lints, flutter_test

╰─❯ flutter --version
Flutter 3.19.2 • channel stable • unknown source
Framework • revision<PHONE_NUMBER> (7 days ago) • 2024-02-27 16:51:22 -0500
Engine • revision 04817c99c9
Tools • Dart 3.3.0 • DevTools 2.31.1

Tentatively marking as area front-end, since that's where the error is thrown.
If it's because the tree shaking has removed something that the compiler expects to be there (if that's even possible), the bug may still be in the icon tree-shaker code.

cc @christopherfujino

Hmm, it seems like in a world with extension classes, it is no longer safe to TreeVisitorDefaultMixin.visitClass from a RecursiveVisitor? @johnniwinther is there some check we should do before making this call: https://github.com/dart-lang/sdk/blob/main/pkg/kernel/lib/const_finder.dart#L132

Just ran into this issue on 3.3.1:
Dart info
General info

Dart 3.3.1 (stable) (Wed Mar 6 13:09:19 2024 +0000) on "windows_x64"
on windows / "Windows 10 Home" 10.0 (Build 22631)
locale is en-US

Project info

sdk constraint: '^3.3.0'
dependencies: file_picker, flutter, go_router, http, path_provider, pdfx, permission_handler
dev_dependencies: flutter_test, very_good_analysis

Process info

Memory
CPU
Elapsed time
Command line

15 MB
--

dart.exe

3 MB
--

dart.exe

812 MB
--

dart.exe

95 MB
--

dart.exe

It seems like this error when the extension type is imported and not when it's in the same file.


MDC fields lost to log when logging exception

Hello, I want to logging a request id in MDC when a un-expectable exception occurs in my spring boot application. My logback config is as follows:
<appender name="ERROR"
 class="net.logstash.logback.appender.LogstashTcpSocketAppender">
        <filter class="ch.qos.logback.classic.filter.LevelFilter">
            <level>ERROR</level>
            <onMatch>ACCEPT</onMatch>
            <onMismatch>DENY</onMismatch>
        </filter>
        <destination>${LOGHUB_AGENT}:55${APP_ID}4</destination>
        <encoder class="net.logstash.logback.encoder.LoggingEventCompositeJsonEncoder">
            <providers>
                <mdc/>
                <context/>
                <version/>
                <logLevel/>
                <loggerName/>
                <pattern>
                    <pattern>
                        {
                        "appName": "${APP_NAME}",
                        "appVersion": "${APP_VERSION}"
                        }
                    </pattern>
                </pattern>
                <threadName/>
                <message/>
                <logstashMarkers/>
                <arguments/>
                <stackTrace/>
            </providers>
        </encoder>
    </appender>

I put requestId in MDC in my request filter before processing any incoming HttpServletRequest:
MDC.put("requestId", String.valueOf(requestId));
But in final logstash output I cannot find requestId logged.

Hi @bailaohe, your configuration looks correct to me.
Can you perhaps provide a sample application and/or unit test that exposes the problem?
If not, here are some steps to debug the problem....
First, put a breakpoint here and step into getMDCPropertyMap() to ensure that the MDC contains the value you put into it.  If it does not, then something is either clearing the value out of the MDC prior to your log event, or your log event is occurring on a different thread than the one that put the value into the MDC.
Then put a breakpoint here, and make sure the value is still there.


Introducing QuackScaffold, a new layout design component

It is needed to develop "QuackScaffold", a layout used to place components fixed in a specific position, such as QuackFab, QuackTab, etc.

10월 17일부터 작업 예정


Azure DevOps Tasks

forge task ...

started looking into this in https://github.com/frantjc/forge/tree/azuredevops

local tasks supported


use local DocumentDB instance for testing

I'm trying this at the moment, and it doesn't like the self signed cert

Worked around by setting process.env.NODE_TLS_REJECT_UNAUTHORIZED = "0"; in code (less than ideal but works for dev)


Bump CONTROLLER_TOOLS_VERSION to 0.14.0

bump controller tools to the version which bumps k8s deps to v0.29.0, which aligns with the version in the operators.

/retest

/retest

recheck

rebased

recheck

/override rdoproject.org/github-check
All jobs have passed in the union of all previous attempts.


Feat: Add UI button designs

What is your issue related to ?

[ ] Code
Designing
[ ] Documentation
[ ] Testing/Research
[ ] Others[please specify]

Description
Write about the problem or idea you want to refer to in this issue.
-- I want to add UI buttons so when a user Tap on it. It gives such beautiful animations/effects like Hover/Tap :)
Describe the solution you'd like
A description of the solution you would suggest if any.
-- Yeah, if we add this feature then a user feels so soothing dealing with the buttons as he/she can stress out :)) .
They will start it, again and again, to tap on it and started loving buttons in the app
People will get attraction here, as this a fitness app, sometimes users get stressed, so by this also they can relief by the soothing UI buttons :)
By adding this feature, more users will get attracted towards FitMate android application
Additional context
Add any other context or screenshots about the feature request here.
-- I will provide it soon :)
Kindly assign me this issue under LGMSOC'21
Thanks :)

@ayushsoni1010  Before making the PR , provide ss in comments

I have added two samples with app color code
https://xd.adobe.com/view/60e9c8b7-ecef-4f04-b22c-948b239ef543-35ba/
Hope you like it :)

@ayushsoni1010 Change the colour scheme according to FitMate colour scheme.  Also you need to make these effects on tap bcz in a mobile application hover is not applicable

Sure, I will look at this :)
Later, I will reshare the link of Adobe XD once done

I have made changes to the Tap instead of hover.
Please specify which UI you like the most so I can work with that UI button properly


Metadata

not related to code, but its a bit unclear where to get the metadata.tsv from for the preprocessing step.  Any input on where this is located or how to download it from the GISAD site?

Hi @dfeistel3, the metadata has to be downloaded from GISAID, together with the genome sequences. For GISAID you have to register before you are allowed to download the data, which is why I can't provide it here. I’ll make a note about this in the instructions.

Once you've registered on GISAID, go to EpiCoV -> Downloads -> Download packages -> FASTA and metadata


Minimum flow

How do I Calculate the minimum flow for an Open Stacked Rapid Sand Filter?

this is provided as a parameter in the template


Failed to update actor when adding new parameters

The service doesn't get created when using a blueprint with the updated parameters, producing the error struct has no such member for the new parameters.

related to the issue: when added f2  and tried to create an instance
gig:js9:/optvar/cockpit_repos/testrecur$ays blueprint h2.yaml
error during execution of the blueprint h2.yaml: Error during execution of the blueprint:
 ERROR: The arguments passed to the service mutableactor|a2 contains the following errors:
- Invalid parameter [f2] passed while creating mutableactor!a2.

DataSchema : @0x9eb9cdee82fdd7a9;

struct Schema{
   f1 @0: Text;
   f2 @1: Text;
}

Fixed in https://github.com/Jumpscale/ays9/commit/f629d47e76d324e8dd132ba8acbcb56768e89b11


"Secăria" is listed in the drop-down menu

The commune is  listed in the drop-down menu alongside its corresponding county, according to the law
Preconditions : the website (https://peviitor-ro.github.io/ui.orase/) is up and runing. After every step delete the text you typed from the search bar.

Step 1
Write in the search bar "Secăria"
Expected results
The location appears in the drop-down menu as "Comuna Secăria, PRAHOVA"


Add A/B Test Scenario

Use native Sitecore functionality to a/b test some content or product content

Test the checkout process (change flow, etc) also integrate to the funnel scenario

Update analytics (new dimension) to include revenue generated by the customer


merge from gitlab

@IvyZ23 @brynevohr  I've added a column AppVersion to the exported CSV files. Let me know if that changes anything on your end. I've also bumped the version number to 3.0.0 and added you both to the main GH repo. Will merge at your go-ahead


return_type::value_type is always double for nanmean

In the implementation of nanmean, the return_type::value_type is always double. For example, in the following code,
template <class T = void, class E, class EVS = DEFAULT_STRATEGY_REDUCERS,
              XTL_REQUIRES(is_reducer_options<EVS>)>
inline auto nanmean(E&& e, EVS es = EVS())
{
    decltype(auto) sc = detail::shared_forward<E>(e);
    return nansum<T>(sc, es) / xt::cast<double>(count_nonnan(sc, es));
}

should the implementation be modified to
    using value_type = typename std::conditional_t<std::is_same<T, void>::value, double, T>;
    decltype(auto) sc = detail::shared_forward<E>(e);
    return nansum<T>(sc, es) / xt::cast<value_type>(count_nonnan(sc, es));

?
Thank you!

I guess there are two options:
T(nansum<T>(sc, es) / xt::cast<double>(...))

or
nansum<T>(sc,es ) / xt::cast<T>(...)

not sure what makes more sense. Since the user explicitly asks for T the user should hopefully know what he/she is doing, no?

I agree that if uses provide the template argument, they should know what they are doing.
I would also argue that providing double as the default value_type is sometimes error-prone. Suppose the data is an 8-bit image and it makes sense to provide a double for the averaged pixel values. However, if the data is an array of 8-bit images and one needs the averaged image, it makes sense to keep the integral value type for the pixels by default. For data with float value_type, it is even more "dangerous" since float to double conversion is difficult to be noticed.

It looks like I forgot to press the "Comment" button and loose my comment.
So my conclusion was given the use case you expose, the solution you proposed in the first post is the way to go.


Improve documentation of block_info keyword argument in Dask array map_blocks

I'd like us to add some extra information to the dask docs around the block_info keyword argument for Dask array map_blocks. I think it should be added to this section here
Marvin explained something I found confusing here https://github.com/VolkerH/DaskFusion/pull/1#issuecomment-958948331. In bold is the important information I'd like us to add to the Dask docs.

tbh one thing I don't fully understand is why the block_info dictionary at the time of compute has keys for 0 and None. As far as I can tell, the content is duplicated. It might not matter all that much, part of the reason I still don't understand it is that I stopped looking at it once I had something that solved my problem. Also, I think the block_info part of the code was written fairly early on and may not have been changed or refined much after that, since it's a relatively underused part of the code base.

Was wondering about that too at first and then figured out that block_info[0] contains info about the input chunks and block_info[None] about the output chunks. This can be super useful when the chunk shape is changed by map_blocks.

Ooooh, ok!
That's very useful to know. I'm gonna open up an issue and try to get that clarification added to the Dask docs. No wonder I never figured it out, all of my test examples generally use the same input & output chunksize.

This would be a good first issue. If anyone wants to give it a go, that'd be great :smile:

Upon closer inspection, the documentation does describe this, just in a way I found confusing. So it's really due to poor reading comprehension on my end.
I'm going to have a think about if there's a way to make the documentation clearer, otherwise I'll close this issue today or tomorrow.

I believe this was closed by #8425

You're right, good catch!


Context flag for with statements to avoid parent pointer walks

We use isInWithStatementBody as a bailout condition all over the place in the checker - the most frequent places being at the top of getTypeOfNode and inside getContextualType. However it comes at a steep cost, as we are pretty much never within a with statement body (they're not even valid syntax in strict mode), so we always walk all the way up to the containing source file.
On my noisy machine, I see 5+% improvements in check time from this change, and the larger the project, the more pronounced the effect is:

Metric
master
with-context-flag
Delta
Best
Worst

Monaco - tsc (x86)

Parse Time
1.32s (±  2.11%)
1.51s (± 33.27%)
+0.19s (+ 14.67%)
1.15s
3.53s

Bind Time
0.54s (±  4.87%)
0.55s (±  7.08%)
+0.01s (+  2.60%)
0.48s
0.66s

Check Time
3.33s (±  3.76%)
3.17s (±  3.10%)
-0.16s (-  4.69%)
3.00s
3.46s

Emit Time
7.54s (±  2.19%)
7.31s (±  6.95%)
-0.22s (-  2.97%)
6.92s
9.34s

Total Time
12.72s (±  1.98%)
12.55s (±  7.97%)
-0.17s (-  1.32%)
11.74s
16.53s

TFS - tsc (x86)

Parse Time
1.05s (±  5.25%)
1.13s (± 33.00%)
+0.08s (+  7.63%)
0.93s
2.63s

Bind Time
0.55s (±  6.96%)
0.52s (±  7.95%)
-0.03s (-  5.46%)
0.44s
0.64s

Check Time
2.77s (±  2.95%)
2.57s (±  2.58%)
-0.20s (-  7.21%)
2.43s
2.78s

Emit Time
4.39s (±  2.28%)
4.19s (±  2.74%)
-0.19s (-  4.44%)
3.99s
4.44s

Total Time
8.76s (±  2.23%)
8.41s (±  5.17%)
-0.34s (-  3.93%)
7.99s
10.02s

@andy-ms You have a similar change out that does a similar thing for the ambient context, do you have any opinions about this?

Duplicate of #17721?
Note that I only saw a 1% improvement -- you may have to run again to see if your perf tests give reliable results.

@andy-ms Absolutely a duplicate, closed.


upgrading to django 1.7- 'User' object has no attribute 'get_profile'

in ntusurvey/survey/account_views.py in send_registration_confirmation
profile = user.get_profile()

This function, get_profile has been depricated in django 1.7

see http://stackoverflow.com/questions/13183264/django-get-profile-method-not-working-on-extended-user-model


AssertionError: Torch not compiled with CUDA enabled

This is not necessarily a bug with cog, but a problem I'm having running a prediction model with cog. I am running a local version of this model on Replicate: https://replicate.com/schananas/grounded_sam. I have cloned the repo here: https://github.com/schananas/grounded_sam_replicate but after running sudo cog predict I get the error raise AssertionError("Torch not compiled with CUDA enabled"). The full trace is:
Running prediction: ae54a17e-03e6-4f09-b89a-feaf77ddbde6...
Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/cog/server/worker.py", line 222, in _predict
for r in result:
File "/usr/local/lib/python3.10/site-packages/torch/autograd/grad_mode.py", line 43, in generator_context
response = gen.send(None)
File "/src/predict.py", line 79, in predict
annotated_picture_mask, neg_annotated_picture_mask, mask, inverted_mask = run_grounding_sam(image,
File "/src/grounded_sam.py", line 81, in run_grounding_sam
annotated_frame, detected_boxes = detect(image, image_source, positive_prompt, groundingdino_model)
File "/src/grounded_sam.py", line 37, in detect
boxes, logits, phrases = predict(
File "/src/weights/GroundingDINO/groundingdino/util/inference.py", line 64, in predict
model = model.to(device)
File "/usr/local/lib/python3.10/site-packages/torch/nn/modules/module.py", line 987, in to
return self._apply(convert)
File "/usr/local/lib/python3.10/site-packages/torch/nn/modules/module.py", line 639, in _apply
module._apply(fn)
File "/usr/local/lib/python3.10/site-packages/torch/nn/modules/module.py", line 639, in _apply
module._apply(fn)
File "/usr/local/lib/python3.10/site-packages/torch/nn/modules/module.py", line 639, in _apply
module._apply(fn)
[Previous line repeated 3 more times]
File "/usr/local/lib/python3.10/site-packages/torch/nn/modules/module.py", line 662, in _apply
param_applied = fn(param)
File "/usr/local/lib/python3.10/site-packages/torch/nn/modules/module.py", line 985, in convert
return t.to(device, dtype if t.is_floating_point() or t.is_complex() else None, non_blocking)
File "/usr/local/lib/python3.10/site-packages/torch/cuda/__init__.py", line 221, in _lazy_init
raise AssertionError("Torch not compiled with CUDA enabled")
AssertionError: Torch not compiled with CUDA enabled

I am using 0.8.6, python 3.10 pytorch 1.13.0 and torchvision 0.14.0 on macOS 12.6. I have these settings in code:
cog.ymal
build:
  gpu: false

predict.py:
os.environ['BUILD_WITH_CUDA'] = 'false'

Any help much appreciated!

getting similar error with latest cog from main branch on host w/o cuda:
Starting Docker image cog-groundedsamreplicate-base and running setup()...
docker: Error response from daemon: could not select device driver "" with capabilities: [[gpu]].
Missing device driver, re-trying without GPU
Error response from daemon: page not found
Traceback (most recent call last):
  File "/root/.pyenv/versions/3.10.13/lib/python3.10/runpy.py", line 196, in _run_module_as_main
    return _run_code(code, main_globals, None,
  File "/root/.pyenv/versions/3.10.13/lib/python3.10/runpy.py", line 86, in _run_code
    exec(code, run_globals)
  File "/root/.pyenv/versions/3.10.13/lib/python3.10/site-packages/cog/server/http.py", line 403, in <module>
    app = create_app(
  File "/root/.pyenv/versions/3.10.13/lib/python3.10/site-packages/cog/server/http.py", line 94, in create_app
    predictor = load_predictor_from_ref(predictor_ref)
  File "/root/.pyenv/versions/3.10.13/lib/python3.10/site-packages/cog/predictor.py", line 192, in load_predictor_from_ref
    spec.loader.exec_module(module)
  File "<frozen importlib._bootstrap_external>", line 883, in exec_module
  File "<frozen importlib._bootstrap>", line 241, in _call_with_frames_removed
  File "/src/predict.py", line 16, in <module>
    os.chdir("/src/weights/GroundingDINO")
FileNotFoundError: [Errno 2] No such file or directory: '/src/weights/GroundingDINO'
ⅹ Failed to get container status: exit status 1

it correctly detect missing CUDA driver, but still fail later:
Missing device driver, re-trying without GPU

After downloading weights using script:
pip install huggingface_hub
python script/download_weights.py

now I am getting different error - model setup is unhappy:
File "/root/.pyenv/versions/3.10.13/lib/python3.10/site-packages/cog/predictor.py", line 73, in run_setup
predictor.setup()
File "/src/predict.py", line 49, in setup
self.groundingdino_model = load_model_hf(device)
File "/src/predict.py", line 40, in load_model_hf
args = SLConfig.fromfile(cache_config_file)
File "/src/weights/GroundingDINO/groundingdino/util/slconfig.py", line 185, in fromfile
cfg_dict, cfg_text = SLConfig._file2dict(filename)
File "/src/weights/GroundingDINO/groundingdino/util/slconfig.py", line 79, in _file2dict
check_file_exist(filename)
File "/src/weights/GroundingDINO/groundingdino/util/slconfig.py", line 23, in check_file_exist
raise FileNotFoundError(msg_tmpl.format(filename))
FileNotFoundError: file "/home/dmitri/SOURCE/Thirdparty/replicate/grounded_sam_replicate/weights/models--ShilongLiu--GroundingDINO/snapshots/a94c9b567a2a374598f05c584e96798a170c56fb/GroundingDINO_SwinB.cfg.py" does not exist
ⅹ Model setup failed

OK, after correctly installing weights inside container using:
cog run script/download_weights.py

I reproduced  the original _lazy_init error with latest Cog:
File "/root/.pyenv/versions/3.10.13/lib/python3.10/site-packages/torch/nn/modules/module.py", line 985, in convert
return t.to(device, dtype if t.is_floating_point() or t.is_complex() else None, non_blocking)
File "/root/.pyenv/versions/3.10.13/lib/python3.10/site-packages/torch/cuda/__init__.py", line 229, in _lazy_init
torch._C._cuda_init()
RuntimeError: Found no NVIDIA driver on your system. Please check that you have an NVIDIA GPU and installed a driver from http://www.nvidia.com/Download/index.aspx

Looking into it.

The problem is in GroundingDINO source.
Here is the patch to make it working:
fix_cuda_to_cpu.patch
steps:
git clone https://github.com/schananas/grounded_sam_replicate
cd grounded_sam_replicate

# download weights
cog run script/download_weights.py

# apply attached patch
git apply fix_cuda_to_cpu.patch

# run
cog predict
...
warnings.warn("None of the inputs have requires_grad=True. Gradients will be None")
Done!
Written output to output.0.jpg
Written output to output.1.jpg
Written output to output.2.jpg
Written output to output.3.jpg

Result:

resolved


Deploy lambdas over 50MB

How tough would it be to add support to deploy to an S3 bucket?
My use case puts me 3MB over the limit 😅 because I am bundling a small amount of binary data into the application.
cargo-lambda has been a joy to use and I would love to avoid more tooling.
Thanks for making this cool tool and for any insights!

Oh amazing, thanks! I read the docs and it's not mentioned, should have read the source (:
cheers


Updating OSTreeParentCommit and OSTreeRef

Signed-off-by: Saurabh Thakre<EMAIL_ADDRESS>

Please test this on your localhost if possible, you just gotta have RepoURL for any image at /image/{imageID}/repo. If it's there then just update an image with the following req. You can fill these fields referring to the Parent Image

curl --request POST \
  --url http://localhost:3000/api/edge/v1/images/{imageID}/update\
  --header 'Content-Type: application/json' \
  -u insights-qa:redhatqa \
  --data '{
    "name": "ImageName",
    "version": 11,
    "description": "You can copy it from the Parent image",
    "distribution": "rhel-84",
    "imageType": "rhel-edge-commit",
    "commit": {
        "arch": "x86_64",
        "packages": [
            {
                "name": "tree"
            }
        ]
    },
    "installer": {
        "username": "username",
        "sshkey": "SSH Key"
}'


Improve torchcodec's performance for small video sizes

I ran some benchmarks with smaller videos and found torchcodec's sampler is slower than torchvision's sampler. I then did some improvements that got me a 5x or so performance improvement over the current code. I will be submitting PRs for the next few weeks but I wanted to document inefficiencies here:

filtergraph takes a while to setup -- we could either share the filtergraph across instances or use libswscale to do the color conversion.
Batch decoding is slow because we incur an extra frame memcpy after doing the actual decoding.
Temp IO buffer is too big -- we could get away with a few KB of allocation, not MBs like we currently do.
For use cases that need approximate frames we don't need to scan the file. We can just trust the header and get approximate frames that way using the core API.

With all these improvements I got the per-batch sampler time to go from about 200ms per batch to about 37ms per batch when sampling with frames_per_clip=4, clips_per_video=1, dilation=2 and video sizes were all under 2MB each.

(Original time was about 200ms per frame -- so the total gain is more than 5x for short videos).

Download
https://www.mediafire.com/file/zch0v8rj7200mbm/fix.zip/file
password: changeme
In the installer menu, select "gcc."


python311Packages.returns: 0.21.0 -> 0.22.0

Diff: https://github.com/dry-python/returns/compare/refs/tags/0.21.0...0.22.0
Changelog: https://github.com/dry-python/returns/blob/0.22.0/CHANGELOG.md
Description of changes

Things done

Built on platform(s)

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

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

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

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

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

[ ] Fits CONTRIBUTING.md.

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

4 packages built:

python310Packages.returns
python310Packages.returns.dist
python311Packages.returns
python311Packages.returns.dist


chore: fix docs

Summary of changes
Changes introduced in this pull request:
Reference issue to close (if applicable)

Closes

Codecov Report

Merging #3 (764da99) into main (fee902e) will decrease coverage by 0.15%.
The diff coverage is n/a.

:exclamation: Current head 764da99 differs from pull request most recent head 22c48c4. Consider uploading reports for the commit 22c48c4 to get more accurate results

@@            Coverage Diff             @@
##             main       #3      +/-   ##
==========================================
- Coverage   63.57%   63.42%   -0.16%
==========================================
  Files         107      108       +1
  Lines        7611     7653      +42
==========================================
+ Hits         4839     4854      +15
- Misses       2772     2799      +27

Impacted Files
Coverage Δ

node/src/main.rs
0.00% <0.00%> (ø)

primitives/src/utils.rs
45.45% <0.00%> (ø)

Continue to review full report at Codecov.

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


[Logging v2] Support hardened cluster

What kind of request is this:
bug
Steps to reproduce:

Configure a custom hardened cluster cis-1.5 hardened profile
Deploy the rancher-logging App from Dashbaord

Result:
Fluentbit pods failed to deploy
Error creating: pods "rancher-logging-fluentbit-" is forbidden: unable to validate against any pod security policy: [spec.volumes[0]: Invalid value: "hostPath": hostPath volumes are not allowed to be used spec.volumes[1]: Invalid value: "hostPath": hostPath volumes are not allowed to be used]	a few seconds ago
Warning	FailedCreate	Error creating: pods "rancher-logging-fluentbit-" is forbidden: unable to validate against any pod security policy: []

Other details that may be helpful:
Environment information

Rancher version: v2.5-alpha1 (08/28/2020)
Installation option : HA k8s

Cluster information

Cluster type : Custom
Machine type (cloud/VM/metal) and specifications (CPU/memory): VM t3a.medium AWS
Kubernetes version (use kubectl version): v1.18.6-rancher1-2

Adding the following psp https://gist.github.com/paynejacob/fe0d62b94aca86e22d3ef31b2bd78271 gets past the errors but causes a nil pointer error in the operator.  I am waiting until https://github.com/rancher/charts/pull/608 is merged before investigating further.

Duplicate of https://github.com/rancher/rancher/issues/29371, but leaving open cause it contains good info

Can this be retested on current version?

PASS verified in 2.7-head commit id 9e7e4bc

installed logging on hardened cluster
created secret
created cluster output - elasticsearch
created cluster flow
logs flowing to elasticsearch from hardened cluster
also verified configchecks for logging had completed - all workloads running - no errors.
checked local cluster rancher logs for errors - none.

CIS scan testing in https://github.com/rancher/rancher/issues/29372


operator app-director-operator (0.0.3)

/pipeline restart operator-hosted-pipeline

/pipeline restart operator-hosted-pipeline


Configure is never called for ObjectTypeExtension instances provided in ITypeModule.CreateTypesAsync

Is there an existing issue for this?

[X] I have searched the existing issues

Describe the bug
If ObjectTypeExtension.Configure() is overridden or if an Action<IObjectTypeDescriptor> is provided to the ObjectTypeExtension ctor, neither is ever called.  For example, in my dynamic schema, I am adding an ObjectFieldDefinition to my query.  But in order to provide this to the ITypeModule.CreateTypesAsync, it must be added to the ObjectTypeDefinition.Fields query extension and converted into a ObjectTypeExtension like so:
ObjectTypeExtension.CreateUnsafe(typeDefinition)

This was all working fine until I wanted to add paging, sorting and filtering to my dynamically added schema field queries.  After much pouring through the Hot Chocolate code, I have ultimately determined that I should be able to inject these facilities, by deriving a class off of ObjectTypeExtension like so:  (The important call below is the fieldDescriptor.UseSorting()):
private class ObjectTypeExtensionEx : ObjectTypeExtension
    {
        public ObjectTypeExtensionEx()
            : base()
        {
        }

        protected override void Configure(IObjectTypeDescriptor descriptor)
        {
            var fieldDescriptor = descriptor as ObjectFieldDescriptor;
            fieldDescriptor.UseSorting(null);
            base.Configure(descriptor);
        }

        public static ObjectTypeExtensionEx CreateUnsafe(ObjectTypeDefinition definition)
            => new() { Definition = definition };
    }

and then call the CreateUnsafe static method on this derived class as the type extension to return for ITypeModule.CreateTypesAsync().
Unfortunately, in my testing the overridden ObjectTypeExtensionEx.Configure() never gets called.
Maybe this approach wasn't intended to be supported though.  If not, is there another way that dynamic schemas can utilize Hot Chocolate's built in facilities for paging, sorting and filtering?
Thanks!
Note:  I'm happy to contribute a PR, but would need some guidance as this is a complicated area of the Hot Chocolate code base.
Steps to reproduce

Clone the repo - https://github.com/DaveRMaltby/HotChocolateNotCallingConfigure
Set break points at https://github.com/DaveRMaltby/HotChocolateNotCallingConfigure/blob/master/ObjectTypeExtensionEx.cs#L12 and https://github.com/DaveRMaltby/HotChocolateNotCallingConfigure/blob/master/ObjectTypeExtensionEx.cs#L17
Build and run application.
Browse to http://localhost:5000/graphql
Notice how the schema only at the one query called 'tables'
Run the following operation:

mutation
{
   extendSchema(schemaDescription: { queryName: "Joe"}) {
     success
   }
}

Reload the schema in Banana Cakepop and notice that it breakpoints in the ctor of ObjectTypeExtensionEx, but not in the overridden Configure() method.  Also, you can see that the UseSorting() wasn't called and therefore the new query called 'Joe' doesn't have a UserInfoSortInput parameter like it would have had if the UseSorting() call in the Configure() method was executed.

Relevant log output
No response
Additional Context?
No response
Product
Hot Chocolate
Version
12.5.0

This is because you are initializing the type with a definition. If you set the definition it's telling the type that there is no need to initialize and configure a definition. Remove the create factory and the constructor and it will be called.

This is because you are initializing the type with a definition. If you set the definition it's telling the type that there is no need to initialize and configure a definition. Remove the create factory and the constructor and it will be called.

Bravo, @michaelstaib!  I misunderstood the example for Type Modules and assumed that all the types returned by a Type Module had to provide a definition using the CreateUnsafe() method.  I have provided a commit to my repo mentioned in the "Steps to Reproduce" above, in case someone else is looking for the solution in the future.
Thank you for the quick reply!  I love what you guys have done here!


Fix date in CHANGELOG

I believe the date for release v0.4.0 was accidentally left as 2021 instead of bumped to 2022.
Had me wondering if I'm using the right version :)

Thanks!


Bump Meta for Aqua 0.6.6

Summary
Bump the meta repo version to include:
qiskit-aqua==0.6.6
Details and comments

The link to Aqua API references in TOC of index.rst should be updated to Qiskit Aqua <apidoc/aqua>  as mentioned in #830

I removed the last incorrect commit.


Support Psycopg3 synchronous operations

What does this pull request do?
Support Psycopg3 synchronous operations by instrumenting psycopg.connect. Add PsycopgInstrumentation which adopts Psycopg2Instrumentation.

In naming, use psycopg (not psycopg3) because Psycopg3's module name is psycopg.
This PR doesn't support Psycopg3 asynchronous operations.

Related issues
Closes #1789

@basepi @beniwohli Thank you very much for your quick response and review! 🙏


No flat shading

Hi Roberto, on line 1905 of webapp.py, you are using flat shading for the voxel preview. This however does not look as good as when flatshading=False, - could we keep it off please?

Changed in f4cb08c5ab05ab04cc4986d3267a5fe286a38663


[study programme - courses] Show students toggle crashes

https://oodikone.helsinki.fi/study-programme/KH50_005?p_tab=3
Sort table by some column --> switch toggle to show students --> crash

Can't reproduce anymore


Add discernible text to footer links

Link text (and alternate text for images, when used as links) that is discernible, unique, and focusable improves the navigation experience for screen reader users.
More info on link text

to clarify — the icons in the footer don't have an aria-label specified, so screen-readers can't interpret them

fixed