Update username-section.tpl

Change Limit from 1 to 25 for Username List button per Issue #423

(bypassed travis check due to travis being down)


Tor fix

Got the target visibility tool working but we're missing a file necessary to get contamination tool up and running.

Ready to go!


Show Tooltips on disabled buttons

What's the Problem?
When a button is disabled, its tooltip no longer appears. It is difficult to understand the meaning of a disabled icon and therefore why it is disabled. It's especially annoying in the toolbar or context menu.

Solution/Idea
It is possible to globally activate the tooltips on the deactivated buttons. I can create the pr if the feature is accepted.
Alternatives
Don't enable the feature globally but locally for each button or it makes sense. The tooltip is less useful when the button contains text.
Priorities

Capability
Priority

This proposal will allow developers to accomplish W
Must

This proposal will allow end users to accomplish X
Should

This proposal will allow developers to accomplish Y
Could

This proposal will allow end users to accomplish Z
Won't

Files Version
Version: <IP_ADDRESS> OS Version: 10.0.19043.1237
Windows Version
Windows 10
Comments
No response

@cinqmilleans is this the default WinUI behavior?

@yaichenbaum The default behavior of uwp is not to show tooltips for disabled buttons. This is also the case in File Explorer (Tested on Windows 11). It's a detail but it would be an added value compared to File Explorer.

@cinqmilleans is there a property we can set?

@yaichenbaum After checking it is not possible in uwp but only in wpf. There are complex workarounds but it's not worth it. We will forget this feature as long as nothing changes.
https://stackoverflow.com/questions/60949643/how-to-show-tooltip-over-disbabled-button-in-uwp


Spelling errors in DocStruct4M, 'multi_grained_text_localization.jsonl'

All the question prompts are extracted from DocStruct4M, 'multi_grained_text_localization.jsonl' as below,
[
  "Give the bounding box of the text",
  "Predict the bounding box of the text",
  "Detect the text in the bounding box",
  "Identify the text within the bounding box",
  "Recognize the text in the bounding box",
  "Locate the postion of the text"
]

In the last column, 'postion' should be replaced with 'position'.
I wonder whether it matters for training the MLLM, because the error amount is significantly high.

Hi, @chrysanthemum-515 Thanks a lot for your careful check and kind reminder. I think this minor error will not significantly influence the model due to the strong language understanding ability of LLM. If you feel risky, you can revise this spelling error for model training and evaluation.

Hi, @chrysanthemum-515 Thanks a lot for your careful check and kind reminder. I think this minor error will not significantly influence the model due to the strong language understanding ability of LLM. If you feel risky, you can revise this spelling error for model training and evaluation.

Thanks for reply.


Contributors

I've spun up a demo and am really impressed with Prime - especially that it's OSS and built on your own time. I could see this growing into something that I could use with client projects, and would love to contribute.
What would be the best way to get started? Anything in particular you'd like to see happen sooner rather than later? I thought the color picker field would be a good way to get familiar..

Hey good idea!
A good example field could be the color picker. The number field is always a great starting point.
I may have to add documentation on how to setup a new field within lerna and such.
Let me know if you need help. It could be a good idea to open Slack or Gitter channel for prime :)

Would definitely love Slack or Gitter :) Going to https://gitter.im/birkir/prime was the first thing I tried

There's also Discord. GatsbyJS started on Reactiflux's server, then got their own server later.

Thanks for bringing this up!
https://gitter.im/primecms


PsRamFS as LittleFS cache to accelerate a web server - viable?

Hi,
this looks like a very interesting project.
I have a performance issue with a web server using ESPAsyncWebServer serving  from a small LittleFS root (maybe 1MB) - which is so slow that reading large files triggers the watchdog no matter how long I set it
so I was thinking about caching the LittleFS content in a PSRAM-based filesystem
Do you think this project is a viable base for such an effort?
what I would do is:

after boot, recursively copy the LittleFS contents to the PsRamFS (probably in a background task)
when serving a file, first check if the file is available in PsRamFS, and only fall back to LittleFS

another option would be to cook up something like a PSRAM-based LittleFS subclass which would just suck up the whole partition into PSRAM and serve from there, but I have no grasp how complex this would pan out.
Does this sound reasonable? which option would you choose?
I would be grateful for a frank opinion.
best regards
Michael

hi, thanks for the feedback :+1:
Copying big files from LittleFS to PSRam could work if you don't create folders: the vfs implementation for folders is incomplete and may trigger bugs, but it should be fine if you only create files at the root of psramfs filesystem.
Another approach would be to maintain your own file struct and use RomDiskStream with ESPAsyncWebServer, preload your files at boot and even unmount LittleFs.
#include <LittleFS.h>
#include <PSRamFS.h>
#include <map>

void toPsram( fs::FS &sourceFS, const char* path );

struct PsRamFile_t
{
  char* data;
  size_t size;
  RomDiskStream getStream() { return RomDiskStream((const uint8_t*)data, size); }
};

std::map<String,PsRamFile_t> MyPsramFiles; // global psram-files storage

void toPsram( fs::FS &sourceFS, const char* path )
{
  fs::File myFile = sourceFS.open(path);
  if (!myFile ) return;

  auto data_mem = ((char*)ps_malloc(myFile.size()+1));

  if( data_mem == NULL ) { // malloc failed !
    myFile.close();
    return;
  }

  PsRamFile_t myPsRamFile = { .data=data_mem, .size=myFile.size() };

  size_t bytes_read = myFile.readBytes( myPsRamFile.data, myFile.size() );

  if( myFile.size() != bytes_read ) {
    // incomplete copy ?
    Serial.printf("[WARNING] File copy missed %d bytes for %s\n", myFile.size()-bytes_read, path );
  }

  myFile.close();

  MyPsramFiles[path] = myPsRamFile; // add file to global psram-files array
}

    // somewhere in the ESPAsyncWebServer event loop

    String myFilePath = "/path/to/myFile.txt";

    if( MyPsramFiles[myFilePath] != NULL ) {
        server.streamFile(MyPsramFiles[myFilePath].getStream(), "text/plain");
    }

That is a very elegant solution, thanks!
I will give this a try and report back.
Appreciated!
Michael

just noting that I looked into https://github.com/PaulStoffregen/LittleFS/blob/main/src/LittleFS.h#L362-L445 with the angle of instantiating this with the partition name, and have it read the partition into PSRAM at begin() time
unfortunately it is not very general code and pretty much targeted to the Teensy hardware
your solution looks far more straightforward

thanks for that link, very interesting :+1:
Although it's POSIX compliant, the teensy core doesn't seem to implement a RTOS vfs layer (probably doesn't need to), which esp32 is based on, this may explain why their LittleFS code can't be used as is.
But I like the idea of inheriting LittleFS instead of just FS and I'll research that angle as soon as I have some time.

well that could be something rather useful
I've been exploring the RAM disk / caching options for slow flash-based filesystems and it is pretty barren land, despite the obvious reasons to have something like that
I really wonder how people run ESPAsyncWebServer in stable fashion given say LittleFS static file serving - solution "disable the watchdog and hope for the best" is so-so
especially Chrome is super-aggressive in parallel loading of js/html/css etc on startup, but so far I cannot get past Chrome just yet :-)
I dislike the solution of storing files in C arrays and serving those, that looks pretty inflexible to me for say deploying a small fix in a web app
bundling the web app is an option to reduce parallel initial loads, but not so cool during development

well, we have a result - at least up to cache loading:
https://github.com/mhaberler/esp32-arduino-playground/blob/main/src/TreeWalker-test/main.cpp
https://github.com/mhaberler/esp32-arduino-playground/blob/main/src/TreeWalker-test/TreeWalker.hpp
pre: free PSRAM=4192123

d       0 /www                                               2023-05-09 18:54:21
d       0 /www/classes                                       2023-05-08 21:33:43
d       0 /www/classes/3d                                    2023-05-08 21:33:43
f    2108 /www/classes/3d/Shape3D.js.gz                      2023-05-08 21:33:43
f    1590 /www/classes/3d/World.js.gz                        2023-05-08 21:33:43
....
f     890 /www/utils/view/paint.js.gz                        2023-05-08 21:33:43
f     980 /www/utils/view/updateView.js.gz                   2023-05-08 21:33:43

post: free PSRAM=3193923 used=998200
52 files, 997239 bytes cached in 5.354 S - 181.895 kB/s

thanks!

next step: implant into my application's webserver

Beware of isDirectory() though as it doesn't have a consistent behaviour across filesystems.
https://github.com/espressif/arduino-esp32/issues/3130

Just as another possibility, for fixed files like this, I think it is better to put them into your firmware as constants.  You can script something with xxd and a parser (perl, sed, awk) to build the C-style array needed and stuff them into a header file to just serve them as strings. Then you also have these files included in your firmware for easier distribution. It is still dependent on the flash speed, but it removes a couple layers of abstraction. I don't have problems timing out on fairly large javascripts with that method.
https://github.com/lbernstone/rrdtool_ESP32/blob/embedded_script/examples/basicDB/javascriptrrd_wlibs-min_js_gz.h


Support for Network Zones (Env V2)

Have stylistically copied from some of the cool changes Radu made earlier to Problems (including clean comments, and defining the endpoints within the class itself).
Will add more mock data and tests but pretty simple API, should be good to go

Thanks a lot @bilalhashmi-dt !


Make swift-codec compatible with lombok beans

lombok lets you auto-generate setters & getters for beans. The current @ThriftField annotation can be attached to either an accessor method or a public variable.
It would be nice if we could attach this to the underlying private member of the bean. This would also make the Immutable object instances have lesser code

I think @anomalizer 's mean is want Swift support @ThriftField to be attached to private field which can be accessed from getter and setter.

Swift wouldn't know how to serialize/deserialize the object instances with only private fields. If lombok transforms these into types with setters/getters, perhaps it needs some way to move the annotations from the private fields to these setters and getters, so it generates beans compatible with frameworks like swift.
In theory, swift could propagate annotations from fields onto the setters/getters of the same type, to make this work automatically, but someone else just asked me a week or two ago how they could have both a builder-type constructor and field setters for the same object, and my suggestion was not to either not annotate the setters, or not annotate the builder constructor. If we propagated the annotations automatically by name, we'd break that scenario.

** "onto the setters/getters of the same type" => "onto the setters/getters of the same name"

In theory, just support annotate the getter is better, because this can be overrideed. But many people just like put all annotations on filed, and just generate getters and setters by ide or other tool, and this make the code more readable (no need to find getters or setters in the long listed code).  So, can we just find the annotation in a priority of field (no matter private or public) > getter > builder ?


Release 3.4.0

Changelog

major update to testing infrastructure
added integration tests
added browserslist
added coveralls support
added custom icon-font support
update dependencies
update jshint task to fail on travis correctly
update documentation
changed all {% load static %} instances to {% load staticfiles %}
move tooling in package.json from dependencies to devDependencies
removed cl.debug.js

Pull Requests
General

Iconfont support: https://github.com/aldryn/aldryn-boilerplate-bootstrap3/pull/104
Browserslist Integration: https://github.com/aldryn/aldryn-boilerplate-bootstrap3/pull/103
Remove cl.debug: https://github.com/aldryn/aldryn-boilerplate-bootstrap3/pull/92
Update staticfiles: https://github.com/aldryn/aldryn-boilerplate-bootstrap3/pull/91
Use devDependencies: https://github.com/aldryn/aldryn-boilerplate-bootstrap3/pull/83

Guideline adaptions

https://github.com/aldryn/aldryn-boilerplate-bootstrap3/pull/95, https://github.com/aldryn/aldryn-boilerplate-bootstrap3/pull/96

Testing Refactor

https://github.com/aldryn/aldryn-boilerplate-bootstrap3/pull/88, https://github.com/aldryn/aldryn-boilerplate-bootstrap3/pull/89, https://github.com/aldryn/aldryn-boilerplate-bootstrap3/pull/94, https://github.com/aldryn/aldryn-boilerplate-bootstrap3/pull/97, https://github.com/aldryn/aldryn-boilerplate-bootstrap3/pull/98, https://github.com/aldryn/aldryn-boilerplate-bootstrap3/pull/99, https://github.com/aldryn/aldryn-boilerplate-bootstrap3/pull/100

:tada:

@vxsx, @FinalAngel, @Marketionist awesome job :+1:  Thanks!

:100: awesome :+1:


Cannot resolve io.klogging:slf4j-klogging:0.2.2

Hello, I added to my project
repositories {
    mavenCentral()
}
dependencies {
    implementation("io.klogging:slf4j-klogging:0.2.2")
}

It doesn't resolve
See: https://scans.gradle.com/s/xazqkjpygc6by/dependencies

I get this error if I try to compile
> Error while evaluating property 'filteredArgumentsMap' of task ':compileKotlin'
   > Could not resolve all files for configuration ':compileClasspath'.
      > Could not resolve io.klogging:slf4j-klogging:{require 0.2.2; reject _}.
        Required by:
            project :
         > No matching variant of io.klogging:slf4j-klogging:0.2.2 was found. The consumer was configured to find an API of a library compatible with Java 8, preferably in the form of class files, preferably optimized for standard JVMs, and its dependencies declared externally, as well as attribute 'org.jetbrains.kotlin.platform.type' with value 'jvm' but:
             - Variant 'apiElements' capability io.klogging:slf4j-klogging:0.2.2 declares an API of a library, packaged as a jar, and its dependencies declared externally, as well as attribute 'org.jetbrains.kotlin.platform.type' with value 'jvm':
                 - Incompatible because this component declares a component compatible with Java 11 and the consumer needed a component compatible with Java 8
                 - Other compatible attribute:
                     - Doesn't say anything about its target Java environment (preferred optimized for standard JVMs)
             - Variant 'runtimeElements' capability io.klogging:slf4j-klogging:0.2.2 declares a runtime of a library, packaged as a jar, and its dependencies declared externally, as well as attribute 'org.jetbrains.kotlin.platform.type' with value 'jvm':
                 - Incompatible because this component declares a component compatible with Java 11 and the consumer needed a component compatible with Java 8
                 - Other compatible attribute:
                     - Doesn't say anything about its target Java environment (preferred optimized for standard JVMs)

Hi @jmfayard, thanks for bringing this to my attention.
I will look into this. I may have set the dependencies wrongly.

Hi @jmfayard, I have been investigating but do not have a solution yet.
I was able to recreate the error messages by creating a small application that depends on slf4j-klogging:0.2.2 and attempting to build using Java 8.
I built new versions of klogging-jvm (0.4.3) and slf4j-klogging (0.3.0-SNAPSHOT) that compile Kotlin to JVM 8 bytecode but that has not worked.
I will continue investigating and let you know.
Otherwise, if you want to use Klogging, can you use JVM 11 in your project?

@mjstrasser I'm already using JVM 11 as you can see here: https://scans.gradle.com/s/xazqkjpygc6by#infrastructure

AdoptOpenJDK OpenJDK 64-Bit Server VM 11.0.11+9 (mixed mode)

I wonder if this happens because some dependencies like ktor request jvm 8

@jmfayard I think I have solved the issue in version 0.2.4. My sample application now builds correctly on JVM 8 and 17. Let me know if it works for you.
I added explicit Java toolchain declaration to build.gradle.kts:
java {
    toolchain {
        languageVersion.set(JavaLanguageVersion.of(8))
    }
}

This caused a change to outgoing variants. The output of ./gradlew outgoingVariants includes:
--------------------------------------------------
Variant apiElements
--------------------------------------------------
Description = API elements for main.

Capabilities
    - io.klogging:slf4j-klogging:0.2.4 (default capability)
Attributes
    - org.gradle.category                = library
    - org.gradle.dependency.bundling     = external
    - org.gradle.jvm.environment         = standard-jvm
    - org.gradle.jvm.version             = 8
    - org.gradle.libraryelements         = jar
    - org.gradle.usage                   = java-api
    - org.jetbrains.kotlin.platform.type = jvm

Artifacts
    - build/libs/slf4j-klogging-0.2.4.jar (artifactType = jar)

Thanks for bringing this to my attention! I had not paid attention to Gradle toolchains before.


support null-safety

Support null-safety.
I had to temporarily disable integration tests by removing the dependency to flutter_driver for it to work. Otherwise I get dependency errors on flutter pub get:
[cloud_firestore_mocks] flutter pub get
Running "flutter pub get" in cloud_firestore_mocks...
Because analyzer >=1.0.0 depends on args ^2.0.0 and every version of flutter_driver from sdk depends on args 1.6.0, analyzer >=1.0.0 is incompatible with flutter_driver from sdk.

And because mockito >=5.0.0 depends on analyzer ^1.0.0, flutter_driver from sdk is incompatible with mockito >=5.0.0.

So, because cloud_firestore_mocks depends on both mockito ^5.0.0 and flutter_driver any from sdk, version solving failed.
pub get failed (1; So, because cloud_firestore_mocks depends on both mockito ^5.0.0 and flutter_driver any from sdk, version solving failed.)
exit code 1

I will restore flutter_driver after flutter_driver has updated its dependencies.
Fixes #142.

Note: Analyzer and Unit tests fail only for the disabled integration tests and the example app tests, which also relies on flutter_driver. I will fix them in a future PR when I can safely restore flutter_driver.

Ack

Thanks for the review @suztomo, please take another look.

Thanks @suztomo, I'll restore the integration tests as soon as possible.

Do you plan to release a null-safe version soon? Seeing as this was merged, even without integration tests a dev release would suffice.

I actually released this PR last week (https://github.com/atn832/cloud_firestore_mocks/issues/142#issuecomment-803519082), but the standard way of using Mockito isn't null-safe. For cloud_firestore_mocks to be soundly null-safe, we'd have to start using Mockito's alternate way which uses annotations to generate code. I've filed #149 to keep track of it.


The cache may cause confusion when creating constants via the KB API

From @JLMoszkowicz on March 26, 2015 22:17
Consider the following scenario:  You want to add some new constants to the KB along with some basic information about those constants.  For example, say you want to create NewConstant and assert (isa NewConstant ExistingCollection).  This is a pretty straightforward thing to do, but the user can run into trouble if they don't know what type of thing NewCosntant should be (i.e., an individual or a collection).  In this scenario, the user first declares that NewConstant is a KBIndividual and tries to assert the instance assertion.  This doesn't work though because it turns out that ExistingCollection is actually a SecondOrderCollection, so NewConstant has to be a KBCollection instead.  The user goes into the KB and kills NewConstant the KBIndividual so that the API can create NewConstant the KBCollection.  At this point, it seems like everything should work, but it seems as if the cache holds onto the idea that NewConstant is already a KBTerm, so it cannot be a KBCollection.  It's pretty confusing that the cache would hold onto this even after NewConstant has been removed from the KB.  The workaround seemed to be to declare the KBCollection in the simplest way possible:
KBCollection newC = KBCollectionImpl.findOrCreate("NewConstant");
After doing that, the user can assert the isa directly using FactImpl.findOrCreate.  It seems as if the caching problem comes up if you try to use fancier versions of KBCollectionImpl.findOrCreate that try to do the creation and the assertion in one fell swoop.
Copied from original issue: cycorp/api-suite#3

From @vijayatcyc on March 30, 2015 17:5
The KB API stores only one representation of a concept in the cache. That is, if the user "gets" an individual, like so:
KBIndividual i = KBIndividualImpl.get("UniversalVocabularyMt")
The API proactively tightens down the concept to Context.class. But it is type cast to KBIndividual, since it is a super class of Context. So if later in the code, if the user expects a Context for "UniversalVocabularyMt" and gets it, like so:
Context c = Context.get("UniversalVocabularyMt")
then,
c == i, they are pointer equal, the same object.
Because of this,
if you create a new object,
KBIndividual newInd = KBIndividual.findOrCreate("NewContext");
The API has created a new Individual, and has stored in the cache as a KBIndividual.
But later, if the users calls:
Context newCtx = Context.findOrCreate("NewContext"), the API throws an exception, saying that the KBIndividual cannot be cast to Context.
This is the most likely reason this exception will be encountered.
The description of this post is a similar scenario, but has a minor difference. If a term is deleted outside of the API, the API cache would not know about it. If the user deletes the concept from .delete() command, cast exceptions would not happen.


Add sdio driver

Initial SDIO Block device driver.
Add SDIO support for LPC55S69

cc @0xc0170 @JojoS62 @maclobdell

I have update the PR to address the comments

@mmahadevan108 : this PR#2 seems to be contradicting PR#1 on this same repo: (https://github.com/ARMmbed/sdio-driver/pull/1). For instance #1 is using DMA mode and #2 does not.
cc: @ARMmbed/mbed-os-storage

I moved that part to the target. Upto the target to decide what mechanism to use.

I moved that part to the target to decide the transfer mechanism to use.

@mmahadevan108 - logically, leaving this part for the target to decide makes sense, but practically until someone changes PR #1 we have two separate PRs that conflict each other.
@0xc0170 - I think we need to decide whether we would like two separate SDIOBlockDevice repos, for each target.

cc @flit

How should we proceed?

@mmahadevan108 - can you confirm usage details for testing this on LPC55S69_EVK?    How did you test this?

never mind my last comment about usage details.  I took the standard mbed-os-example-filesystem, made the changes and it works.
#include "BlockDevice.h"
#include "SDIOBlockDevice.h"

// This will take the system's default block device
//BlockDevice *bd = BlockDevice::get_default_instance();
BlockDevice *bd = new SDIOBlockDevice();

// Set up the button to trigger an erase
//InterruptIn irq(BUTTON1);
InterruptIn irq(SW2);

Tested this with the block device test inside features-storage-tests-blockdevice-general_block_device
Below was the change made to add SDIO test
--- a/features/storage/TESTS/blockdevice/general_block_device/main.cpp
+++ b/features/storage/TESTS/blockdevice/general_block_device/main.cpp
@@ -47,6 +47,8 @@
 #include "FlashIAPBlockDevice.h"
 #endif

+#include "SDIOBlockDevice.h"
+
 using namespace utest::v1;

 #define TEST_BLOCK_COUNT 10
@@ -69,6 +71,7 @@ enum bd_type {
     dataflash,
     sd,
     flashiap,
+    sdio,
     default_bd
 };

@@ -90,6 +93,11 @@ static inline uint32_t align_up(uint32_t val, uint32_t size)
 static BlockDevice *get_bd_instance(uint8_t bd_type)
 {
     switch (bd_arr[bd_type]) {
+        case sdio: {
+            static SDIOBlockDevice default_bd(P0_17);
+            return &default_bd;
+            break;
+        }
         case spif: {
 #if COMPONENT_SPIF
             static SPIFBlockDevice default_bd(
@@ -632,6 +640,8 @@ void test_get_type_functionality()
     const char *bd_type = block_device->get_type();
     TEST_ASSERT_NOT_EQUAL(0, bd_type);

+    TEST_ASSERT_EQUAL(0, strcmp(bd_type, "SDIO"));
+
 #if COMPONENT_QSPIF
     TEST_ASSERT_EQUAL(0, strcmp(bd_type, "QSPIF"));
 #elif COMPONENT_SPIF
@@ -708,10 +718,12 @@ int get_bd_count()
     bd_arr[count++] = flashiap;       //4
 #endif

+    bd_arr[count++] = sdio;       //5
+
     return count;
 }

-static const char *prefix[] = {"SPIF ", "QSPIF ", "DATAFLASH ", "SD ", "FLASHIAP ", "DEFAULT "};
+static const char *prefix[] = {"SPIF ", "QSPIF ", "DATAFLASH ", "SD ", "FLASHIAP ", "SDIO ", "DEFAULT "};

 int main()
 {


Is it possible to configure GPU resources? Or at least run on specific machine type?

This would enable Serverless GPU Inference. We could share GPU nodes for different requests.
Maybe some projects doesn't make use of GPU the full day

GPU utilization should be configured at a lower level than function deployment, but yes, it can be done. I have not personally tested this, but here is an example of how this might work.

Use something like NVIDA's gpu feature discovery on your cluster: https://github.com/NVIDIA/gpu-feature-discovery/blob/main/README.md
If I understand correctly, this will allow you to add labels to your deployments to utilize gpu
Use func config labels add to add these labels to your function
Deploy the function, and the labels should be correctly set on the running Knative Service

Closing this issue as it's not relevant to the func backlog.


Add blog post - How MongoDB compares array

Description
Closes #{issue_number}.

Readiness checklist

[ ] I added/updated unit tests.
[ ] I added/updated integration/compatibility tests.
[ ] I added/updated comments and checked rendering.
[ ] I made spot refactorings.
[ ] I updated user documentation.
[ ] I ran task all, and it passed.
[x] I ensured that PR title is good enough for the changelog.
[x] (for maintainers only) I set Reviewers (@FerretDB/core), Assignee, Labels, Project and project's Sprint fields.
[x] I marked all done items in this checklist.

@AlekSi PTAL

I will come up with a structure for a series of blog posts about sorting and filtering this week. On pause for now.


KIC not setting gateway address when using ingress instead of service type loadbalancer

Is there an existing issue for this?

[X] I have searched the existing issues

Current Behavior
When I deploy my Kong Ingress Controller exposing my proxy service using an Ingress resource instead of a Service of type LoadBalancer, the Gateway resource address status is not filled with the value provided with the env CONTROLLER_PUBLISH_STATUS_ADDRESS

Services:

Ingress:

GatewayClass:

Gateway:

Controller deployment:

Expected Behavior
The status.address of the Gateway object should be equal to the value in the CONTROLLER_PUBLISH_STATUS_ADDRESS env var of the ingress controller pod.
Steps To Reproduce
1. Install the Gateway API CRDs using: kubectl apply -f https://github.com/kubernetes-sigs/gateway-api/releases/download/v1.0.0/standard-install.yaml
2. Create the gateway class and gateway using:

echo "
---
apiVersion: gateway.networking.k8s.io/v1
kind: GatewayClass
metadata:
  name: kong
  annotations:
    konghq.com/gatewayclass-unmanaged: 'true'

spec:
  controllerName: konghq.com/kic-gateway-controller
---
apiVersion: gateway.networking.k8s.io/v1
kind: Gateway
metadata:
  name: kong
spec:
  gatewayClassName: kong
  listeners:
  - name: proxy
    port: 80
    protocol: HTTP
" | kubectl apply -f -

3. Install KIC using the helm chart (kong/ingress) with values:

controller:
  ingressController:
    env:
       publish_status_address: k8s-ingressk-***********.amazonaws.com
gateway:
  proxy:
    type: ClusterIP
    ingress:
      enabled: true
      ingressClassName: alb
      pathType: Prefix

4. Verify the `status.address` of the gateway as empty

Kong Ingress Controller version
v3.0

Kubernetes version
"clientVersion": {
    "major": "1",
    "minor": "29",
    "gitVersion": "v1.29.0",
    "gitCommit": "3f7a50f38688eb332e2a1b013678c6435d539ae6",
    "gitTreeState": "clean",
    "buildDate": "2023-12-13T08:45:02Z",
    "goVersion": "go1.21.5",
    "compiler": "gc",
    "platform": "darwin/amd64"
  },
"serverVersion": {
    "major": "1",
    "minor": "28+",
    "gitVersion": "v1.28.4-eks-8cb36c9",
    "gitCommit": "b4ddd686b005f445825bd0afd5dba24d4414d4cf",
    "gitTreeState": "clean",
    "buildDate": "2023-11-22T21:52:14Z",
    "goVersion": "go1.20.11",
    "compiler": "gc",
    "platform": "linux/amd64"
  }

Anything else?
No response
Acceptance criteria

[ ] --publish-status-address (or env: CONTROLLER_PUBLISH_STATUS_ADDRESS) has an effect on Gatewayresource similarly as it does forIngress`.

I just noticed this on our deployment as well - i think what would make sense from our PoV is specifying something along the lines of CONTROLLER_PUBLISH_INGRESS which would basically propagate the status information from the Ingress powering the Kong proxy to ingresses managed by the controller

Gateway resource currently only supports the --publish-service flag (or the corresponding CONTROLLER_PUBLISH_SERVICE env variable).
https://github.com/Kong/kubernetes-ingress-controller/blob/f154d10100b81a96572f1ffd2266660bf6598b5f/internal/controllers/gateway/gateway_controller.go#L597-L610
The --publish-status-address flag does not have an effect for Gateway resources.
We can add that as part of this issue though.

Naturally this ended up being more complicated than I thought because our unmanaged mode continues to be kinda hard to square with the spec.
It does make to honor the override flags for the unmanaged Gateway mode currently in the controller. The same use case where there's some hop in front of the proxy Service still applies, and we trust that users can provide whatever value is appropriate for their network there.
Currently, unmanaged mode copies the publish/proxy Service addresses into both the Gateway spec addresses and status addresses. Review of the addresses sections of https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.Gateway and https://gateway-api.sigs.k8s.io/reference/spec/#gateway.networking.k8s.io/v1.GatewayStatus indicates that we shouldn't actually do this for the spec addresses. Spec addresses are user requests, and you can't meaningfully request anything via the Gateway spec in unmanaged mode--we always use whatever's actually in place for the proxy Deployment and Services.
For some configuration we further set conditions if Gateway configuration doesn't match the unmanaged resources, but it doesn't seem this would be useful here. Although there is a GatewayReasonAddressNotUsable reason for GatewayConditionProgrammed=false when implementations cannot assign requested addresses, unmanaged can't ever assign requested addresses, so all we'd be able to confirm is whether you've successfully copied the current set of proxy service addresses into the Gateway, which is somewhat pointless. Realistically you should just leave that part of the spec blank.
There is a fair bit of wiggle room to assign "dynamic" addresses that don't match the spec set in my reading, so I think populating status with either the publish service or override addresses is reasonable for unmanaged mode. Meaningful conformance here basically requires operator provisioning.


When using kubernetes and nydus，container failed to start with an error “target snapshot already exists”

Additional Information
The following information is very important in order to help us to help you. Omission of the following details may delay your support request or receive no attention at all.
Version of nydus being used (nydusd --version)
Version: 	v2.1.1
Git Commit: 	2fd7070bf7c08ba8667a375ecf5ab4ca3963a184
Build Time: 	2022-11-06T11:14:20.450697142Z
Profile: 	release
Rustc: 		rustc 1.61.0 (fe5b13d68 2022-05-18)

Version of nydus-snapshotter being used (containerd-nydus-grpc --version)
Version:     v0.4.0
Revision:    1e18acbf9d39588d39d0276a423e33ebeeb3462b
Go version:  go1.18.6
Build time:  2022-11-30T11:40:06

Kernel information (uname -r)
4.19.90-2<IP_ADDRESS>2.ctl2.x86_64

GNU/Linux Distribution, if applicable (cat /etc/os-release)
command result: cat /etc/os-release
containerd-nydus-grpc command line used, if applicable (ps aux | grep containerd-nydus-grpc)
/usr/bin/containerd-nydus-grpc --config-path /etc/nydus/nydusd-config.json --address /run/containerd/containerd-nydus-grpc.sock --nydusd-path /usr/bin/nydusd --nydusimg-path /usr/bin/nydus-image --log-to-stdout

client command line used, if applicable (such as: nerdctl, docker, kubectl, ctr)
kubectl apply -f test-pod.yaml

Screenshots (if applicable)
Details about issue
When I use nerdctl, such as
nerdctl --snapshotter nydus run --rm -it centos:v1 bash

the container can be successfully created and run normally.
However, when I switch to Kubernetes, it gives me the following error:
Warning  FailedCreatePodSandBox  <invalid>  kubelet  Failed to create pod sandbox: rpc error: code = AlreadyExists desc = failed to get sandbox image "xxx/pause:3.6": failed to pull image "xxx/pause:3.6": failed to pull and unpack image "xxx/pause:3.6": unable to prepare extraction snapshot: target snapshot "sha256:xxx": already exists

I suspect this issue is related to the pause image because nerdctl, which doesn't involve the pause image, can start successfully. I have also tried using
ctr -n k8s.io content fetch $pause-image-name

but it doesn't work.
This is very confusing for me, especially because I was able to successfully launch pods using Kubernetes a while ago. However, after some time has passed, it is no longer able to start.

Cloud you try ctr images delete xxx/pause:3.6 --sync ?

Cloud you try ctr images delete xxx/pause:3.6 --sync ?

Need to ensure the pod using the image has been deleted first.

Cloud you try ctr images delete xxx/pause:3.6 --sync ?

Need to ensure the pod using the image has been deleted first.

I have already deleted all the pause images, but I still receive the same error. target snapshot "sha256:xxx": already exists

Is this a work in progress (WIP)? I'm experiencing the same issue in kata 3.2.0. @imeoer

This appears to be an inconsistency in containerd snapshot metadata, try the following commands:
ctr -n k8s.io content ls | grep sha256:xxx
ctr -n k8s.io content rm $blob_id
But we still don't have an way to reproduce it.

Way to reproduce:

Config containerd to use nydus as its snapshotter
Start nydus-snapshotter.service
Run some pods to make sure everything is fine
Delete '/var/lib/containerd-nydus'
Run crictl rmi {{pause image}}
Run crictl pull {{pause image}} will give this error

@imeoer any suggestions about how to recover ?

@YuxiJin-tobeyjin In step 4, the nydus root directory contains a snapshot metadata file, deleting this directory will result in snapshot inconsistency between containerd metadata and nydus snapshotter.
The solution appears to be deleting the containerd containers, images, and the entire containerd root directory, or considering providing a tool to cleanup the inconsistent snapshot entries in containerd metadata.


web page : Received packets

How do we see the other 10 last received packet in the webpage?   I can only see  the older 10 and not the newest 10.  and in order to see the last received packet I need to wait that it became the 11th.  I tested with firefox, chromium, chrome.

I confirm, I have the same

I checked - I always have 12 and the 8 newest ones are missing.

my friend has the same 12/8.

I tested today.. I always have 12 and the 8 newest ones are missing.  my friend has the same 12/8.

thanks for the testing, will check how to solve this

Sometimes doesn't show anything and it's necessary to reboot
Gracias Ricardo por todo el trabajo

I changed the buffer size of it and also added NTP time for real packet rx time. It should be solved


Fix: use cpal feature only for clippy

Just a small fix in the pre-commit file that was crashing on Mac because of the clippy --all-features flag, I guess because the JACK backend is not implemented by cpal for Mac or Windows:
error[E0599]: no variant or associated item named `Jack` found for enum `cpal::HostId` in the current scope
  --> src/io/cpal.rs:77:45
   |
77 |             .find(|id| *id == cpal::HostId::Jack)
   |                                             ^^^^ variant or associated item not found in `HostId`

Thanks for the fix. Indeed jack won't be available on devices that don't have it installed.
I have slightly changed your work. cpal is a default feature so no need to specify it. I added cubeb because that is what we test in CI as well and should never fail on your local machine.


Classic Vnet --> ARM MIgration

When is there going to be an option to migrate existing Domain Service on Classic VNets to ARM?

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: a2dd1067-861a-2355-0dda-ce99a5494334
Version Independent ID: beeda77b-221c-1540-f26c-b2700d5ce000
Content: FAQs - Azure Active Directory Domain Services
Content Source: articles/active-directory-domain-services/active-directory-ds-faqs.md
Service: active-directory
GitHub Login: @mahesh-unnikrishnan
Microsoft Alias: maheshu

@nwhitmarsh Thanks for your feedback! We will investigate and update as appropriate.

@nwhitmarsh As per FAQ it will be done in future release. Please keep an eye on Azure updates to get the upcoming feature releases.

@nwhitmarsh We will now proceed to close this thread. If there are further questions regarding this matter, please reopen it and we will gladly continue the discussion.

This future feature was announced years ago. How do you define "future"? 1 year? 5 years? 10 years? Some rough estimate would be nice...


Make hostname permanent

Fixes bug with hostname disappearing after a reboot.
It's been annoying me for a while but never got around to fixing it.
Anyone up for a quick review/merge?

Thanks, @enckse :rocket:


Difference between error and residual

I remember doing a problem about error and residual in hw 1. I forgot how to calculate error and residual for a function. I think residual is the difference difference of actual root - estimate root, but error I am not so sure.
And also, how do we know error is increasing while residual is decreasing?

As I understand it, error is the absolute difference between the x-values (estimate of the root minus the actual location of the root) and residual is the absolute value of the function evaluated at the estimate (|f(estimate for x)|). Assuming all that's right, it should be relatively easy see when error is increasing but residual is decreasing.

As I understand it, error is the absolute difference between the x-values (estimate of the root minus the actual location of the root) and residual is the absolute value of the function evaluated at the estimate (|f(estimate for x)|). Assuming all that's right, it should be relatively easy see when error is increasing but residual is decreasing.

Thank you!


Multiple workspaces configuration with declarative YAML

Hello,
Managing Kong via the manager, we can group our configs into workspaces.
When managing via declarative Yaml configurations all configs are shown under default workspace and it is a mess.
What would be the correct enabled/disabled components (proxy,manager,admin,ingress) combination to achieve the following-
Have all configs in all my workspaces shown under the same manager, managed under the same adminapi, processed by the same proxy, in a single Kubernetes namespace.
Thanks,
Michael.

The controller currently only supports a single workspace. We're exploring ways to rework this in the future, but for now, you'll want to deploy multiple controller-only Deployments, each configured to use a separate workspace, and a single Kong Deployment.
Since the controllers will no longer be inside the Kong Deployment, you'll need to also configure the admin API location. https://github.com/Kong/charts/tree/kong-1.15.0/charts/kong#standalone-controller-nodes covers all the settings needed.
That's geared towards our Helm chart, though the same general principles applies if you're not using it. Most of the settings are just environment variables, so if you're not using the chart, ingressController.env.kong_admin_url would instead be a CONTROLLER_KONG_ADMIN_URL environment variable. CONTROLLER_INGRESS_CLASS the non-chart equivalent of ingressController.ingressClass
I'll go ahead and close this out, but if you still have additional questions, please respond back and we'll reopen it.


Documentation review

Objective
Ensure the project documentation includes the NR header and footer noting community support, and community resources available for discussion.
Acceptance Criteria

README header for NR is included
README footer for NR is included
Make sure the standard DTK repo template features have been integrated (badges, banners, etc)
Documentation is formatted, spell checked, and read for clarity

Relates to #36

Resolved in #41 and #44


Plugin ignores @ts-ignore directives

If a line has // @ts-ignore on it, the plugin is not ignoring TypeScript errors on the following line. If I run the type checker from the command line, the line is correctly ignored.

You're probably getting reports from somewhere else. Either that, or it's an upstream issue. Otherwise, more info needed, because the plugin doesn't even handle @ts-ignore comments, it's entirely handled by the tsserver itself.

I'm not sure what you mean by "getting reports from somewhere else" or "it's an upstream issue". atom-typescript reports the same type errors that I get when I run the command line tsc tool, except that the command line tool is correctly ignoring // @ts-ignore lines, but the Atom plugin is not.
What more info do you need? Happy to provide.

Here's a really simple repro:
mkdir test
cd test
yarn init -y
yarn add typescript save-svg-as-png
touch index.ts

Then add this to index.ts:
// @ts-ignore
import saveSvgAsPng from 'save-svg-as-png';

saveSvgAsPng();

atom-typescript will flag the import with the error "Could not find a declaration file for module", but this shouldn't be happening because there's a // @ts-ignore on the previous line.
https://www.typescriptlang.org/docs/handbook/release-notes/typescript-2-6.html#suppress-errors-in-ts-files-using--ts-ignore-comments

Can't reproduce, pretty much as expected.
Do you have other TypeScript plug-ins installed? F.ex. ide-typescript?

No, I don't have any other TypeScript plugins installed. If I disable atom-typescript, then the error goes away. If I re-enable the plugin, the error comes back, so I don't quite understand how this issue could be coming from anywhere else.
I can repro this problem on multiple laptops, running different OSes, with different repos.
Here's the repro (just as described above): https://imgur.com/a/YBSFQwu

It doesn't change the fact that I couldn't repro though...
But okay, I figured out what's going on thanks to your gif (great thinking!). So apparently you're using typescript in non-strict mode, which makes missing module declarations a "suggestion diagnostic" instead of an error. // @ts-ignore doesn't affect those, and tsc doesn't show them, so the behaviour is more or less as expected.
You have two options here: either use TypeScript in strict mode (specifically, set "noImplicitAny": true in tsconfig.json), then // @ts-ignore will work. Or you might ignore missing declaration suggestions entirely, in that case, add 7016 to ignoredSuggestionDiagnostics Atom-TypeScript option (added in newly released v13.6.0), as in the picture:

The reason I've added the option is you probably don't want to globally turn off the error 7016, but it's the same diagnostic code, so ignoredDiagnosticCodes option wouldn't be the best choice in this context.

No, this isn't quite correct I'm afraid. For my work repos, we are using TypeScript in strict mode. We have this defined in tsconfig.json:
    "strict": true,

I've upgraded to the latest version of the plugin and I'm still seeing the issue. The command-line tool doesn't report any problems, but atom-typescript still is.

As I said, the "blue ones" are suggestion diagnostics, those aren't affected by // @ts-ignore and aren't reported by tsc, so it's not something particularly surprising. If you find that distracting, you can disable those by editing the Atom-TypeScript settings, as outlined in my comment above (on case-by-case basis). If I'm misunderstanding the issue, please attach a screenshot showing the issue so that we're on the same page at least.

As I said, the "blue ones" are suggestion diagnostics, those aren't affected by // @ts-ignore and aren't reported by tsc,

This may technically be true, but the missing declaration file is also an error. In fact, atom-typescript is showing this message in both red and blue:

If I run the type checker on the command line, the error is reported:
$ yarn tsc --noEmit
.../index.tsx:5:17 - error TS7016: Could not find a declaration file for module 'save-svg-as
-png'. '.../node_modules/save-svg-as-png/lib/saveSvgAsPng.js' implicitly has an 'any' type.
  Try `npm install @types/save-svg-as-png` if it exists or add a new declaration (.d.ts) file containing `declare module 'save-svg-as-png';`

5 import SVG from 'save-svg-as-png';
                  ~~~~~~~~~~~~~~~~~

Found 1 error.

If I add the ts-ignore back in:
// eslint-disable-next-line @typescript-eslint/ban-ts-ignore
// @ts-ignore: Module not converted to TS yet
import SVG from 'save-svg-as-png';

The red error goes away, but the blue one hangs around:

And the command-line no longer reports errors:
$ yarn tsc --noEmit
Done in 37.62s.

I guess I'm finding it confusing as to why the plugin is behaving differently than the tool, since I would expect them to behave the same. If tsc doesn't report "suggestion diagnostics", why does the plugin? Can these blue messages be turned off completely so that the plugin and the tool match up?

Okay, a bit of background. There are actually two distinct tools TypeScript compiler provides:

CLI compiler interface, tsc
TypeScript Language Service Server daemon, tsserver

Most tools offering interactive information have to use the latter (i.e. tsserver), because using tsc directly would be too slow, and it would be missing a lot of features.
tsserver offers several "channels" for diagnostic messages, one of those being "suggestion" channel. tsc doesn't even get close to the code path associated with this channel, hence it's handled somewhat differently from other channels (which are reported by tsc).
AFAIK, originally, the "suggestion" channel was intended to be used for actionable code spans, for instance suggestion diagnostics 80001 "File is a CommonJS module; it may be converted to an ES6 module." and 80002 "This constructor function may be converted to a class declaration." have actions attached to them that would do the suggested refactoring automatically (implemented as intentions/code actions in Atom-TypeScript). However, at some point during development, it started reporting some "error" class diagnostics on that channel, too, particularly when those are explicitly disabled. I don't really want to ignore all suggestion diagnostics, since that would be throwing away the baby with the bathwater -- there are some useful suggestion diagnostics after all. But I see the need to suppress some of those as irrelevant.
I don't really have any bright ideas on how to differentiate between useful and irrelevant diagnostics on the suggestion channel in a forward-compatible way. If you have any ideas, feel free to share. For now, I've added a way to selectively disable particular diagnostics on the "suggestion" channel. Relevant to the issue at hand, you can suppress the "missing declaration" diagnostics on the "suggestion" channel with the following setting:

as I outlined above.

Ahhhh, okay, this makes a lot more sense now. Thank you for the detailed explanation. Future readers of this thread will appreciate the explanation too, I'm sure.
An option to disable all messages from the suggestion channel could be useful, but I won't make a request for that at this time. For now, I can add 7016 to the exclusion list and that's fine for me.
This isn't an open source repo, so I can't share any code. Here's a sanitized version of our tsconfig:
{
  "compilerOptions": {
    "allowSyntheticDefaultImports": true,
    "alwaysStrict": true,
    "baseUrl": ".",
    "declaration": true,
    "declarationDir": "./typings",
    "esModuleInterop": true,
    "importHelpers": true,
    "jsx": "preserve",
    "module": "commonjs",
    "noFallthroughCasesInSwitch": true,
    "noImplicitReturns": true,
    "noUnusedLocals": true,
    "noUnusedParameters": true,
    "outDir": "lib",
    "paths": {
      (tsconfig versions of all our webpack aliases)
    },
    "resolveJsonModule": true,
    "sourceMap": true,
    "strict": true,
    "target": "esnext",
    "typeRoots": ["./node_modules/@types", "types"]
  }
}

We're on the latest version of TypeScript (3.8.3).

Hi, a quick update, I've added an option to filter out most non-suggestion diagnostics reported on the suggestion channel.  This can be enabled with atom-typescript.ignoreNonSuggestionSuggestionDiagnostics ("Ignore suggestion diagnostics that are not actionable suggestions" in UI) option.


[comments] Mosaic tiles containing an Expando object aren't displayed properly in the sidebar

[ ] need storybook for different block content (text, json, mosaic objects)

See https://github.com/dxos/dxos/pull/5563
WildcardPlugin's isTileComponentProps test is failing for the surface provided by MessageContainer
<Surface role='card' limit={1} data={{ content: item }} fallback={title} />

More by luck than judgment I've moved this forward, but I think we need to do some more work on mosaic at some point soon.


Reconfigureio compatibility

Reconfigure.io currently compiles main.go (plus imported libraries) only. This PR puts the FPGA functions into main.go instead of in separate files. In the near future we will fix this.

 Web MD5


[backport] Fix types attribute of ufunc

Backport of #5448 by @toslunar

[automatic post] Jenkins, test this please.

Jenkins CI test (for commit d059b2e5edacc7faff6179bdf01fd4e94c526c11, target branch v9) succeeded!


PayloadType contains codes that are not listed in the CESR draft

The master code table in the CESR draft have been updated[1] recently.  This update has removed a bunch of codes.  Some of these removed codes still exist in the PayloadType enum.

Good start on this work. It would be worth making a spreadsheet as a community resource indicating the supported master codes in this implementation and others.


update @requires test to verify the functionality

Updating users and products subgraph schemas to allow for testing the support of @requires functionality in the implementing subgraph. This is a breaking change as we modify the schema so all the existing implementations will be impacted.
Changes:

users subgraph

type User @key(fields:"email") {
  email:ID!
  name: String
  totalProductsCreated: Int
  yearsOfEmployment: Int! # <-- new field
}

products subgraph

extend type User @key(fields: "email") {
  averageProductsCreatedPerYear: Int @requires(fields: "yearsOfEmployment") # <-- test `@requires` functionality
  email: ID! @external
  name: String @override(from: "users")
  totalProductsCreated: Int @external
  yearsOfEmployment: Int! @external # <-- field from the users subgraph used by @requires
}

Implementation updates will follow in separate PRs.
Related Issues:

https://github.com/apollographql/apollo-federation-subgraph-compatibility/issues/128

Whats the approach to adding these changes to implementations?  will that be done in this PR?  How can library maintainers help?

@kdawgwilk 👋 I'll split the PR into the schema + test update and will have separate implementations PR. Once the test PR is merged, you will be able to update the implementations without waiting for additional changes from my side. Thanks for the help!

Does CONTRIBUTORS.md need to be updated?

@ddebrunner yes, I'll update it once the https://github.com/apollographql/apollo-federation-subgraph-compatibility/pull/152 is merged


Issue 10194. Variant does not call struct destructors.

First commit fixes issue 10194
The second commit adds support for elaborate copying.

This pull request introduced a regression:
https://issues.dlang.org/show_bug.cgi?id=14062
(This was known since 2015-01-31, I'm only posting here to notify the PR participants)


refined two manila modules

https://issues.redhat.com/browse/RHOSPDOC-1575

@fmount and @gouthampacha I wasn't sure which one of you should review this PR, so I tagged both.
Can one of you please review my changes and respond to the questions I wrote in this PR?
FYI, I will be on PTO Aug 19-26, so if you could review by Aug 27th, I'd appreciate it. Thank you!

@fmount and @gouthampacha I wasn't sure which one of you should review this PR, so I tagged both. Can one of you please review my changes and respond to the questions I wrote in this PR? FYI, I will be on PTO Aug 19-26, so if you could review by Aug 27th, I'd appreciate it. Thank you!

np, actually thanks for pinging, better to have more than one reviewing the doc! I left some comments and we can do another pass after we have more feedback!


[Feature]Generate Template model

When define an Model template, Codegen need to generate the template model, and also the all the template argument models.
model TemplateModel<T, U> {
  name: string;
  propT: T;
}

model TModel {
  nameT: string;
}

model UModel {
  nameU: string;
}

@route("/hello")
@doc("hello method")
@get
@convenientAPI(true)
op hello(): TemplateModel<TModel, UModel>;

Codegen will generate the generics type TemplateModel<T, U>, and also need to generate all the template argument models used.

Add another use case for TemplateParameter support in operations:
We use templates to encapsulate general-purpose operation parameters - these abstract basic operations are used to enforce consistency and are not intended for codegen. Is there a way to ignore them for codegen and only generate operations under interfaces?
The openapi3 emitter works fine the following code:
op BaseOperation<TResponse>(...ApiVersionParameter) : TResponse | RateLimitExceedErrorResponse;

interface MyService {
  op myOperation is BaseOperation<Model>;
}


2nd Spike for compiled query api

This is here for feedback on a new way to do compiled queries. I think this approach has a few benefits.

Doesn't hugely deviate from existing API in a way that would make it unappealing to use.
Encourages query re-use by type instead of instance of a compiled func.
Low-bar on complexity of use.
Minimizes generic parameter explosion for overloads.
Should be easier to play nice with async, batch, etc.

More current implementation
https://github.com/JasperFx/marten/pull/263


Differential drive class

This is just a potential feature request not a bug.  (probably a duplicate of some other feature request but I didn't find it)
There are many EV3 Lego creations that are mobile robots (most EV3 designs have wheels or tracks actually).  When doing the programming for a mobile robot, users need to convert motor degrees into distances and into whole robot turn amounts.  Obviously we can do these conversions, but for new users it would be nice to provide a convenience class for EV3 mobile robots.  My suggestion for a name is Driver, but it could be any name we like, DifferentialDrive, although more accurate, just felt too long.
Example usage:
import ev3dev.ev3 as ev3 robot_base = ev3.Driver(ev3.OUTPUT_B, ev3.OUTPUT_C, 3.3, 17)
Where the arguments are:

Left motor port
Right motor port
Wheel diameter (in cm in this case)
Distance between wheels (in cm in this case)
Plus an optional parameter not show to reverse motor direction

Once constructed users could use commands like:
- robot_base.drive(100)  # to drive forward 100 cm
- robot_base.turn(90) # to turn right 90 degrees
- robot_base.arc_right(15) # arc right with about a circle with a radius of 15
- robot_base.units = ev3.Driver.UNITS_INCHES  # cm by default
- robot_base.driving_speed = 4  # inches per second now, since units changed to degrees
- robot_base.turning_speed = 300 # degrees per second

These are not my ideas.  I've used Clinton Blackmore's Enchanting program (https://www.youtube.com/watch?v=N9HZwysMqWY) for NXT with kids for years.  It's an old Scratch based program from 2013 for NXT that he has not updated or maintained.    His differential drive mechanism is extremely flexible, robust and easy to use.  We use his driving commands with the old NXT robot fleet very heavily.  It'd be useful if we provided a Driver class of some sort.
Obviously there are a lot of design decisions about the structure of such a class and there are issues with turning inaccuracies with tank treads instead of two wheels.  Despite the concerns it'd be a highly used convenience class.
Here is Clinton's Scratch based configuration of differential drive

And some of this Scratch commands:

BTW I'm still sad that Clinton abandon his Enchanting project.  He was an amazing developer.  Funny that one guy could blow away anything Lego ever made for programming the NXT.  Still works great today even, despite no updates since Enchanting v0.2 from 2014, I have a kids event on Saturday where we'll use Enchanting. http://enchanting.robotclub.ab.ca/

I like it.  @fisherds you should submit a pull request :)

I started on this one so will take it unless someone else is interested in working on it

@fisherds if you say drive in an arc to the left with a radius of 50cm is the expectation that the outer wheel, inner wheel or midpoint between the two wheels creates a circle with a radius of 50cm?

Same basic question in regards to setting driving speed, are you specify the speed of the outer wheel, inner wheel or of the midpoint between the two wheels.

@dwalton76 I think the best plan is midpoint for all questions like that.  Love that you are working on this idea!

I need to get back to this...got distracted by Rubik’s cube solving work this past month.

Got distracted by life for a while....will pick this back up and finish it off

I think I have most of the code/math worked out in my MoveDifferential class but I am hitting a snag with trying to accurately rotate a large motor at an exact speed for an exact distance.  Opened https://github.com/ev3dev/ev3dev/issues/1186 to investigate.
PS
Apologies for being AWOL the past 6 months :(


Update the CheckboxGroup component

Replaces the CheckboxGroup component with a new simpler version, CheckboxGroupField.
Advantages over old component: t

his manages the whole Formik checkbox group within a single component
it doesn't require passing in any Formik properties
it doesn't set the id attribute of any elements (previous version set id to match name, which caused duplicate ids when multiple similar forms were on one page)

The tests are fixed now.


unexpected token: "µ"

== Compilation error in file lib/tesla/middleware/telemetry.ex ==
** (SyntaxError) lib/tesla/middleware/telemetry.ex:150:18: unexpected token: "µ" (column 18, code point U+00B5)

FWIW I had the same error compiling on elixir 1.4.0-dev (main)

Fixed in https://github.com/teamon/tesla/pull/519


Size limitation

HI! Thanks for this repo - probably not an issue with your plugin but  I was wondering if you observed any size limitation while using this plugin for your files. I have a nd2 file that is about 6 gb with 2048x2048x150 and has 5 channels. My computer has 32 GB RAM, but it doesn't seem to be enough. The same file opens well in imagej though but the volume can't be rendered in imagej with the same out of memory error
Would you have any recommendations for visualizing such big volumes? Thanks in advance! :)

Hi. This is probably the result of (me) converting the data to 32-bit while reading the image. I will try to update this.
Otherwise, there is also this plugin that can read nd2 (and other) image files:
https://github.com/AllenCellModeling/napari-aicsimageio
that can read nd2 images and probably has better features.
~Chris

thanks @cwood1967 makes sense, napari-aicsimageio worked with the same nd2 file


allow project-page to show actual score if user is logged in.

this would allow regular public displays to default to a minimum score display, i.e. <75, while allowing a logged-in user the ability to easily see the actual score.

added in commit d0489660725981bcf95cb31a24d443dff419a626


quickstart in readme

What was wrong?
The documentation wasn't clear on how to setup a smart contract.
How was it fixed?
By adding a quickstart section onto the readme
Cute Animal Picture

Thanks for putting this together!
All the rest of our user-facing documentation is at readthedocs, and I want to make sure people can find your contribution easily. Are you up for moving it over to https://github.com/pipermerriam/web3.py/blob/master/docs/quickstart.rst ?
I love the Halloween-themed cute animals.

Done! @carver

Thanks! @kendricktan


[BUG] Fail to delete an Off VM if its network was deleted

Describe the bug
Fail to delete an Off VM if its network was deleted

Prerequisite

VM network

Running VM using that network

To Reproduce

Network should not be able to delete if it's using by a Running VM

Harvester suggest me to stop the VM first.

Stop VM

Now able to Delete network

But fail to delete VM with 500 error, and no GUI error message.

Expected behavior
Depends on the delete validation, at least we should popup error message instead of 500 error in the dev consle.
Support bundle
supportbundle_ee4e61ad-a81c-4db9-930a-601f62cc6c35_2024-11-07T05-46-30Z.zip
Environment

Harvester ISO version: v1.4.0-rc5
Underlying Infrastructure (e.g. Baremetal with Dell PowerEdge R630): Baremetal

Additional context

Start VM fails as expectation and has error message

First of all we should confirm the expected behavior:
Does Harvester really allow to delete a network if it still referenced by stopped VMs?

Yes -> This issue
No -> Let's change title to "Network should not be able to delete if still referenced by VMs"

@albinsun This should not allow and we should fix it.

I failed to reproduce exact the same symptom.  The status would stuck in Termination while I'm deleting a VM w/ a non-existing VM network. The command of kubectl delete virtualmachines.kubevirt.io vmxxx -n default also stuck until I press Ctrl+C.

I  failed to reproduce exact the same symptom. The status would stuck in Termination while I'm deleting a VM w/ a non-existing VM network. The command of kubectl delete virtualmachines.kubevirt.io vmxxx -n default also stuck until I press Ctrl+C.

That behavior exists in the current code.
/pkg/api/vm/store.go#L51-L54
	// Set removed PVCs in annotations. VMController is in charge of the cleanup.
	if err = s.setRemovedPVCs(vm, removedPVCs); err != nil {
		return types.APIObject{}, apierror.NewAPIError(validation.ServerError, fmt.Sprintf("Failed to set removedPersistentVolumeClaims to virtualMachine %s/%s, %v", request.Namespace, request.Name, err))
	}

/pkg/webhook/resources/virtualmachine/mutator.go#L365-L367
	if err := m.addNodeSelectorTerms(vm.Namespace, requiredNodeSelector, newVMNetworks); err != nil {
		return patchOps, err
	}

The goal is below, as @albinsun and @bk201 mentioned. You must implement validation to prevent network deletion if it's in use by any VMs, regardless of their status.

No -> Let's change title to "Network should not be able to delete if still referenced by VMs"

As I see from the code, we need to also handle an another case where deletion of vlan config should be prevented when nad is attached to it on the same cluster network.
I tried deleting a vlanconfig when vlan network is attached and used by a stopped vm, and I was able to successfully delete it.
When I tried restarting the vm, it showed the following without vlanconfig (error does not hint the missing vlanconfig)

Once I added the vlan config, vlan network became active and vm also moved to Running state.
But I believe the vlan config webhook must handle the case where it should not be deleted if NAD is still attached in that cluster network.
https://github.com/harvester/network-controller-harvester/blob/61615bb76a82568de129fb0ebfc1fedf8ceec470/pkg/webhook/vlanconfig/validator.go#L201
During deletion of vlanconfig, checkVmi() is called to check vmis are present for the nads,instead it should check if nads are still present for the cluster network.
And @mingshuoqiu PR https://github.com/harvester/network-controller-harvester/pull/131/files
takes care of returning error if vms are present for the NAD during deletion.
cc @starbops @mingshuoqiu  what do you think ?

I'll do more check on the vlanconfig. Thanks for pointing out.

@rrajendran17 could you help review again for my modification based on what you suggested? Thanks


Move from webpack to rollup to generate esm packages that allow for treeshaking

Currently webpack doesn't provide a way to generate esm packages.  rollup does provide this functionality.  Doing this also gives us the ability to add additional peerDependencies to allow consuming applications to move up version without elyra needing to move up at the same time.

Merged.


Bump moment-timezone

Closes #10870.
It happened because there were 2 versions of moment-timezone installed in the project.

[x] There's a clear use-case for this code change
[x] Commit message has a short title & references relevant issues
[x] The build will pass (run yarn test and yarn lint)

More info can be found by clicking the "guidelines for contributing" link above.

@sainthkh moment-timezone is intentionally held back due to buggy behaviour when upgrading that is not picked up by tests. There needs to be a deeper investigation and heavily verified behaviour because those bugs cause invalid date/time data to be stored in the database with a lot of knock-on effects and difficult recovery.

It happened because there were 2 versions of moment-timezone installed in the project.

This PR doesn't change that, see https://github.com/TryGhost/Ghost/pull/12201/files#diff-8ee2343978836a779dc9f8d6b794c3b2L6209-R6210. Dependency updates need to be followed throughout all sub-dependencies to avoid multiple versions being referenced

@kevinansfield
Thanks for telling me about resolutions. I was wondering why yarn creates an item about 0.5.23 which no dependency depends on. It's solved by updating that to 0.5.31.
When moment-timezone is updated to 0.5.31, 0.5.23 is cached under @tryghost/kg-default-cards package because it uses<EMAIL_ADDRESS>which is actually 0.6.18 and it depends on moment-timezone 0.5.28.
After reading the yarn.lock file, I realized that that is the only case where moment-timezone is used. So, I decided to clean up the versions of @tryghost/url-utils and moment-timezone. But 0.5.23 wasn't removed clearly because of the resolutions and it's now fixed.
Now, we have only one moment-timezone.

@sainthkh having two versions is not the source of the problem. There are changes in moment-timezone and moment in the higher versions that cause bugs due to global timezone setting not being respected

Actually, it is.
Let me explain in more detail.
moment-timezone ignoring the global setting below has nothing to do with its updates.
https://github.com/TryGhost/Ghost/blob/8aac74b3e86181ec4a399f3964f18ddf936b8329/core/server/overrides.js#L18-L25
To prove this, let's experiment this:

Create 2 Ghost clones with git clone.
In one repo, bump the version of moment-timezone to 0.5.31 (let's call this repo Ghost1). And leave the other repo as-is (let's call this repo Ghost2).
yarn to install dependencies in both repos.
Open node_modules folder of Ghost1 and find moment-timezone.
Copy the content of moment-timezone under node_modules in Ghost2 to Ghost1's moment-timezone.
Now, the code of moment-timezone inside Ghost1  uses the version 0.5.23.
Run the test by grunt test:regression\importer\importer_spec.js.
It fails. Even when we used the code of 0.5.23.
When you do the reverse, using 0.5.31 code inside Ghost2, it passes.

This 2 experiments tell us that the bug has nothing to do with the version of the moment-timezone.

Now, let's check what happens when we change the version number from 0.5.23 to 0.5.31 in the package.json.
Then, there's an another copy of moment-timezone under @tryghost/kg-default-cards folder. It's because it wants to use the version 0.5.28 of moment-timezone while the main Ghost project tries to use 0.5.31.
This happens a lot in nodejs projects and it is not a problem in most cases. But moment-timezone and moment are a bit different.

In momentjs constructor code below, there is a function called updateOffset.
// Moment prototype object
export function Moment(config) {
    copyConfig(this, config);
    this._d = new Date(config._d != null ? config._d.getTime() : NaN);
    if (!this.isValid()) {
        this._d = new Date(NaN);
    }
    // Prevent infinite loop in case updateOffset creates new moment
    // objects.
    if (updateInProgress === false) {
        updateInProgress = true;
        hooks.updateOffset(this);
        updateInProgress = false;
    }
}

This is defined as empty in momentjs like below:
// This function will be called whenever a moment is mutated.
// It is intended to keep the offset in sync with the timezone.
hooks.updateOffset = function () {};

But it is defined in moment-timezone to calculate the timezone:
	moment.updateOffset = function (mom, keepTime) {
		var zone = moment.defaultZone,
			offset;

		if (mom._z === undefined) {
			if (zone && needsOffset(mom) && !mom._isUTC) {
				mom._d = moment.utc(mom._a)._d;
				mom.utc().add(zone.parse(mom), 'minutes');
			}
			mom._z = zone;
		}
		if (mom._z) {
			offset = mom._z.utcOffset(mom);
			if (Math.abs(offset) < 16) {
				offset = offset / 60;
			}
			if (mom.utcOffset !== undefined) {
				var z = mom._z;
				mom.utcOffset(-offset, keepTime);
				mom._z = z;
			} else {
				mom.zone(offset, keepTime);
			}
		}
	};

This function overrides the momentjs's updateOffset.
Note: offset means "time zone" in momentjs. utcOffset function is used to define getSetZone function.
The problem with these 2 copies of moment-timezone happens with this overriding. Because we need to call the root moment-timezone's updateOffset to make global setting work correctly. But actually called updateOffset is from the one under @tryghost/kg-default-cards.
Because of this, the global setting was ignored. And I fixed this by reorganizing yarn.lock.

As you might have noticed, this PR passed all the tests. It means this PR bumps moment-timezone to the latest version and respects the global timezone setting of Ghost.
This PR meets all 4 conditions of the issue:

[x] bump moment-timezone package version to the latest in core => done.
[x] bump moment-timezone package version in SDK => It was already done before I started this PR.
[x] make sure default UTC timezone works globally => The test passes.
[x] remove moment-timezone from Renovate ignore list => I removed it.

After writing all this, I realized that my summaries in the original comment of this PR and the commit message were too brief to explain why it solves the problem.
I hope this explains why this is the solution to the problem.
And thank you for the review. If there's anything I missed, please tell me. Let's fix it together.


Rename seraiki as Saraiki

In site, https://asjp.clld.org/languages/SERAIKI The name of language is written as Saraiki. But its actual name is Saraiki. So it may be corrected please.
2. Also population be corrected please.
3.  Also map be corrected please

The ASJP website serves the latest released version of lexibank/asjp. There's a new release coming up later this month which may fix the name. Speaker numbers and geographic coordinates are pulled in from other sources, though, so we won't be able to change these.


Cr 8526 fix

Codecov Report

Merging #199 (78b9aca) into main (870de81) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             main     #199   +/-   ##
=======================================
  Coverage   24.86%   24.86%
=======================================
  Files           1        1
  Lines         189      189
=======================================
  Hits           47       47
  Misses        136      136
  Partials        6        6

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 870de81...78b9aca. Read the comment docs.

/e2e

/e2e


OSError: [Errno -9999] Unanticipated host error pyaudio if you deny access to microphone in windows settings

The system will report OSError: [Errno -9999] Unanticipated host error pyaudio if you deny access to microphone in windows settings
And close out
`Currently input device with id 1 is used for recording. To change the audio device, please use the --audio-device-idx parameter.
Traceback (most recent call last):
File "d:\repo\natural_voice_assistant\main.py", line 306, in
main()
File "d:\repo\natural_voice_assistant\main.py", line 296, in main
record(audio, sample_rate, audio_channels, audio_input_buffer, start_recording, args.audio_device_idx, args.audio_details)
File "d:\repo\natural_voice_assistant\main.py", line 115, in record
streamIn = audio.open(format=pyaudio.paFloat32, channels=channels,
File "C:\webui\installer_files\conda\envs\bud_e\lib\site-packages\pyaudio_init_.py", line 639, in open
stream = PyAudio.Stream(self, *args, **kwargs)
File "C:\webui\installer_files\conda\envs\bud_e\lib\site-packages\pyaudio_init_.py", line 441, in init
self._stream = pa.open(**arguments)
OSError: [Errno -9999] Unanticipated host error`
Not really a bug but perhaps add it to the install notes.

Hey @twobob, thanks for pointing this out. I've added a troubleshooting section in the readme and included a hint regarding microphone access.


[BUG] React Table global filter

Describe the bug
I tried to implement a global filter using refine with react table but filter value is not applied.
Steps To Reproduce
I tried two way:

i followed the example from tanstack filters example:
here  a sandbox forked from Refine advance react table
180: + const [globalFilter, setGlobalFilter] = React.useState("");
202: +    state: {
203: +      globalFilter,
204: +    },
205: +    onGlobalFilterChange: setGlobalFilter,
326: +    <label htmlFor="globalFilter">Global filter: </label>
327: +     <input
328: +           id="globalFilter"
329: +           type="text"
330: +           value={(globalFilter as string) ?? ""}
331: +           onChange={(event) => setGlobalFilter(event.target.value)}

i used setGlobalFilter from useTable:
here  a sandbox forked from Refine advance react table
208: + setGlobalFilter
326: +    <label htmlFor="globalFilter">Global filter: </label>
327: +     <input
328: +           id="globalFilter"
329: +           type="text"
330: +           value={(getState()?.globalFilter as string) ?? ""}
331: +           onChange={(event) => setGlobalFilter(event.target.value)}

Expected behavior
I would expect that filter is applied and table updated but nothing happens.
Screenshot
No response
Desktop
No response
Mobile
No response
Additional Context
No response

Hello @Almalerik,
Consider useTable @refinedev/react-table as a link between dataProvider and TanStack Table. It automatically manages API requests when the state changes.
However, at the moment, we don't support setGlobalFilters. This means that useTable doesn't monitor changes to globalFilter and won't send requests to the API accordingly.
If you wish to utilize globalFilters, you can disable the refine's filtering feature and directly use the plain TanStack Table. In doing so, you'll need to handle API requests manually.
useTable<IPost>({
    enableGlobalFilter: true,
    refineCoreProps: {
      filters: {
        mode: "off",
      },
    },
});

For further details on filters, you can refer to the documentation here.

Thanks @alicanerdurmaz, I'll do it that way.


bun: 1.0.0 -> 1.0.1

Description of changes
Bump Bun version from 1.0.0 to 1.0.1 to capture latest bug fixes. Changelog

Things done

Built on platform(s)

[x] 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

[x] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
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.

The hash is wrong except for x86_64-linux.

trying https://github.com/oven-sh/bun/releases/download/bun-v1.0.1/bun-linux-aarch64.zip

  % Total    % Received % Xferd  Average Speed   Time    Time     Time  Current

                                 Dload  Upload   Total   Spent    Left  Speed

  0     0    0     0    0     0      0      0 --:--:-- --:--:-- --:--:--     0

100 31.6M  100 31.6M    0     0  60.7M      0 --:--:-- --:--:-- --:--:-- 60.7M

error: hash mismatch in fixed-output derivation '/nix/store/594h35lm38xi4wfzbc9g2rjx9p6vvxh9-bun-linux-aarch64.zip.drv':

         specified: sha256-e9YRMyBev3rLDEGJVp5LfTVa8kfHAuBKY0k7a2EDkmw=

            got:    sha256-EEcKoaaC0KnaAfUqd5QNYpTeArY3ia38l5dkZCooZuw=

error: 1 dependencies of derivation '/nix/store/0w3axpwj0hlvcmad1j6x16w6s1r3sqnw-bun-1.0.1.drv' failed to build

Hmmm, strange, i'm not sure why i'm getting the wrong hash. I'll dig into this in the morning. Thanks for the review!

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

1 package built:

bun

got the correct hashes :) please be sure to collapse into 1 commit!

Thanks Colton!

of course! your PR should still be 2 commits though: maintainers: add abdiramen and bun: 1.0.0 -> 1.0.1. please squash the 3rd commit into the 2nd commit


protonmail-bridge-gui won't accept --minimize argument in xdg.autostart entry

Describe the bug
When adding protonmail-bridge-gui to home-manager for the purpose of xdg.autostart, I cannot add the argument --minimize in order to ensure that protonmail-bridge-gui minimizes on first boot of NixOS.
Steps To Reproduce
Steps to reproduce the behavior:

Create an xdg.autostart entry for protonmail-bridge-gui and add --minimize at the end of the exec string.
Reboot

Expected behavior
I would expect protonmail-bridge-gui to minimize on boot when adding the --minimize argument, like other applications do.
Notify maintainers
@daniel-fahey

Hi @LinuxMason I wasn't sure how to reproduce this in full. You might like to share any relevant home-manager and other configuration snippets. I couldn't find in the Home Manager Manual how to declaratively configure a custom XDG Autostart entry, unless I'm misunderstanding you?
I was otherwise able to reproduce the failure outside of XDG Autostart / Home Manager to launch protonmail-bridge-gui with the undefined --minimize flag:
[daniel@laptop:~]$ protonmail-bridge-gui --minimize
INFO[Oct 10 09:33:09.196] bridge-gui starting
INFO[Oct 10 09:33:09.196] Using Qt 6.7.2
INFO[Oct 10 09:33:09.203] lock file created /home/daniel/.cache/protonmail/bridge-v3/bridge-v3-gui.lock
INFO[Oct 10 09:33:09.203] bridge-gui executable: protonmail-bridge-gui
INFO[Oct 10 09:33:09.203] Command-line invocation: --minimize
INFO[Oct 10 09:33:09.203] New Sentry reporter - id: [redacted].
DEBU[Oct 10 09:33:09.209] Bridge executable path: /nix/store/z1vn2zlqgljd02fixvzvsfj56pv1828g-protonmail-bridge-gui-3.13.0/lib/bridge
INFO[Oct 10 09:33:09.210] Launching bridge process with command "/nix/store/z1vn2zlqgljd02fixvzvsfj56pv1828g-protonmail-bridge-gui-3.13.0/lib/bridge" --grpc --parent-pid 28165 --minimize --launcher protonmail-bridge-gui --session-id 20241010_093309196
INFO[Oct 10 09:33:09.210] Retrieving gRPC service configuration from '/home/daniel/.config/protonmail/bridge-v3/grpcServerConfig.json'
Incorrect Usage: flag provided but not defined: -minimize

NAME:
   ProtonMailBridge - Proton Mail IMAP and SMTP Bridge

USAGE:
   ProtonMailBridge [global options] command [command options] [arguments...]

COMMANDS:
   help, h  Shows a list of commands or help for one command

GLOBAL OPTIONS:
   --cpu-prof, -p               Generate CPU profile (default: false)
   --trace-prof, -t             Generate Trace profile (default: false)
   --mem-prof, -m               Generate memory profile (default: false)
   --log-level value, -l value  Set the log level (one of panic, fatal, error, warn, info, debug)
   --grpc, -g                   Start the gRPC service (default: false)
   --cli, -c                    Start the command line interface (default: false)
   --noninteractive, -n         Start the app in non-interactive mode (default: false)
   --log-imap value             Enable logging of IMAP communications (all|client|server) (may contain decrypted data!)
   --log-smtp                   Enable logging of SMTP communications (may contain decrypted data!) (default: false)
   --help, -h                   show help
ERRO[Oct 10 09:33:09.457] Failed to initialize bridge                   SentryID="XuwNxBmqgze/cl8Cb9qceMHLHGQu6v+dbhES83eD6UI=" appName=ProtonMailBridge args="[/nix/store/z1vn2zlqgljd02fixvzvsfj56pv1828g-protonmail-bridge-gui-3.13.0/lib/bridge --grpc --parent-pid 28165 --minimize --launcher protonmail-bridge-gui --session-id 20241010_093309196]" build= error="flag provided but not defined: -minimize" revision=v3.13.0 runtime=linux tag= version=3.13.0
time="2024-10-10 09:33:09.457" level="debug" msg="Locations stopped"
reportID: [redacted] Captured exception :waitAndRetrieveServiceConfig(): Bridge failed to start.

You can instead use the (undocumented) --no-window flag. It's not quite the same exactly as starting the program actually minimised, but is pretty close.
Also while looking into your issue I also discovered that when ticking the "Open on startup" checkbox in the GUI's settings, it creates a new file at ~/.config/autostart/ProtonMailBridge.desktop:
[daniel@laptop:~]$ cat ~/.config/autostart/ProtonMailBridge.desktop
[Desktop Entry]
Type=Application
Name=ProtonMailBridge
Exec="/etc/profiles/per-user/daniel/bin/protonmail-bridge-gui" "--no-window"
X-GNOME-Autostart-enabled=true

That looks like it will work after a dry-run with dex:
[daniel@laptop:~]$ nix-shell -p dex --run 'dex -ad'
Executing command: /etc/profiles/per-user/daniel/bin/protonmail-bridge-gui --no-window
...

If you can share your configuration and show this isn't an upstream issue about protonmail-bridge-gui not accepting the --minimize flag I'll re-open.

If you can share your configuration and show this isn't an upstream issue about protonmail-bridge-gui not accepting the --minimize flag I'll re-open.


Show some UI indication that I opted to install pre-releases of an extension even if the latest version is a release version

Install a pre-release version of an extension
When the latest version is pre-release there is nice UI indication that I am on pre-release
If the extension updates to latest release version, then I have no clue that I have opted to install/update pre-releases of that extension. Show some UI indication in this case and also an option to not to update to pre-releases of that extension

We closed this issue because we don't plan to address it in the foreseeable future. If you disagree and feel that this issue is crucial: we are happy to listen and to reconsider.
If you wonder what we are up to, please see our roadmap and issue reporting guidelines.
Thanks for your understanding, and happy coding!

I am reopening this as there is scope to improve our pre-release indication UI.

Added Pre-Release checkbox if user has opted into pre-release version of an extension. This will indicate if user has enabled to pre-release versions of an extension even if the latest version of an extension is release version.

CC @isidorn @alexr00

Looks good to me.

After feedback, updated the UI to following

Bookmark in the extensions view indicates that the extension allows updates to pre-release versions.
Switch to Release version action is shown always even if latest version is release version
Switch to Pre-Release version action is shown if extension has newer pre-release version
If a given version is pre-release or not is included in the version information

The bookmark doesn't seem to be shown anymore when I switch to the latest release version of an extension.


Resource leak when using IPC subscription

Describe the bug
We have detected what appears to be a resource leak in the Greengrass nucleus related to IPC subscriptions.
When the below Python code is executed (in a Greengrass component) which constantly creates an IPC client, sets up a topic subscription and then closes the subscription and client, the underlying resources appear not to be freed:
To Reproduce
    log.info("Mem-test of IPC client")
    count = 0
    while True:
        ipc_client = GreengrassCoreIPCClientV2()
        request_id = uuid.uuid1()
        response_topic = f"dummy_method-response-{request_id}"
        def response_listener(message: SubscriptionResponseMessage) -> None:
            log.info("Response listener")
        def error_listener(_: Exception) -> Union[None, bool]:
            log.info("Error listener")
            return True

        _, operation = ipc_client.subscribe_to_topic(
            topic=response_topic,
            on_stream_event=response_listener,
            on_stream_error=error_listener,
        )
        operation.close()
        ipc_client.close()
        count += 1
        if count > 10000:
            log.info("Created %s clients", count)
            count = 0
            time.sleep(1)

Expected behavior
Closed resources are freed, JVM does not fail with java.lang.OutOfMemoryError: Java heap space.
Actual behavior
If the Greengrass heap is set to something like 100Mb, the memory is exhausted after about 15-20 minutes when running the above snippet, which we can see by enabling the Native Memory Tracking feature in the JVM.
The above code snippet was the most compact way we were able to replicate the problem we have been seeing on our production devices (but there the memory leak takes several weeks to manifest since we obviously don’t create clients as frequently as in the code snippet above).
Analyzing memory dumps of the JVM identifies the com.aws.greengrass.builtin.services.pubsub.PubSubIPCEventStreamAgent as the object retaining almost all memory. Digging into the references of this class reveals hundreds of thousands of objects of type java.util.concurrent.ConcurrentHashMap$Node which in turn have references to com.aws.greengrass.builtin.services.pubsub.SubscriptionTrie. It looks like this class contains the topic name of the generated subscription.
Studying the IPC documentation I can’t see anything obviously wrong with our code snippet - both the Greengrass IPC client and the subscription operations are closed - shouldn’t this free up all resources?
Environment
JDK
openjdk version "11.0.24" 2024-07-16
OpenJDK Runtime Environment (build 11.0.24+8-post-Debian-2deb11u1)
OpenJDK 64-Bit Server VM (build 11.0.24+8-post-Debian-2deb11u1, mixed mode)
Python
Python 3.9.2 (default, Feb 28 2021, 17:03:44)
[GCC 10.2.1 20210110] on linux
SDK
awsiotsdk==1.19.0
Greengrass
Nucleus 2.11.2
OS
Linux 5.15.61-v8+ #1579 SMP PREEMPT 2022 aarch64 GNU/Linux
Linux 5.15.0-112-generic #122-Ubuntu SMP x86_64 x86_64 x86_64 GNU/Linux
Additional context
Also tried by updating the awsiotsdk to the latest version, but it made no difference.

Hello,
Please follow the IPC best practices to create only 1 client per component. Do not create more than one client for any reason. https://docs.aws.amazon.com/greengrass/v2/developerguide/interprocess-communication.html#ipc-best-practices
For anything further please open an issue on the Python SDK as this is not a problem with Greengrass Nucleus. https://github.com/aws/aws-iot-device-sdk-python-v2

Hi,
thanks for the quick reply. I understand that this is the best practice - but should not the underlying resources be released when the client is closed? Or do you mean that this could be a problem in the Python SDK?

I'm saying that you should 1) create only 1 client and reuse it 2) this is an issue with the Python client, not Nucleus. Nucleus cannot free the resources because the client is still connected.

Ok, so you're saying that client is still connected even though it's closed? That sounds indeed like an issue in the Python client.

Yes.

Then I'll close this issue and create a new one for the Python SDK.

I forgot to mention that I did indeed try the same code but with just one client.
I still get the same resource leak - would you say that it's still an issue in the Python SDK with a failure to close resources?

Yep that would still be an SDK issue, looks like they're taking a look at it, thanks

This should be fixed by 2.14.0: https://github.com/aws-greengrass/aws-greengrass-nucleus/pull/1671.


Cant get PUT to work in REPL mode

I cant PUT anything into the database in REPL mode.
I am doing this: PUT mykey mycoolvalue
How do you put entries into the database?

Oh- strings have to be double-quoted like so: PUT "mykey" "mycoolvalue"

also works: PUT mykey "mycoolvalue"

Documentation PR?


Create a db with columns

address (PK)
create bytecode
chain id
block number
deployed code hash

we might want to try orbitdb for this: https://github.com/orbitdb/orbit-db

Doing a small test for orbit-db on existing data here: https://github.com/Shard-Labs/orbit-db

While orbitdb sounds interesting, I think a simple local db with fast inserting and indexing could be the better choice here... :)

It's definitely an interesting tool, not sure how ready it is for what we need. I've been playing a bit with it and it's relatively simple to use, the only thing I'm not sure about is data persistence in the long run which is something necessary for us.

@ligi if you want to feel free to experiment with it, there is a code on the repo. Publishing is implemented, there is still reading to be done.

only thing I'm not sure about is data persistence in the long run which is something necessary for us

Sorry to jump in, but can you please elaborate on this comment a bit? Do you currently have any plans for how this super-critical data might be 'persisted in the long run.' To me, this is one of the most important design criteria.

Data will be published on ipfs and backup will be held on s3. So if one of those fails other will take over.
Data will be fetched from ipfs, s3 is just for backup. Also, multiple replications of s3 will be held and we will support and encourage other users to run the whole systems on their own machines. We don't want to be only holders of the data and whole flow will be repeatable by any user that runs it on their own machines.
System will always give priority to decentralized storage (ipfs) before accessing centralized ones (s3).
Hope this is clear enough. :)

It totally helps. I'm running into the same issues with my work which has the same sort of 'this data belongs to the community and shouldn't be held by any one person or groups of people' aspects to it.
IPFS seems like the solution, especially for immutable data that can be easily put into a content-addressable store. One of the things I've done is create 'snapshots' of the data (I'm building an index of address appearances) ==> every 'so often' I stop adding data to the index and write a snapshot to IPFS.
How do you plan on publishing the location (IPFS hashes) of the data, and, is the data you're creating immutable?
Thanks for taking the time to answer. I feel like we could solve the same problem in the same way. Your project (collecting source) has a side effect (automatically collecting all the function and event signatures) that my project needs.
If it works out, I'd gladly run one of your 'nodes' to produce ABI data as my users need it.

Basically we've implemented a cron job that does this periodically for both ipfs (still some polishing to do) and s3. We also plan to add (ens and ipns) support so it's more easily searchable by humans.
Awesome, we are currently running this fork of geth if you want you can make changes there if there are not too complex and probably we can done this to conserve resources.
By the way we have a call every Monday at 3pm UTC if you are able to join next one it would be great. :)

@tjayrush we talked about this project in Osaka, right?

Yes. We met through Griff Green.
For TrueBlocks, we don't really need the source code (yet), but from the source, we can extract the ABI. The ABI is super useful to us. Our code watches every block (as part of it's index creation). I'd love to add a feature that extracts the same data you're extracting, publish that data somewhere in some format (that you define) and as a by-product extract the ABIs I need (and also share them).
My biggest engineering concern is "making sure whoever gathers the data doesn't become the only group with the data." Or maybe better called the "data capture problem."
I'm convinced that all old-fashioned, web 2.0 methods of data delivery result in data capture--eventually. I'd love to try to figure out how to deliver data (and thereby build apps) that can get every piece of data they need without there being any possibility of 'the system' getting captured out from under the app. That has to be engineered on purpose.
Sorry to rant -- over an out.

In the end, in my opinion, the best option would be to go with Postgresql (we need indexed data here) and using Hasura for easier access to the database (optional). Basically an API at the top of posgresql. For replication on other clients process called Hot Standby can be used if direct database replication wants to be done.

Implementation here: https://github.com/chriseth/go-ethereum/tree/logContractCode


Add unit testing support (and many other changes)

Refactored App out into Library for MVC and App retains the Droplet construction and initialization.
Marked everything as public because that's how to Swift correctly.
Added simple Auth model (no controller for this one) to begin the micro-OAuth2 impl using JWT.
Added XCTest unit testing with *nix support - currently no real test cases exist.
Add @ZachPurdue's CoursesController from #4 with the above changes.
Clean up, comment, and refactor the Model classes.

there's no need to revert commits before moving around code and then pushing your own

@ZachPurdue ??? I didn't revert any commits. Your PR wouldn't merge without conflict so I copied your code directly. My apologies.


Footer is not fixed and improving Contact us page

🐛 Bug Report
The footer is not fixed and i also want to redesign contact us page

/assign


post-0.7.0-refactor stuff

This PR contains a number of minor changes for 0.7.0:

Ability to (manually) tune insulinPeakTime and insulinEndTime.  This is not run automatically in cron at this time.
Re-enable oref0-radio-reboot, to automatically reboot the rig for various health check failures that can be resolved that way
De-duplicate the PATH variable
Verify that meal.json is valid, and don't replace it if not.
Retry SMB pump-loop on failure instead of falling back to basal-only pump-loop
Retry mmtune if needed, and display output for easier troubleshooting
Raise autotune's IOB threshold for UAM exclusion from currentBasal to 2 * currentBasal
Only use the lowest UAM of deviations for autotuning ISF when there's not enough ISF data
Allow customization of minimum interval between SMBs (hidden, default is still 3 minutes)

Independent of the other PR, so far I think the only issues I've run into with this branch are the following:

I use a meter that sends its result to the pump, which automatically shows up in Nightscout as a red dot. I've noticed those aren't showing up anymore. Full disclosure: I'm not sure if that started with the 0.7.0-dev branch or with this one based on it.
When I get home from using Bluetooth all day I expect Wi-Fi to get picked back up at some point and in previous releases it does reliably, but on this branch unless I reboot the device it doesn't happen. After the reboot it joins up immediately just fine.

To debug why the rig isn't switching back to wifi, it'd be helpful to see the network.log output from after you get home when it should be on wifi but isn't releasing Bluetooth.
Regarding the meter BG, which CGM upload method are you using?  Where is the MBG recorded: pumphistory.json or elsewhere?  Where is it normally uploaded to NS: the entries.json or treatments.json collection?

I'll get on the network.log output tomorrow when I get home.
The CGM upload right now has switched between g5-upload and xdrip-js, but the MBG must be have been coming from pumphistory.json. Although my CGM method has changed from g5-upload the red dot would get sent up even when I didn't enter the MBG into the Dexcom receiver (and the meter doesn't communicate with that device). The MBGs had to get there from the pump because that was/is the only place they're getting sent to 100% of the time, right?
As for the collection it was dropped into - I can run some queries tomorrow while I'm pulling the network.log file.

Filed here: https://github.com/ecc1/medtronic/issues/4

Added some comments above.  I think this is ready for review, and could be merged to dev soon if no one sees any objections.

Merging this to dev shortly if no objections.