Can I processing with secondary gpu without display gpu.

I use 2 gpu gtx 980ti.  Can I use secondary gpu instead of display gpu??
If I can. How can I use secondary gpu?

Looking through the features, I don't think that this is an available option.
Are the GPUs not connected via SLI?
Do you think that doing this would significantly increase performance?

You can choose the GPU to use with the -gpu flag. Using -gpu -1 will give CPU-only mode, -gpu 0 to use the display GPU, and -gpu 1 to use the secondary GPU.

@jcjohnson  Thx for answer! Secondary can got more big size image!


Updates to rc1

While reviewing the spec I came across a number of small issues:

There was a ton of extra trailing whitespace scattered throughout the spec. My ide cleans that up automatically, figured it might be a good addition?
Cleaned up a few tabs
OAuth Flows Object was missing a space and made it so the markdown wouldn't render.
Fixed the JWT Bearer json sample so it mirrored the yaml sample
Made a couple small grammar fixes.
ResponseObject.responseHeader is an array of header objects, so added brackets around the type.

The headers object is in responses is not an array, it is a map.  The use of the word "lists" is misleading and that should probably be fixed.
Having semantically significant changes included in a PR that also has a significant number of whitespace removals make reviewing changes much harder than it needs to be.

Appending ?w=1 to the url will remove whitespace changes... but I'll go ahead and remove that commit.

@darrelmiller I pushed out a new batch of commits this morning to address your comments from yesterday.

Looks good, although the OAuth Flows Object Fixed Fields table still broken.

I have #1016 for just the whitespace changes.

@darrelmiller sorry about being slow here. Was pulled elsewhere.

OAuth Flows Object Fixed Fields table still broken.
Fixed

Changes were made in other more focused PRs.


Crash on fast translation within navigationController

    // When animating within navigationController, we have to dispatch later into the main queue.
    // otherwise snapshots will be pure white. Possibly a bug with UIKit
    DispatchQueue.main.async {
      self.animate()
    }

this async dispatch cause crash in case when you start translation and try to end in really short amount of time (for example when use pan gesture to animate translation, if you swipe screen really fast then this crash appear, probably because of async execution)

to solve this I have to execute end/cancel async either
DispatchQueue.main.async {
Hero.shared.end()
}

https://github.com/lkzhao/Hero/issues/203


Reading source and I can't seem to find the \Spiral\Core\Component location?

Just browsing source to see how spiral works and all that jazz, but I came across a class that doesn't seem to exists?
Am I going crazy? https://github.com/spiral/spiral/tree/develop/source/Spiral/Core

Hi, please take a look here: https://github.com/spiral/common

Oh god, thank you. I was losing my mind for a second. You have a wonderful looking framework btw.

Thank you, FYI Component is being soft deprecated in a next version in order to improve decoupling.

Interesting. Also I found out about this framework from reddit's weekly thread, how come no one has talked about this framework much? Documentation seems complete, code is fully fledged,etc... it hits all the marks, but I've never heard of it until today.

We are simply unable to dedicate time to marketing or community this year. There are a plenty of ideas based on our current experience (https://github.com/spiral/goridge one of them and we are planning to integrate it into future version). We are fully pledged to support and maintain Spiral for years (team of 25 engineers), but there is no budget/time for dedicated "community" leader yet. :(


windows system

can i use on windows system?

Yes, but you need to modify the path in app.py.This is the screen recording of my attempt to deploy on Windows 10.
https://youtu.be/pahk8rrU6wY


Introduce ErrorT and improved version of (de)serializeWithStatus

Scope & Purpose
Trying to use the inspection code outside of what is ArangoDB code shows that VPack.h currently uses ArangoDB's THROW and other exception facilities.
As a mitigation VPack.h contains numerous variants of deserializeWithStatus which returns the status of deserialisation, but takes a parameter for output.
This seemed a bit awkward to me, so I went on a journey trying to come up with a return type for deserializeWithStatus, which looks suspiciously not entirely unlike ResultT.

I addressed some (most?) of the comments and will run a jenkins now. (That is not to say that I don't welcome more comments!).
@goedderz suggestion of making an Either-like type I like, I will experiment with that in a separate PR. It looks like it will turn out to be just factoring out what currently is StatusT plus an additional template parameter.

Jenkins on this is actually green.


builder gets executed with AnimationStyle.noAnimation

Changed the if-statement nesting, so builder gets executed with AnimationStyle.noAnimation.
https://github.com/flutter/flutter/issues/156959
Pre-launch Checklist

[✅ ] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[ ✅] I read the Tree Hygiene wiki page, which explains my responsibilities.
[ ✅] I read and followed the Flutter Style Guide, including Features we expect every widget to implement.
[ ✅] I signed the CLA.
[ ✅] I listed at least one issue that this PR fixes in the description above.
[ ] I updated/added relevant documentation (doc comments with ///).
[ ] I added new tests to check the change I am making, or this PR is test-exempt.
[ ] I followed the breaking change policy and added Data Driven Fixes where supported.
[✅ ] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

I cant get the cla working. I signed it, updated my git email and made my emailadress on github public. Still a new pr with the updated information failed

It seems like your local git user is not the same

This seemed to be one part of the problem
I opened another pull request with the correct user:
https://github.com/flutter/flutter/pull/156970
Can you give me aditional information, where there was a missmatch on the other pr? This one can be closed

Fixed it here: https://github.com/flutter/flutter/pull/156982


Redesigning the build system

@nicholasjng found an interesting issue here with the current build system, basically because all files including those that are not in the git repo are installed, it can fail the scikit-build-core installation because it hits issues when trying to handle a .DS_Store file. For production this is generally not a problem, but it got me looking at the design choices here and I am confused.

Design requirements
First let's figure out the design requirements for this project:

What installation methods are to be supported? Do they all have to go through the python wheel/sdist, or is it desired to be consumed via find_package/FetchContent?
How is the PyPI package meant to be distributed and consumed? As an sdist only? Compiled wheel with pre-compiled (shared) library files? A noarch wheel (the current option)?
How is the CMake project desired to be consumed, e.g. as a shared/static library, header-only-like project, etc.?

I don't think any of these choices are a requirement, i.e. you could design the build system to support (almost) any combination of those, but it is a question of what the project maintainers want to support and design.
Redesign suggestion
Focusing on the pip install path, I have a few proposals.
Method 1
scikit-build-core has a wheel.cmake option which can be set to false, meaning the only process done is to install the files under wheel.packages are installed. Here is how it can be used:

Move all the files to be installed under src/nanobind folder. This has the advantage of scikit-build-core handling which files to be installed which accounts for .gitignore (also un-committed files maybe?).
Remove the top-level CMakeLists.txt or use it only to generate files like nanobindVersion.cmake or such. If the top-level CMakeLists.txt is removed, set wheel.cmake=false
Add a cmake.prefix entry-point in pyproject.toml and point it to nanobind python package, which should allow it to pick up cmake/nanobind-config.cmake file which would in turn create the necessary CMake targets and functions

This is the least involved method to implement, and should be equivalent with the current design.
Method 2
This is mostly to show other ways that this can be handled. The design for this method is to align more with a CMake project and allow more ways of distribution, e.g. via FetchContent or find_package without Python package metadata and files.

The top-level CMakeLists.txt builds and installs a library target, either as a compiled library or INTERFACE one. CMake's FILE_SET and target_sources should help minimize the files installed and consumed to only the relevant files
Move the python files to a python/nanobind or src/nanobind folder, which could be limited to python packaging distribution, or it could have manual installation instructions to Python_SITEARCH (but I strongly recommend against the manual installation because there is no method of pip remove it)
If pre-compiled library is provided, wheel.platlib might need to be changed
Install the target in CMake native paths like ${CMAKE_INSTALL_INCLUDEDIR}, ${CMAKE_INSTALL_DATADIR}/cmake/nanobind which would be expanded as nanobind/include, nanobind/cmake/nanobind, etc. when combined with wheel.install-dir=nanobind
Add a cmake.prefix entry-point pointing to nanobind python package. CMake internals should handle all the rest from there
Resolve some alignment issues to make the project usable via FetchContent

In either approach the user is unaffected, i.e they would still be able to simply use
find_package(Python 3.8 COMPONENTS Interpreter Development.Module REQUIRED)
find_package(nanobind)
nanobind_add_module(...)

(PS: if the consumer uses scikit-build-core you don't really need the documented execute_process because it populates the CMAKE_PREFIX_PATH with the build's site_packages, but adding cmake.prefix should make it even more robust)

Let me add @joaander and @henryiii who worked on the current build system.
In general, I will say that the current one serves its purpose, so I am not very inclined to make huge disruptive changes.

FWIW FetchContent might work, but it is not the recommended way to use this project. For this, please refer to the documentation.

If CMakeLists.txt is installing files it should not be, then you should modify it:
https://github.com/wjakob/nanobind/blob/b7c4f1abfcab9cc5a8f0ef758926d92ff5eac3a3/CMakeLists.txt#L81-L96
There is no need to redesign the whole build system to solve this problem.

If CMakeLists.txt is installing files it should not be, then you should modify it:
There is no need to redesign the whole build system to solve this problem.

The motivation for the redesign is to avoid having a whack-a-mole situation where one issue is fixed only to uncover another unforeseen edge-case. The presence of the CMakeLists.txt in the top-level would potentially indicate that the system is compiled/generated and/or it can be build+installed outside of the python build-system, but afaics this is not actually the case. Instead the project should be considered to be static installed similar to cython-cmake.
The suggestion of Method1 is in fact very minimal, just re-arranging the project files to better signal the structure of the project, and using more standard CMake conventions such as Use<Pkg>.cmake, Find<Pkg>.cmake.

I hope option (2) as documented in https://nanobind.readthedocs.io/en/latest/building.html#finding-nanobind remains supported.

Of course that can be supported, but I would recommend method 2 in that case in order to support more modern workflows like FetchContent. The documented approach is fragile if multiple dependent projects pull nanobind as submodule, but FetchContent would guard against such an issue, among other advantages.
That is the reason for raising the design requirements question.


ObservableCollection does not work correctly with the controls

If we try to add any control via code using ObservableCollection, we won't get the desired result.
for example:
public ObservableCollection<WPFUI.Controls.Card> TestColl { get; set; } = new ObservableCollection<WPFUI.Controls.Card>();

TestTest.Add(new WPFUI.Controls.Card {Content = "Test"});

The result will be just Test text without any style
Similar behavior can be seen in the Demo > Controls > DataGrid

As you see the checkboxes use the default windows style.
Maybe someone knows why this happens? I have not yet tested other ui libraries, wonder how they handle it.

Quick update.
I checked ModernWPF and adding controls via code works without any problems! I have an assumption that the problem is in the way we connect the library. Modernwpf does this using xmlns 🤨

At the moment, the DataGrid is simply added with the background and basic stuff, I did not go into this control because it requires a thorough redesign. In free time, it will be rewritten

At the moment, the DataGrid is simply added with the background and basic stuff, I did not go into this control because it requires a thorough redesign. In free time, it will be rewritten
Yes, I understand. But I pointed out the CheckBoxes. Any control we add through code will look completely unstyled.

Binding controls seems to just work, DataGrid has own styles for CheckBoxes etc

I think I figured it out, this happens only with ItemsControl, for some unknown reason ItemContainerStyle resets all styles
of all the controls inside... This didn't happen in modernwpf or when using UserControls. But I think I can find a workaround for my case.
As for DataGrid, it's a similar situation. DataGrid should use global styles for controls (like checkbox) provided by the library. But it feels like it's just isolated from other UI elements... I checked DataGrid in modernwpf and the checkboxes are fine. I can replace them with any other control and it will work.

Anyway, thanks for helping me figure out the cause! If I find a way to fix datagrid I will let you know.


set CERTIFICATES_HTML_VIEW to false in mitxonline

Setting this to false disables access to the certificate settings in Studio, preventing course authors from accidentally turning on open edX certificates. Our certificates from mitxonline.mit.edu instead.
What are the relevant tickets?

recently came up in https://github.com/mitodl/hq/issues/5618
some unfinished work from https://github.com/mitodl/hq/issues/1630

Description (What does it do?)

Turns off the certificates UI in studio and hides certificate links from the progress page.

@arslanashraf7 I think you've been bugging me about reverting this setting for some time. Let me know if you think I've done what's needed in https://github.com/mitodl/hq/issues/5618#issuecomment-2377878962

I just confirmed that certificate settings are still available on, for example, https://studio-qa.mitxonline.mit.edu/course/course-v1:MITxT+0.69.2S+3T2023
When I merge this, I expect that will go away.
Similarly, the settings should be unavailable in production when this is deployed, probably on 10/2.


Get request in response

Could it be possible to get the last request in the response of the method call? Same way that SoapClient::__getLastRequest does.
$api->myMethod($data)->then(
   function ($response){
      // get last request
   },
   function (Exception $e){

   }
);

Thanks for the suggestion! I'm not sure I understand the motivation for this feature though :) Can you give some use-cases on how you're planning to use this?
Thanks!
Also, have you seen #14 yet?

After getting the response I need to save the request as raw XML in MongoDB in order to keep the trace when the request was done and if it was a "wrong" request. This way I would have the xml soap body of the request and I could relaunch the request whenever I want from different SOAP clients that do not require the request in PHP format. Thanks!

Thanks for giving some insight :+:
I'm not opposed to getting this in, but given this is an async library, I'm not really sure what a sane interface may look like. The concept of "last" does not really apply here, given there may be multiple concurrent requests at any time.
Can you post a gist (pseudo code) of what your code may look like?

Yes, I understand the asynchrony of the requests.
The next gist shows what I would like to achieve.
https://gist.github.com/franCarmona/d9ecface5a7b40e9117d6f4ab7f43b0f
Thanks :)

You can do something like that:
Furgas/php-soap-react@8afb092452caaf5b7c43d9b2adb6957c37bbc4f4
You don't even need to change the original code, just extend the Client and override the soapCall method. Of course you will also need your own factory for your new client.

Ok, @Furgas . I already did something similar what you did.
Thank you very much!

I'd like to get the next release out and believe this has been answered already, so I'm closing this for now. :shipit:
Please come back with more details if you feel this is still needed and we can reconsider this :+1:


Japanese is not reflected　1.5.1

Japanese is not reflected　1.5.1

I have merged the pull request from you, it should have the Japanese lang fix:
repo: https://github.com/zdm65477730/NX-Activity-Log-Translations
commit-id: ff1e37e33136b8b83cec6a578e20d303d4ff6911

Still not translated into Japanese.
Please test it.


85 document all libraries currently in use

Could you also provide links to the libraries?

why did you close the PR?


update to 0.5.1

Checklist

[x] Used a personal fork of the feedstock to propose changes
[ ] Bumped the build number (if the version is unchanged)
[x] Reset the build number to 0 (if the version changed)
[ ] Re-rendered with the latest conda-smithy (Use the phrase @conda-forge-admin, please rerender in a comment in this PR for automated rerendering)
[ ] Ensured the license file is being packaged.

@conda-forge-admin, please rerender

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.

Hi! This is the friendly automated conda-forge-linting service.
I wanted to let you know that I linted all conda-recipes in your PR (recipe) and found some lint.
Here's what I've got...
For recipe:

requirements: host: setuptools >= 45 should not contain a space between relational operator and the version, i.e. setuptools >=45
requirements: host: setuptools_scm >= 6.3 should not contain a space between relational operator and the version, i.e. setuptools_scm >=6.3

Hi! This is the friendly automated conda-forge-linting service.
I just wanted to let you know that I linted all conda-recipes in your PR (recipe) and found it was in an excellent condition.


comma fix, same as #3375

I'm not sure if maintainers prefer to sync relevant changes from main to 3.1.1-dev and 3.2.0-dev themselves?


Add GraphEdit drag notifications

Context
I am working on a graph based tool and wanted to implement shortcuts to add nodes while I am dragging a node. To increase usability the newly created node should be connected to the current connection and the connection dragging should end.

(I press O and S+T in the gif)
Implementation
I added two new signals connection_drag_begun and connection_drag_ended. Those are called whenever a connection drag starts or ends. connection_drag_begun passes the node, port, and a boolean to determine on which side the port is. As a user, I save node, port and the flag and clear the node when the drag ends. In my shortcut logic, I can spawn a connection with the new node, if the node is not empty. Because the graph node is still in its connection drag mode, you need to end that mode without calling any other signals. With force_connection_drag_end() you can do that.

Example Code
var shortcuts := {}
var from_node_d := ""
var from_slot_d := 0
var from_output_d := false

func _unhandled_key_input(event: InputEventKey):
	if !event.pressed:
		return

	var was_invoked := false

	for shortcut in shortcuts:
		if shortcut.size() != 1:
			continue
		if event.keycode == shortcut[0]:
			if from_node_d.is_empty():
				add_graph_node(shortcuts[shortcut])
			else:
				add_graph_node_and_connection(shortcuts[shortcut], from_output_d, from_node_d, from_slot_d)
			was_invoked = true

	if was_invoked && !from_node_d.is_empty():
		force_connection_drag_end()

func _on_SoundGraph_connection_drag_begun(from, slot, is_output):
	from_node_d = from
	from_slot_d = slot
	from_output_d = is_output

func _on_SoundGraph_connection_drag_ended():
	from_node_d = ""

I have a 3.x version of this change as well (because I use 3.x), which I could PR, too.

There is already a connection_from_empty and connection_to_empty in GraphEdit - does them cannot be used instead introducing a new signals? (I implemented and used them in VisualShaders for the purpose you shown on the gif).

I know and I use them, but I need to know the information before I release the mouse to implement shortcuts, while I drag the connection

Applied changes, ran doctool and rebased. Let's see if CI agrees :)

Thanks!

@HaSa1002 what are you thoughts on renaming to begin instead of began?

I chose "begun" because the signal is emitted when the drag begun. Like a button has a pressed signal.

Oh did I choose begun?  It should have been began. Sry...

Or it could be conntection_drag_started

Oh did I choose begun?  It should have been began. Sry...

I think "begun" is correct, it's the past participle. But "started" might indeed be less troublesome :)

Okay then give me two Ctrl+F and I change it to started


ability to read file partially

hi!
currently the package can only open a stream from the opened position -> end of file
i store indexed blobs on s3 and perform small random reads on them (static database), so for me, it is useful to open a stream and read only say, 1kb out of a 30gb file
i made this change which makes Read() only request up to the size of the byte buffer passed in. I also added tests related to this, and the current tests pass (at least on my computer)
this does mean that current applications which use readAll on a large file, the request will be broken up into many smaller requests. Whether or not this is preferable, it is not for me to say. The previous behavior can be replicated through passing in a byte buffer with a length larger than or equal to the size of the file, something which is known to the user before they have a chance to call read.
i'm currently using a fork of this library for this purpose, would love to be able to switch back. let me know if there is anything else i would need to do to get this in!

hi @fclairamb i saw the activity on this
so i actually stopped work on this branch and wrote a new package combining stuff from this package, another package, and my fork. https://gfx.cafe/open/s3fs/-/blob/master/file.go
more than happy to move a bunch of that work into a new clean fork from your main branch, let me know.


Add a ros controller & interface to publish additional motor info

Ros has the built-in JointStateController that publishes a sensor_msgs/JointState for our joints. This information is populated from a joint state interface(the jointstatecontroller automatically publishes states of ALL jointsstatehandles, and doesn't need a list of resource names from the parameter server like other controllers).
While this is useful, its missing some other information that we should probably report. this include motor voltage, motor duty cycle, and motor current(sometimes we populate this in effort rn which is sort of technically wrong because effort is meant for force in Nm). We should create a ActuatorState msg containing the above, published by a ActuatorStateController that gets populated in our RobotHW in an ActuatorStateInterface.
Possibly another thing we should add to the msg is temperature of the motor, although we don't have any temp sensors on motors rn.
Assigning myself for now. Lemme know if someone else wants to try to tackle this.

This new msg should also be published in the controller state in all of our custom controllers (position drivetrain controller, velocity drivetrain controller)

This new msg should also be published in the controller state in all of our custom controllers (position drivetrain controller, velocity drivetrain controller)


Proc.pid refers to $*PID — but is this true?

The problem
In the documentation for Proc.pid, we say:

Returns the $*PID value of the process if available, or Nil.

The reference to $*PID seems a bit unusual here. If the process is itself a Perl 6 program running in its own separate process from the caller, then it would be true, but in any other case the link to $*PID seems tenuous at best to me.
Is there a reason I'm not seeing for linking this method to the $*PID dynamic variable?
Suggestions
If there is a reason for referring to $*PID, perhaps it should be elaborated upon. But if the sentence,

Returns the process identity value (of the same type as $*PID) of the process if available, or otherwise Nil.

would be an acceptable substitution, I think it would be less confusing.

I don't think there is. Will fix.


Failed: Update autorest version to prerelease 3.0.0-alpha.20240425.7.x

Triggered from pull request: https://github.com/Azure/autorest.csharp/pull/4629

Close in favor of #43678


Add proper support for Argon project files

While Argon has sourcemap support, it will ignore the project file placeIds in multi place workspaces

Changes applied for version 0.3.5


Ridding ourselves of the scourge of merge=union

Because we can't avoid crap like this:
(be sure to expand the collapsed neighboring code)
Original commit:
https://github.com/cfpb/cfgov-refresh/pull/2561/commits/f2d30b454ab78bced29ea200bfff775bdd81869e#diff-4ac32a78649ca5bdd8e0ba38b7006a1eR52
(under the Unreleased section)
How it gets merged:
https://github.com/cfpb/cfgov-refresh/pull/2561/files#diff-4ac32a78649ca5bdd8e0ba38b7006a1eR111
(way down in the 4.1.0 section)
It's just not worth it.
Checklist

[x] Changes are limited to a single goal (no scope creep)
[x] Code can be automatically merged (no conflicts)
[x] Code follows the standards laid out in the front end playbook
[x] Passes all existing automated tests
[x] New functions include new tests
[x] New functions are documented (with a description, list of inputs, and expected output)
[x] Placeholder code is flagged
[x] Visually tested in supported browsers and devices
[x] Project documentation has been updated (including the "Unreleased" section of the CHANGELOG)
[x] Reviewers requested with the Assignee tool :arrow_right:

No idea who the appropriate @cfpb/cfgov-backends or @cfpb/cfgov-frontends to assign is, so I gave it to @willbarton. Feel free to reassign.

👍

:shipit:


Support detecting packages that are not zip entries

Fixes https://github.com/gradle/gradle/issues/18486
Context
Why do you believe many users will benefit from this change?
Because it seems that many intellij-platform plugin developers have ran into the issue.
Intellij Platform packaging has changed since 2021.3,  package  com.intellij.testFramework.fixtures of class BasePlatformTestCase is no longer an zip entry of testFramework.jar , which means plugins developer can not run tests out of the box.
Contributor Checklist

[x] Review Contribution Guidelines
[x] Make sure that all commits are signed off to indicate that you agree to the terms of Developer Certificate of Origin.
[x] Make sure all contributed code can be distributed under the terms of the Apache License 2.0, e.g. the code was written by yourself or the original code is licensed under a license compatible to Apache License 2.0.
[x] Check "Allow edit from maintainers" option in pull request so that additional changes can be pushed by Gradle team
[x] Provide integration tests (under <subproject>/src/integTest) to verify changes from a user perspective
[x] Provide unit tests (under <subproject>/src/test) to verify logic
[x] Update User Guide, DSL Reference, and Javadoc for public-facing changes
[x] Ensure that tests pass sanity check: ./gradlew sanityCheck
[x] Ensure that tests pass locally: ./gradlew <changed-subproject>:quickTest

Gradle Core Team Checklist

[x] Verify design and implementation
[x] Verify test coverage and CI build status
[x] Verify documentation
[x] Recognize contributor in release notes

@bot-gradle test QFL

OK, I've already triggered the following builds for you:

QuickFeedbackLinux build

@bot-gradle test and merge

No milestone for this PR. Please set a milestone and retry.

@bot-gradle test and merge

OK, I've already triggered a build for you.

Pre-tested commit build failed.

@bot-gradle test and merge

Your PR is queued. See the queue page for details.

@bot-gradle

Sorry I don't understand what you said.
Currently, the following commands are supported:
@bot-gradle test <BuildTrigger1> <BuildTrigger2> ... <BuildTriggerN>

A trigger is a special build for this PR on TeamCity, common triggers are:

SanityCheck/CompileAll/QuickFeedbackLinux/QuickFeedback/PullRequestFeedback/ReadyForNightly/ReadyForRelease
Shortcuts: SC/CA/QFL/QF/PRF/RFN/RFR
Specific builds:

PT: PerformanceTest, all performance tests for Ready For Nightly stage.
APT: AllPerformanceTest, all performance tests, including slow performance tests.
AST: AllSmokeTestsPullRequestFeedback
AFT: AllFunctionalTestsPullRequestFeedback
ASB: AllSpecificBuildsPullRequestFeedback
ACC: AllConfigCacheTestsPullRequestFeedback
ACT: AllCrossVersionTestsReadyForNightly
AFTN: AllFunctionalTestsReadyForNightly
ACTR: AllCrossVersionTestsReadyForRelease
AFTR: AllFunctionalTestsReadyForRelease

@bot-gradle test and merge

queues this PR for testing and merges if all tests pass by:

Creating a merge commit from your PR branch HEAD and the target branch
Running a ReadyForNightly build against the merge commit
When it passes, fast-forward the target branch to this merge commit (i.e. merge the PR)

The merge commit is called a pre-tested commit, which means that it fully tests the integration
of your branch HEAD and latest master, instead of only testing your branch HEAD.
@bot-gradle cancel

cancel a running pre-tested commit build or remove it from queue

@bot-gradle clean

clear the conversation history

@bot-gradle help

display this message

To run a command, simply submit a comment.  For detailed instructions see here.

Branch is pushed. For security reason, I've cancelled the pre-tested commit build in queue.

@bot-gradle test and merge

Your PR is queued. See the queue page for details.

OK, I've already triggered a build for you.

Pre-tested commit build failed.

@bot-gradle test and merge

OK, I've already triggered a build for you.

Pre-tested commit build failed.

@bot-gradle test and merge

OK, I've already triggered a build for you.

@bot-gradle cancel

This seems to be a real failure, not flaky: https://builds.gradle.org/viewType.html?buildTypeId=Gradle_Master_Check_Platform_4_bucket30&tab=buildTypeHistoryList&branch_Gradle_Master_Check_Platform_4=pre-test%2Fmaster%2Fcurrent%2Fscaventz%2F18486-package-detecting

OK, I've already cancelled the pre-tested commit build.

This seems to be a real failure, not flaky: https://builds.gradle.org/viewType.html?buildTypeId=Gradle_Master_Check_Platform_4_bucket30&tab=buildTypeHistoryList&branch_Gradle_Master_Check_Platform_4=pre-test%2Fmaster%2Fcurrent%2Fscaventz%2F18486-package-detecting

Yes it is, but I couldn't reproduce it locally and since then I didn't have time to try again. But will take care of it.

@bot-gradle test and merge

OK, I've already triggered a build for you.


Better default partition granularity on BigQuery

On BigQuery we default to 'D' daily partitions. That doesn't really make much sense. We should default to 'M' instead.
We could also think about making this adaptive. If the frontend RDBMS is partitioned on the same column then why not look at the gaps between high values and estimate whether to use 'D', 'M' or 'Y'.

I've decided against making the granularity adaptive for this issue, just get that better default in.


lxc init command doesn't work anymore with java ProcessBuilder

Required information

Distribution: snap
Distribution version: 3.17
Version :

Kernel version: 4.15.0-60-generic
LXC version: 3.17
LXD version: 3.17
Java version: 1.8.0_212
Linux version: Ubuntu 18.04.3 LTS

Issue description
We are facing a bug when we try to use an lxc init command with ProcessBuilder.
For example, when we try to use "lxc init ubuntu:18.04", it will run endlessly without return and without create container.
If we use the command "lxc init ubuntu:18.04" in console, that works perfectly fine.
We didn't have this bug in lxd snap 3.16. What should we do to fix this problem ?
Steps to reproduce

You have to compile this java code :
ProcessBuilder builder = new ProcessBuilder("lxc", "init", "ubuntu:18.04");
builder.inheritIO();
Process process = builder.start();
process.waitFor();

The problem is your standard input (stdin). LXD 3.17 now reads from stdin for YAML data during lxc init and lxc launch.
Your hang is most likely because Java or your application is setting up /dev/stdin to a blocking file, LXD tries to read from it and gets stuck.
You'll want to instead set your stdin to something like /dev/null or the java equivalent.
(Note that this effectively shows a bug in your application as your shouldn't pass a stdin that you don't intend the application you're calling to read at some point, but you got away with it until now as LXD would only read from it and very limited cases prior to 3.17).


Please specify a license

Hi, cool project! I'm impressed with how easy it was to get started with your library.
There's currently no license specified in this codebase. Would you mind adding one? I recommend Apache 2.0 or MIT.

⚡ Thanks!


Reach cameras outside local network with custom port mappings

Description
As described or some other advanced networking, make sure ports 443, 554 and 2020 are opened for camera.
But for my instances there are serveral cameras on the remote site. And need hav to port forward each camera with unique port.
Camera 1 :
Port 2020-mapped to 1985
Port 554-mapped to 555
Port 443-not mapped
Camera 2 :
Port 2020-mapped to 1986
Port 554-mapped to 556
Port 443-not mapped
This works to fetch the cameras with my NVR but not in the addon.
Is this possible?
Reproduction Steps
adding  remote camera
Expected behavior
adding  remote camera with custom port map like ip:port number
If applicable, add error logs.
No response
Device Firmware
we
Integration Version
latest
Using stream component
Yes
Does camera work via official integrations?
Yes
Camera has all attributes filled out in developer tools
Yes
HASS Environment
Docker
Search for similar issues
Yes
Additional information
No response

https://github.com/JurajNyiri/HomeAssistant-Tapo-Control/issues/375


docs: 📚 AppShell templates

Pull Request
📖 Description
This PR adds new templates for our new application shell components to show usage in applications.
🎫 Issues
Closes #316
👩💻 Reviewer Notes

The current version is now based on the current Figma dev variants as seen at https://www.figma.com/file/bZFqk9urD3NlghGUKrkKCR/branch/dwSXnI3fvvqOF9VGg4OpTZ/Synergy-Digital-Design-System?node-id=16081-38188.
I was not able to force a mobile mode in Storybook. It seems you can only adjust the viewport, but not enable touch support. Therefore, the story "Rail Navigation (On Touch-click)" could not be created :(. The mobile rail mode is now available as a mobile story. It shows how to create a mobile version of the rail navigation. However, clicking is still not possible. Also, the width of the story does not match storybook. We would have to configure the storybook views addon to make this work. Maybe we should switch to some sensitive defaults for common device sizes here and in Figma?
The structure for template documentation tokens was wrong, as it used templates.default for the tokens of the form demos. I have adjusted this into templates.contact-form and create templates.application-shell. We have to decide on a text for this. Also, templates.templates is not used in Storybook, I think this is only for Figma. I left it alone without changing it as I do not know what a change there might cause :). Please have a look at the provided _docs.json file in the tokens package and adjust the tokens on Figma side after merging.
🤔 I would also recommend to use english text for the footer, as the rest of the applications navigation items also use english terms. However the current version uses german translations for the footer, as seen in the current version in Figma.
The template in Figma is called "App Shell Templates". I found this to be redundant in Storybook as it resides in "Templates". Therefore, I opted for the name "AppShell".
🤔 Do we want to create automatic tests for these templates? More or less, they are copies from the syn-side-nav stories, so we have to decide. If we create screenshots, should we show the side-nav in its opened state? -> During talking about this with @klaarseSICKAG, we have decided to not screenshot the templates as most of the code is already taken from the <syn-side-bar> stories.

📑 Test Plan

Check the new Storybook stories ad Templates -> AppShell.

✅ DoD

[x] I have tested my changes manually.
[x] I have added automatic tests for my changes (unit- and visual regression tests).
[x] I have updated the project documentation to reflect my changes (e.g. CHANGELOG, Storybook, ...).
[x] I have made sure to follow the projects coding and contribution guides.
[ ] I have made sure that the bundle size has changed appropriately.
[x] I have validated that there are no accessibility errors.
[ ] I have used design tokens instead of fix css values

I just noticed something with our side-nav as I was playing around with the app shell template...
It is not a problem with this branch, but a general problem we have.
When using tab to focus the syn-nav-items in a syn-side-nav we are getting a horizontal scrollbar in the side-nav
And the left and right border of the focus is also not visible:


Portuguese footer translations / links issues

Hi,
This was addressed by Pedro, our Portuguese news contributor:
**Links ( please go to any Land Portal page and scroll down):
-Preguntas Frecuentes ( That's spanish and in Portuguese we say "Perguntas Frequentes");
-"Termos e Condições" and "LandVoc" pages link directly to the homepage and not to the portuguese section of "terms and conditions" and "LandVoc";

Contato conosco is wrong. Should be "Contacte connosco". Also, in that same page we can see "name " and "your message" instead of "nome" and " A sua mensagem".**

Can someone please fix these issues? I prefer not to touch the footer translations and stuff, because it seems quite delicate and everytime I change something, something goes wrong or something disappears or something.
Would prefer the Drupal experts to take this one ;)

yes menu and translations were a bit messed up under the footer landportal part.
I have fixed the links in all 3 languages


update-cluster fails because of EfsIdValidator when existing Efs is used in config file

Required Info:

AWS ParallelCluster version [e.g. 3.1.1]: 3.3.0
Bug description and how to reproduce:

I created a cluster successfully with an existing EFS mount point. The configuration looks like this:
SharedStorage:
  - MountDir: /workspace
    Name: EFSworkspace
    StorageType: Efs
    EfsSettings:
      FileSystemId: fs-xxxxxxxxxxxxxxx

I modified the configuration in other parts (namely the LDAP authentication part), where it was possible to run update-cluster without needing to recreate it. But when I run pcluster update-cluster I get the following validation error:
{
  "configurationValidationErrors": [
    {
      "level": "ERROR",
      "type": "EfsIdValidator",
      "message": "There is an existing Mount Target fsmt-xxxxxxxxxxxxxxx in the Availability Zone eu-west-1a for EFS fs-xxxxxxxxxxxxxxx, but it does not have a security group that allows inbound and outbound rules to support NFS. Please modify the Mount Target's security group, to allow traffic on port 2049."
    },
    {
      "level": "WARNING",
      "type": "EfsIdValidator",
      "message": "There is an existing Mount Target fsmt-xxxxxxxxxxxxxxx in the Availability Zone eu-west-1a for EFS fs-xxxxxxxxxxxxxxx, but it does not have a security group that allows inbound and outbound rules to allow traffic of subnet subnet-xxxxxxxxxxxxxxx. Please modify the Mount Target's security group, to allow traffic on subnet."
    }
  ],
  "message": "Invalid cluster configuration."
}

Hi @matteoacrossi
Thanks for reporting the issue!
Could you share what is in the changeset?
is the security group of the EFS deleted or modify? Could you check the security group associated with the EFS?

Hello @matteoacrossi,
we would like to repro the issue. Can you please report the following:

Full cluster configuration without any credentials or personal data
Describe of the fs-xxxxxxxxxxxxxxx you are using
Arn of the cluster CloudFormation main stack:

I'm not able to reproduce the problem with ParallelCluster 3.4.0.


en_US.UTF8 locale support please

Hi - I am keen to use perl6/docker for development, not just run a script or repl. But.... perl6/raku really could use unicode support such as en_US.UTF8. I have tried appending variants like this in the Dockerfile, but do not have the skills to get it working ;-(. ...
ENV LANG=en_US.UTF-8
RUN apt-get clean \
    && apt-get --yes update \
    && apt-get --yes install locales \
    && echo "LANG=en_US.UTF-8" >> /etc/environment \
    && locale-gen \
    && dpkg-reconfigure locales

Try "C.UTF-8" (it should be included out of the box).

Yep - you got it! tx...


Update repositories.toml

I hope this fits good-first-issue policies

@RJ722 ok I got you, but I still think it is an atomic task, in the sense that breaking it would create more complexity achieving the final task. But thank you for pointing out, I will rewrite the issue.

Hi, Would you please review the issue again ? many thanks 👍

Thanks!


Fail to build spring-music

I'm trying to build spring music using pack and the Cloud Foundry builder image, cloudfoundry/cnb:cflinuxfs3, particularly the digest sha256:524783dddb5f8a3ea2b307a961a0c315ddb1d5db7d0754ad43139bf22ebee9be.
That image contains the org.cloudfoundry.buildsystem buildpack at version v1.2.9.
When I run pack build I get the following output: https://pastebin.com/nXFU3Usk
Error:
[builder] Cloud Foundry Build System Buildpack v1.2.9
[builder]   unable to find built artifact (executable JAR or WAR) in build/libs/*.[jw]ar, candidates: [/workspace/build/libs/spring-music-1.0.jar /workspace/build/libs/workspace-1.0.jar]
[builder] ERROR: failed to build: exit status 103

Somehow two candidates are created and the buildpack does not know how to continue.
It's hard for me to troubleshoot this because I don't know how the workspace.jar is created. I can't recreate it locally. Any ideas on why this is happening?

I just tried this and I don't get that error. Can you confirm that you have the very latest from the upstream Spring Music repo, and share the pack command line you are using?

Yup, building a gif real quick, but I can confirm I'm up-to-date with master.
pack build --builder=cloudfoundry/cnb:cflinuxfs3 -v test

^ the exact command I run with pack v0.8.1 (git sha: e776ebf0096363bbac60771a456af941827316be)

I think I figured out why the eeor is happening. I had already built the app locally, so there was a ./build/libs/spring-music-1.0.jar which I'm guessing was being renamed to workspace.jar
Running ./gradlew clean and then building worked.
However, I think many users will run into this issue. Is this something Gradle is doing that the buildpack can circumvent?

@mattysweeps I apparently haven't been watching this repo and missed this issue.  You're dead on that this was what the problem was (and even came up today in Slack).  The buildpack is oriented towards getting a clean repo (typically via Git checkout) so I'm not sure we want it to exclude this particular file explicitly.  I also can't find any explicit mention of workspace.jar associated with Gradle, so maybe it's something in your IDE or environment specific?


Uploading audio while it's still recording

Hi,
I wonder how I could begin uploading the data while it's still recording? I suppose I'd need to record in small chunks like this:
mediaRecorder.start(1000); // milliseconds per recorded chunk
and then upload on 'dataavailable'.
The header won't be fully formed until it's finished recording, but perhaps I can account for that on nodejs. Or just live without it, given that I am feeding audio files into ffmpeg on the backend anyway. Any suggestions?

I would try the technique that you mentioned where you send data on dataavailable events then you can combine those either on the server or you can stream those to a separate client.
Let me know if you have any issues.


Featrue:同步自动过单和审批

Codecov Report

Merging #141 (c675f14) into v2.6.x_develop (4578a30) will not change coverage.
The diff coverage is n/a.

@@               Coverage Diff               @@
##           v2.6.x_develop     #141   +/-   ##
===============================================
  Coverage           51.22%   51.22%
===============================================
  Files                 693      693
  Lines               36707    36707
===============================================
  Hits                18803    18803
  Misses              17904    17904

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 4578a30...c675f14. Read the comment docs.


Use shell=False when "run" if possible on Windows

Do a where on the command; if it is found, prevent the intermediate COMSPEC and use CreateProcess directly. Only use shell=True if the command is not an executable.
This prevents some unexpected behaviour caused by the intermediate shell process.

Need #2386 first for this to work.

Hm yeah this makes sense to me.

Tested this out locally on windows and it seems good


Limit image pan to window bounds

This will be rev 1.2.1

Looks pretty good to me. Maybe change that UIColor constructor.
Have you thought about improving the README a bit to better explain how this cocoapod works and how it can be used? Would increase thee quality score on Cocoapods.org.


Error while generating flux points, TS Map

I am presently working with the Enrico data analysis suite and although enrico_sed, enrico_xml, and enrico_lc are functioning as expected I run into an error for enrico_tsmap and also when I try to generate flux points with enrico_sed. I am using the latest version of fermi science tools installed with anaconda.
ERROR REPORT
(' Emin = ', 200.0, ' Emax = ', 300000.0, ' Nbins = ', 7)
[Message]: Submitting # 0 at energy 7745
Traceback (most recent call last):
File "/home/parth/Downloads/x/fermi_data_analysis/enrico/bin/enrico_sed", line 53, in
sed(config,infile)
File "/home/parth/Downloads/x/fermi_data_analysis/enrico/bin/enrico_sed", line 13, in sed
run(infile)
File "/home/parth/Downloads/x/fermi_data_analysis/enrico/enrico/RunGTlike.py", line 189, in run
energybin.RunEbin(folder,Nbin,Fit,FitRunner,sedresult)
File "/home/parth/Downloads/x/fermi_data_analysis/enrico/enrico/energybin.py", line 155, in RunEbin
configfiles = PrepareEbin(Fit, FitRunner,sedresult)
File "/home/parth/Downloads/x/fermi_data_analysis/enrico/enrico/energybin.py", line 130, in PrepareEbin
NewFitObject = ChangeModel(comp, ener[ibin], ener[ibin + 1], srcname, Pref[ibin] ,Gamma[ibin])
File "/home/parth/Downloads/x/fermi_data_analysis/enrico/enrico/energybin.py", line 29, in ChangeModel
spectrum.getParam('Index').setFree(0)
File "/home/parth/anaconda2/envs/fermi/lib/python2.7/site-packages/fermitools/pyLikelihood.py", line 3010, in setFree
return _pyLikelihood.Parameter_setFree(self, free)
TypeError: in method 'Parameter_setFree', argument 2 of type 'bool'
The error is the same for both flux points generation and tsmap.  It would be very kind of you if you could suggest a remedy. Thanks in advance.
myanalysis.txt

I think the issue is that up to now Parameter_setFree accepted a 0 as boolean (False). In the new versions of the Fermi Science Tools distributed through conda it actually expects the boolean. I have corrected it in a pull request.


Discussion: are callbacks to withStyles always the best way to obtain the theme?

This question occurred to me while thinking about #9192, and I'll repost part of my comment there:
If one is not developing reusable MUI components, but instead making an app, is there any advantage to using withStyles with a callback, vs. exporting your theme from a module and then importing it everywhere that you want to use it? For example,
// src/theme.ts

import createMuiTheme from 'material-ui/styles/createMuiTheme';
import { red, purple } from 'material-ui/colors';

export default createMuiTheme({
  palette: {
    primary: red,
    secondary: purple,
  },
});

// src/index.tsx

import * as React from 'react';
import App from './App';
import theme from './theme';

ReactDOM.render(
  <MuiThemeProvider theme={theme}>
    <App />
  </MuiThemeProvider>,
  document.getElementById('root')
);

// src/component.ts

import * as React from 'react';
import { withStyles } from 'material-ui/styles';
import theme from './theme';

export default withStyles({
  root: {
    margin: theme.spacing.unit * 3,
  },
})(...);

This is particularly relevant to TypeScript for 2 reasons:

it seems impossible to solve #9192 in a well-typed way with the callback approach
callbacks interfere with type inference because of this TypeScript issue. If you look through the material-ui issue tracker you'll find that this has been the source of all kinds of confusion. The workaround, which is not obvious at all, requires annotating withStyles with a union of all your class keys, e.g. withStyles<'root'|  | 'docked' | 'paper' | 'modal'>(/* ... */). Various complex solutions have been proposed for this, notably #8829 and #9105.

Simply exporting a global theme and then importing it where you need it rather than using callbacks everywhere magically makes all these problems melt away.
It seems like the advantage of using a callback is that it makes your components more modular; you can ship them as a library and others can use them within any MuiThemeProvider. But in many cases people aren't making reusable libraries, they're making an app, in which case it seems like it's fine to just reference a global theme.

Building an app here. So no need for withStyles with callback.

I don't agree, mostly due to the following missing feature #7633 (passing props as a parameter to the callback).
Having a callback with the props of the component as arguments is something that will definitely enhance the readability of styling of components. As of right now, this is not yet the case, so the workaround is to make use of inline styling. Which is not the best solution, as we miss out on all the great jss plugin features such as auto-prefixer for example.

@TheHolyWaffle I agree that it would be useful to use callbacks for making use of props in styles... this discussion is specifically about the need for callbacks to obtain the theme.

@TheHolyWaffle I guess this is a bit off topic, but anyway 🙂  The API your're describing is what styled-components, glamorous and emotion are doing. AFAIK jss decided to it differently.
Basically, you create all CSS classes beforehand and apply them later on based on props via helpers like classnames. Here is an example from the <Button>:
https://github.com/mui-org/material-ui/blob/v1-beta/src/Button/Button.js#L252-L268

@pelotom Had the same discussion at my company multiple times. If you're only consuming MUI standard components, there is no downside of your mentioned approach. At least none I can think off. If is only relevant for "3rd party" MUI components, like https://github.com/dmtrKovalenko/material-ui-pickers.

I'm still getting my bearings with typescript, but I wanted to add that we have a few libraries that use withStyles (just like the mui uses it), then a composite app that uses those libraries and mui.  Any contemplated solution should allow for a similar pattern of use.
For example, our link component:
import * as React from 'react'
import * as classNames from 'classnames'
import { withStyles } from '@alienfast/material-ui/styles'
import { Link as RouteLink } from 'found'
import { compose } from 'recompose'
import { Theme } from '@alienfast/material-ui/styles'
import { StandardProps } from '@alienfast/material-ui'

const styles = (theme: Theme) => {
  const { palette } = theme
  const { color: captionColor, ...captionWithoutColor } = theme.typography.caption
  return {
    root: {
      color: 'inherit',
      textDecoration: 'none',
      '&:hover': {
        textDecoration: 'underline',
      },
    },
    primary: {
      color: palette.primary[500],
    },
    accent: {
      color: palette.secondary.A400,
    },
    contrast: {
      color: palette.getContrastText(palette.primary[500]),
    },
    dense: {
      ...captionWithoutColor,
    },
    hint: {
      color: theme.palette.text.hint,
    },
    caption: {
      color: captionColor,
    },
  }
}

interface Props
  extends StandardProps<
      React.AnchorHTMLAttributes<HTMLAnchorElement>,
      'root' | 'primary' | 'accent' | 'contrast' | 'dense' | 'hint' | 'caption'
    > {
  to?: string
  children: React.ReactNode
  accent?: boolean
  primary?: boolean
  contrast?: boolean
  dense?: boolean
  caption?: boolean
  hint?: boolean
}

const Link = (props: Props) => {
  const {
    classes,
    className: classNameProp,
    children,
    accent,
    caption,
    dense,
    hint,
    href = '#',
    to,
    primary,
    contrast,
    ...rest,
  } = props

  const className = classNames(
    {
      [classes.dense]: dense,
      [classes.accent]: accent,
      [classes.caption]: caption,
      [classes.hint]: hint,
      [classes.primary]: primary,
      [classes.contrast]: contrast,
    },
    classes.root,
    classNameProp,
  )

  if (to) {
    return (
      <RouteLink to={to} className={className} {...rest}>
        {children}
      </RouteLink>
    )
  }

  // links must have an href.
  // @see https://github.com/teampoltergeist/poltergeist/issues/836#issuecomment-267379027
  return (

      {children}

  )
}

export default compose(withStyles(styles, { name: 'ui-Link' }))(Link)

Are you suggesting that the theme: Theme callback would no longer be accessible in this manner?

Are you suggesting that the theme: Theme properties in the callback would no longer be accessible in this manner?

Not at all! I'm not actually suggesting anything should change about the library... if you're developing a reusable library of components, which it looks like this is an example of, then the callback method definitely seems necessary.

FYI - so searchers may easier find this issue.
I ran into this with a stateless functional component (gist):
Error:(9, 3) TS2345:Argument of type '({ palette, shadows, transitions }: { direction: "ltr" | "rtl"; palette: Palette; typography: Typ...' is not assignable to parameter of type 'Record<"root" | "scrolled" | "avatar" | "content" | "contentSecondary", Partial<CSSProperties>> |...'.
  Type '({ palette, shadows, transitions }: { direction: "ltr" | "rtl"; palette: Palette; typography: Typ...' is not assignable to type 'StyleRulesCallback<"root" | "scrolled" | "avatar" | "content" | "contentSecondary">'.
    Type '{ root: { display: string; overflow: string; zIndex: number; backgroundColor: string; transition:...' is not assignable to type 'Record<"root" | "scrolled" | "avatar" | "content" | "contentSecondary", Partial<CSSProperties>>'.
      Types of property 'root' are incompatible.
        Type '{ display: string; overflow: string; zIndex: number; backgroundColor: string; transition: string; }' is not assignable to type 'Partial<CSSProperties>'.
          Types of property 'overflow' are incompatible.
            Type 'string' is not assignable to type '"initial" | "inherit" | "unset" | "auto" | "scroll" | "hidden" | "visible" | undefined'.

which implies the inference failure.  The fix being declaring an explicit ClassKey and parameterizing my call to withStyles
type ClassKey = 'root' | 'scrolled' | 'avatar' | 'content' | 'contentSecondary'

const decorate = withStyles<ClassKey>(

Thanks for the guidance @pelotom

@rosskevin / @pelotom Would this be worth adding to the docs (Typescript guide)?

@mbrookes yes, I'll try to add something when I get a chance.

#7633 starts to be referenced by a lot of people. I will see if I can make it happen. As it was linked here. I'm eager to know if we can improve the DX and the performance with such feature.

is there any advantage to using withStyles with a callback, vs. exporting your theme from a module and then importing it everywhere that you want to use it?

@pelotom At work, we have been relying on the theme callback for most of our styles. The rationale is simple. We are lazy. We find it simpler to add one argument than to add one import.
Ok, it's not the best argument 🤔 . If you don't need the live theme update, or the theme nesting feature (I don't, and most people don't), then yes, you can do what you prefer :).

At work, we have been relying on the theme callback for most of our styles. The rationale is simple. We are lazy. We find it simpler to add one argument than to add one import.

I'm lazy too! In TypeScript, it auto-imports when you start to type theme 🙂

In that case, that we don't pass the theme via the context,
i would take that one step forward.
Another issue with TS and withStyles, is that, withStyles returns a component that expects classes prop ts-wise, even tho withStyles supply it. (ts current limitation)
What about:
export default function withStyles<ClassKey extends string>(
  style: StyleRules<ClassKey> | StyleRulesCallback<ClassKey>,
  options?: WithStylesOptions
):
(
  classes: WithStyles<ClassKey>
) => React.ComponentType
;

withStyles({root:...})((classes) => {
  return function MyComponent() {
    return
MyComponent

  }
})

// or
withStyles({root:...}, (classes) => {
  return function MyComponent() {
    return
MyComponent

  }
})

Or, why not just:
const classes = withStyles({root:...});

Great questions... I've never really understood the need for the indirection of passing classes through the props. What do you think @oliviertassinari?
Another option that has been discussed is render props.

A render callback component (I prefer using children as a function, not an unnecessarily verbose extra render prop) is something we should convert WithStyles to. We can then offer an additional HOC easily that simply calls the render callback component.
I recently switched my patterns to render callbacks, and while it has been great and works for most, it doesn't always work best for every scenario. Nonetheless I believe the render callback component should have the implementation, with the hoc being a convenience wrapper. react-i18next is a good example of this.

Yeah, I'm a big fan of using children as a render prop. Are you thinking something like
class MyComponent extends React.Component<Props> {
  render() {
    return (
      <WithStyles styles={styles}>
        {classes =>
          <...>
        }
      </WithStyles>
    )
  }
}

?

Yes, where current args styles and options are props on WithStyles.  I haven't though much about the WithStyles name, open to other ideas.

This gives a natural way to accomplish a feature many have been asking for: styles that depend on props. Just move the definition of styles inside the component.
class MyComponent extends React.Component<Props> {
  render() {
    return (

    )
  }

  styles = {
    // ... can depend on `this.props`
  }
}

I agree with using Styled plus keeping withStyles name for the HOC.

Another thing about reusing theme, do you think this is good practice:

export const theme = createMuiTheme({
  palette: {
    primary: blue,
  },
  card: { // my custom reusable classes
    header: {
      background: '...',
      // ...
    },
    progress: {
      height: 64,
      // ...
    }
  }
});

then in my components:
const styles = ({ card: { header, progress }, palette }) => ({
  header,
  progress,
  otherProp: {
    color: palette.primary[600],
    // ...
  }
});

export default withStyles(styles)(Component)


don't install multiple versions of postgres

@benrudolph not sure if this is the right thing to do or not.
however as it currently works it installs both 9.4 and 9.1 and then fails trying to start them both up because there's a port conflict.

Good catch

The idea is to only install one but be able to install a different version on the same machine if necessary


Updated CONTRIBUTING.md from yarn to pnpm

What is it?

[ ] Feature / enhancement
[ ] Bug
[ ] Docs / tests

Description
Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.
Use cases and why

One use case

Another use case

Checklist:

[ ] My code follows the developer guidelines of this project
[ ] I have performed a self-review of my own code
[ ] I have made corresponding changes to the documentation
[ ] Added new tests to cover the fix / functionality

Thanks @the-r3aper7 !
Can you please fix the linting issue?
Then we could merge it


Docusaurus build failing

Bug Report
Hello ODP! I submitted a PR to fix some formatting issues on odp.finos.org earlier today and while it was able to be merged by @maoo , I keep getting this error on the website build which I am unable to fix.
I'd very much appreciate your help with this, and happy to provide more context if needed.
Thanks,
Aitana

Hey @aitana16, i tried building this locally, but i do not see this error when running "npm run-script build", which itself calls "docusaurus build".
I'm wondering if you have tried this locally, or could this be a CI issue only?

TY @adamj-codethink for helping out! It works for me too locally, but for some reason, Aitana's actions don't work on her fork. Did you try to fork out this repo, enable the GitHub Actions and tried to update some docs/*.md file? Does the action fail for you?

Dup of #181, closing this one.


fix: remove duplication in Makefile

I created some duplication in Makefile. I'm sorry ..

That's okay @maigl . May this be the worst thing to happen today and we can call it a great day.


code

Describe your bug here.
i try ed to bulid the engine but this code says it wong
64bit is not automatically supported for this version of VC. Set HXCPP_MSVC_CUSTOM and manually configure the executable, library and include paths
Error: Error: 64bit is not automatically supported for this version of VC. Set HXCPP_MSVC_CUSTOM and manually configure the executable, library and include paths
what did i do wong??
Command Prompt/Terminal logs (if existing)
No response
Are you modding a build from source or with Lua?
Lua
What is your build target?
Windows
Did you edit anything in this build? If so, mention or summarize your changes.
no

here


Update of.ts

Remove deprecation warning for valid use of of

Actually, the more I think about it, we probably just need to switch the order of the overloads but keep the deprecation in for the of<T>(t: T) case. That way folks doing of(new Foo()) won't get a deprecation warning but doing of<Foo|null>(null) would warn, which is what we really want.

...switch the order of the overloads but keep the deprecation...

Yeah. I agree. Might as well move both of the deprecated signatures so that they follow the rest-parameter signature. They'll only be matched if an explicit type argument is specified.

Done, I wish there was a way to add a test for this. The closest I can do is mock the state here and link to a playground where it works
declare function of(): 'OK';
declare function of<A extends Array<any>>(...args: A): 'OK';
declare function of<T>(): 'deprecated';
declare function of<T>(value: T): 'deprecated';

of() === 'OK';
of(1) === 'OK';
of(1, 'test') === 'OK';
of<number>() === 'deprecated';
of<number>(1) === 'deprecated';

of() === 'deprecated'; // sanity check, this line is a type error.

...Although, could that break anyone doing of<string[]>(["foo", "bar"]) as it will match the rest-parameter signature? Does that matter?

of<string[]>(["foo", "bar"]) === 'deprecated' in the example above which is what we're after, they would need to do of<string[][]>(["foo", "bar"]) === 'OK'. I'm good with that tradeoff

... I wish there was a way to add a test for this ...

Yeah. I'm inclined to look into adding another assertion to dtslint. I guess it should be possible to add $ExpectDeprecation. If it's not too hard, I think we should look into it before the v7 release.

This PR may not be ready due to https://github.com/microsoft/TypeScript/issues/33597
We may need to keep the original order and just remove the deprecation warning for of<T>(t: T)

@kolodny @benlesh Looking at this again, I'm not sure why we even need ValueFromArray. In of, it's always going to be an array and the ValueFromArray type is not used elsewhere. I think the signature should be:
export function of<T>(...args: T[]): Observable<T>;

And all of the other signatures can be re-ordered and deprecated.
Regarding https://github.com/microsoft/TypeScript/issues/33597, if this signature is used the behaviour won't be a problem with of and AFAICT it won't be a problem elsewhere as the widening only happens with literal types (and elsewhere we are are dealing with observable inputs, etc. and not literal types).

I believe this PR is ready to go. This will be a slight breaking change to folks doing

interface MyAction {
  type: 'Action1' | 'Action2'
}

// Error: Type 'string' is not assignable to type '"Action1" | "Action2"'.
const ob$: Observable<MyAction> = of({type: 'Action1'});

But other than that, there shouldn't be much impact. This issue only affected 30 out of ~100k targets within Google

I believe this PR is ready to go.

Given that TS doesn't behave particularly nicely with rest parameters and literals, I'm not convinced that we should strive to remove the overload signatures for of. Particularly, as there is no scheduler-related shenanigans here. I think a handful of non-deprecated, fixed-argument overloads followed by a rest-parameter overload to catch everything else would be a better way to go.
E.g.
export function of(): Observable<never>;
export function of<T>(): Observable<T>;
export function of<T>(value: T): Observable<T>;
export function of<T1, T2>(value1: T1, value2: T2): Observable<T1 | T2>;
// maybe up to T3?
export function of<A extends Array<any>>(...args: A): Observable<ValueFromArray<A>>;

This seems a small price to pay to get it to work properly in 95% of case - and there are only a few RxJS functions that take values like this. IMO, the TS behaviour is not going to change anytime soon.
@benlesh

I'm OK with that, however I'd suggest we get creative with overloads to make the deprecated usage of of<number>(1) properly warn the user by doing something like this:
declare function of<_T, T extends _T>(t: T): 'OK';
declare function of<T>(t: T): 'deprecated';

const ok = of(1);
ok; // 'OK'

const deprecated = of<number>(1);
deprecated; // 'deprecated'

Thoughts?

Thoughts?

I'd prefer to leave it to a lint rule. Shenanigans with type parameters that don't directly relate to actual parameters makes me a little nervous.

Done, we should probably have a story around moving folks away from of<number>(1) though, but that's out of scope for this PR

... we should probably have a story around moving folks away from of<number>(1)

Sure. I have an item in my TODO list - from a discussion with @JWO719 - about creating an issue to deal with brining the RxJS linting rules into this repo. I'll make a note that another issue - relating to recommended rules, etc. - should reference this issue.


Pause menu is unfriendly, at least on phones

On Android, from F-Droid.
I paused the game so I could make the other github issue I made, but it did not pause the timer, and it has no way to return to the game without teleporting somewhere, making pausing effectively a fail-state.

Right now this is intentional - one has to complete sections in one go without interruption. I may want to relax this on mobile though, but not sure yet.

Hmm, perhaps that needs to be communicated somehow, then. I kind of assumed, had I been playing on PC, maybe the Esc key would have gone back to the game, like just an oversight. But if it's intentional, then just something to flag this to the player (words or otherwise) might be a better way to go?

I had assumed that the timer still counting makes it clear that the menu is
part of the actual game and not just a pause.
Maybe while the menu is open, the background from the previous game screen
could blur more and more to better represent that this state is lost?
On Sun, Sep 4, 2022, 00:20 Albey Amakiir @.***> wrote:

Hmm, perhaps that needs to be communicated somehow, then. I kind of
assumed, had I been playing on PC, maybe the Esc key would have gone back
to the game, like just an oversight. But if it's intentional, then just
something to flag this to the player (words or otherwise) might be a better
way to go?
—
Reply to this email directly, view it on GitHub
https://github.com/divVerent/aaaaxy/issues/26#issuecomment-1236256611,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAB5NMF4Z26DOJI3T2JO6WDV4QPPRANCNFSM6AAAAAAQBPG2LU
.
You are receiving this because you commented.Message ID:
@.***>

To be very clear - I actually have code ready for a proper pause (where esc
in the menu goes back to the game, and I could also add an option for it).
This, however, would allow for pausebuffering, which I absolutely do not
want to be possible.
However, there obviously are exploits that make pause buffering possible
anyway. On mobile one can usually do it by app switching, and on desktop
one maybe can't do thus well with signals, but alt-tabbing will usually
work.
These have in common though that they are rather inconvenient and slow,
which is good enough; so I wonder if I should allow resuming but e.g. have
a mandatory countdown of 10 seconds when doing so.
Alternatively, maybe I should just put a text in the game that "there is no
pause"?
On Sun, Sep 4, 2022, 07:28 Rudolf Polzer @.***> wrote:

I had assumed that the timer still counting makes it clear that the menu
is part of the actual game and not just a pause.
Maybe while the menu is open, the background from the previous game screen
could blur more and more to better represent that this state is lost?
On Sun, Sep 4, 2022, 00:20 Albey Amakiir @.***> wrote:

Hmm, perhaps that needs to be communicated somehow, then. I kind of
assumed, had I been playing on PC, maybe the Esc key would have gone back
to the game, like just an oversight. But if it's intentional, then just
something to flag this to the player (words or otherwise) might be a better
way to go?
—
Reply to this email directly, view it on GitHub
https://github.com/divVerent/aaaaxy/issues/26#issuecomment-1236256611,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAB5NMF4Z26DOJI3T2JO6WDV4QPPRANCNFSM6AAAAAAQBPG2LU
.
You are receiving this because you commented.Message ID:
@.***>

I had assumed that the timer still counting makes it clear that the menu is
part of the actual game and not just a pause.
Maybe while the menu is open, the background from the previous game screen
could blur more and more to better represent that this state is lost?

The timer can imply the menu is part of the game, but does not communicate that it's destructive to the state of the game. That's the important bit. Most players assume pausing is a safe action. Not sure blurring would be enough for most cases, because that's simply a visual filter over a room and game state that seems to still exist. A lot of pause screens do that and allow return. I've got some other ideas at the end.

This, however, would allow for pausebuffering, which I absolutely do not
want to be possible.

This is an aside, but, really? Why? It's a single player game, and pause buffering requires a fair amount of skill to actually take any advantage of. Lower-skilled players won't even be capable of it, but everyone will be affected by efforts to prevent the exploit. And what is being protected? The timer? Most players won't care about that anyway. Effectively, are exploits in a few playthroughs enough of a problem to make every playthrough suffer extra hurdles?
There will always be exploits, anyway.
Perhaps, as you say, having an option between the timed, pause-less mode and an untimed mode.
Still, if you want to keep it as is, there are many ways to communicate it. One idea may be that, when you pause, the character has some animation where they clearly disappear from the world when you pause, or the world blacks out around the player (like the disappear except from the player's perspective), or something like that. Another is to take a leaf from Antichamber and put the map, or even the pause menu itself, in its own in-game room the player teleports to. A third is to make it so the menu doesn't pause the game in the first place. Eg. if you're mid-air and pause, you keep falling. That would even give an additional clear reason the timer doesn't pause.
Of course, another option is to not bother changing anything. It's a free game, so its not like it needs to be smooth. :P

Alternatively, maybe I should just put a text in the game that "there is no
pause"?

If you went the text route, I'd prolly tell them that the menu button takes them out of the game, or enters teleport mode, or sends them to the map, something like that. As you say, the timer tells them the game doesn't "pause" so much. It's the lack of being able to "unpause" that needs communication. Still, for some reason, players don't read very much. So maybe one of the other approaches would be more reliable.

Hm...
one other issue is, once I allow pausing and resuming, I have to allow it
reliably. On Android this requires basically allowing save states
anywhere in the game.
Not only do I not want to implement those, if they exist, they could make
the game even more TASy. I do not quite like that.
Now an animation for the player to fade out when entering the menu - that
actually sounds good and also simple to do; maybe too subtle, but would
bring across that entering the menu loses the current state from
checkpoint. And given users will likely have seen that many times before
they are in a long section (there are four multi-room sections without
checkpoints before each room in the game), they will have understood the
consequences of going to the menu by then.
On Sun, Sep 4, 2022, 23:04 Albey Amakiir @.***> wrote:

I had assumed that the timer still counting makes it clear that the menu is
part of the actual game and not just a pause.
Maybe while the menu is open, the background from the previous game screen
could blur more and more to better represent that this state is lost?
The timer can imply the menu is part of the game, but does not communicate
that it's destructive to the state of the game. That's the important bit.
Most players assume pausing is a safe action. Not sure blurring would be
enough for most cases, because that's simply a visual filter over a room
and game state that seems to still exist. A lot of pause screens do that
and allow return. I've got some other ideas at the end.
This, however, would allow for pausebuffering, which I absolutely do not
want to be possible.
This is an aside, but, really? Why? It's a single player game, and pause
buffering requires a fair amount of skill to actually take any advantage
of. Lower-skilled players won't even be capable of it, but everyone will
be affected by efforts to prevent the exploit. And what is being protected?
The timer? Most players won't care about that anyway. Effectively, are
exploits in a few playthroughs enough of a problem to make every
playthrough suffer extra hurdles?
There will always be exploits, anyway.
Perhaps, as you say, having an option between the timed, pause-less mode
and an untimed mode.
Still, if you want to keep it as is, there are many ways to communicate
it. One idea may be that, when you pause, the character has some animation
where they clearly disappear from the world when you pause, or the world
blacks out around the player (like the disappear except from the player's
perspective), or something like that. Another is to take a leaf from
Antichamber and put the map, or even the pause menu itself, in its own
in-game room the player teleports to. A third is to make it so the menu
doesn't pause the game in the first place. Eg. if you're mid-air and pause,
you keep falling. That would even give an additional clear reason the timer
doesn't pause.
Of course, another option is to not bother changing anything. It's a free
game, so its not like it needs to be smooth. :P
Alternatively, maybe I should just put a text in the game that "there is no
pause"?
If you went the text route, I'd prolly tell them that the menu button
takes them out of the game, or enters teleport mode, or sends them to the
map, something like that. As you say, the timer tells them the game doesn't
"pause" so much. It's the lack of being able to "unpause" that needs
communication. Still, for some reason, players don't read very much. So
maybe one of the other approaches would be more reliable.
—
Reply to this email directly, view it on GitHub
https://github.com/divVerent/aaaaxy/issues/26#issuecomment-1236499463,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAB5NMEX7LTLI3SAL6G5MC3V4VPL7ANCNFSM6AAAAAAQBPG2LU
.
You are receiving this because you commented.Message ID:
@.***>

Got a good looking effect done for this.


Update CI GH Action to auto-publish to PyPI

Add GH Action workflow to auto-upload to PyPI when a release is made.
DONE ~Note that this will not work until a PyPI token has been set as an environment secret for the Action, with the name PYPI_API_TOKEN~

@pmac @robhudson This one is also now ready for review and can be merged. Cheers!


Do you have python3 version？

I want to use it in windows and python3 , do you have this version? very thanks!

@youshenjun I use it in windows and python3, it's OK. You need modify the path of InputDir and OutputDir, and mkdir the object dir in outputdir

OK, I run it successfully,thanks a lot.


Modal Component: Native component for "RCTModalHostView" does not exist

Hi, it looks the native modal component is not done yet. Is it something planned to be developed?

Eventually, yes it is. But there are also huge TODO-list of other features. Do you have a real use case for it, could you describe?

Fixed in https://github.com/ptmt/react-native-desktop/commit/a1ba40e00b06e0720abcd323b2e42dcf830c2ab5
Please, check it out. It's a bit different from mobile implementation, though.

@ptmt it looks v0.8.7 not published yet.

Published now.
On Tue, 28 Jun 2016 at 08:19 Jhen-Jie Hong<EMAIL_ADDRESS>wrote:

@ptmt https://github.com/ptmt it looks
https://www.npmjs.com/package/react-native-desktop v0.8.7 not published
yet.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/ptmt/react-native-desktop/issues/89#issuecomment-228950914,
or mute the thread
https://github.com/notifications/unsubscribe/AA9SU6-VTsQx5tUyw1n5jp7MY8MZoGEQks5qQK71gaJpZM4IsfkY
.


Handling JWT - Authentication

Title of ticket:
Description
This task will implement JWT tokens on API , which is passed from Front end. Based on the token, roles further steps will be done, Say, authorization,  storing auditing(updated by, created by) info to DB. API updates can
Dependencies
Are there any dependencies?
DOD

[x] Handle JWT Tokens
[x] Validate and Authenticate Token
[ ] Unit tests

Re-estimated to 5 .

Leverages flask-jwt-oidc for authentication.


NML 1682 - First implementation of PoET consensus module with new architecture

This puts a stake in the ground with respect to the PoET consensus module in the new and improved architecture.  Specifically it:

Uses pre-canned sealed signup information for the genesis block until the genesis utility seeds the chain with signup information for the initial validator
Each validator creates signup information and registers it with the validator registry.  This is done every time the validator starts up.  Once consensus state is implemented, the sealed signup data will be persisted across invocations so that a validator may reconstitute the PoET enclave.
Creates wait timers and wait certificates appropriately during initialize_block and finalize_block, respectively.
The block verifier will automatically allow blocks to pass until there is at least one validator in the validator registry.  This will remain in effect until the genesis utility seeds the genesis block with the initial validator signup information.
The block verifier currently ignores the wait certificate's check_valid results because of a race condition in the updating of the block chain resulting in incorrect local means being calculated for the wait timers (and therefore resulting wait certificates).
A PoET enclave factory was added because the consensus object is no longer long-lived and need a way to implement singleton pattern for PoET enclaves as there should ever only be one running and it should not be continuously shut down and brought up.
All PoET objects (SignupInfo, WaitTimer, and WaitCertificate) have been updated to accept a PoET enclave module for all methods that need it instead of keeping a class variable.

This version does not:

Do proper fork resolution - it always just chooses the fork with the chain head with the highest block number.
Implement the C, K, and zTest policies as that requires that consensus state be implemented.

To test, start up both the config and validator registry transaction processors (assuming starting in sawtooth-core):
./bin/tp_config -v tcp://localhost:40000
./bin/tp_validator_registry -v tcp://localhost:40000
Create a configuration transaction to set the consensus algorithm to PoET, create the genesis block, and start the validator:
rm ~/sawtooth/data/*
./bin/sawtooth keygen
./bin/sawtooth config set -k <key_file_just_created> sawtooth.consensus.algorithm=poet sawtooth.poet.target_wait_time=5 sawtooth.poet.minimum_wait_time=1
./bin/sawtooth admin genesis config.batch
./bin/validator -vv

Rebase

Removed old PoET consensus files.

PR updated with (most) requested changes.


Update Get-DynamicDistributionGroupMember.md

Docs Build status updates of commit 7b3c9d6:
:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

exchange/exchange-ps/exchange/Get-DynamicDistributionGroupMember.md
:white_check_mark:Succeeded
View (exchange-ps)

For more details, please refer to the build report.
Note: Broken links written as relative paths are included in the above build report. For broken links written as absolute paths or external URLs, see the broken link report.
For any questions, please:Try searching the docs.microsoft.com contributor guidesPost your question in the Docs support channel


Problem with PPP + GSM MUX with SIMCOM7600E

Describe the bug
I am trying out the GSM PPP driver and GSM MUX with two SIMCOM modems:
SIM868 and SIM7600E.
It works as a charm on SIM868 but I am having problems with SIM7600E.
When just using MODEM_GSM_PPP=y and GSM_MUX=n it works fine
When enabling GSM_MUX, AT commands works fine and I can run ping in parallel, so network connectivity works to some extent...
My problem is when I start something more demanding on PPP (such as a lwm2m client, or a dns-lookup) the modem halts and then reboots. The same thing happens even if I do not use any AT commands in parallel with the client.
When dumping the logs I do not see anything that is obviously wrong.
Is there anyone here who have experience with the GSM MUX and can advise on how to debug this issue?
I have been in contact with the modem vendor and they claim muxing should work in general.
To Reproduce
Steps to reproduce the behavior:
Use the LWM2M client sample code
This is the prj.conf I used:
CONFIG_NET_SHELL=y
CONFIG_LOG=y
CONFIG_CONSOLE=y
CONFIG_LOG_DEFAULT_LEVEL=4
CONFIG_LWM2M_LOG_LEVEL_DBG=y
CONFIG_NET_LOG=y

CONFIG_NET_IPV6=n
CONFIG_NET_CONFIG_NEED_IPV4=y
CONFIG_NET_CONNECTION_MANAGER=y
CONFIG_NETWORKING=y

CONFIG_LWM2M=y

CONFIG_MODEM=y
CONFIG_NET_PPP=y
CONFIG_NET_L2_PPP=y
CONFIG_NET_L2_PPP_OPTION_MRU_NEG=y
CONFIG_MODEM_GSM_PPP=y
CONFIG_MODEM_GSM_UART_NAME="UART_1"
CONFIG_MODEM_GSM_APN="m2m.tele2.com"
CONFIG_DEVICE_POWER_MANAGEMENT=y

CONFIG_GSM_MUX=y
CONFIG_MODEM_GSM_SIMCOM=y
CONFIG_MAIN_STACK_SIZE=2048

Impact
This is a showstopper for my client
Logs and console output
I do not see anything in the logs that looks out of the ordinary. Would appreciate tips on what data to look for.
Environment (please complete the following information):

OS: Linux, MacOS
Toolchain: arm-none-eabi
Commits: - name: zephyr
   remote: upstream
   path: zephyr
   revision: 98bcc51b0925a92db28f127d08b842b1d609bce8
   clone-depth: 10
   west-commands: scripts/west-commands.yml

 - name: hal_nordic
   revision: 00580f43b9d48f2079d611ce12f0fbc78d3040f1
   path: modules/hal/nordic

 - name: cmsis
   revision: 542b2296e6d515b265e25c6b7208e8fea3014f90
   path: modules/hal/cmsis

 - name: segger
   revision: 6fcf61606d6012d2c44129edc033f59331e268bc
   path: modules/debug/segger

Did you try #26671? It might help.

Yes I did try your PR @mniestroj sadly it did not help.

This can be very difficult to debug as typically the modems are just black boxes that do not tell why they fail. I spent countless hours debugging the muxing with simcom808 modem.

Do you have any suggestions as to how I can verify that the Zephyr code is working as it should?
I have been trying to sniff the UART and analyze the code with Wireshark but I only get garbish (even with the SIM868 which works fine)

One thing to check is to make sure that the muxing channel is correctly set. Different modems might use different channel number for PPP and AT channels. See CONFIG_GSM_MUX_DLCI_AT and CONFIG_GSM_MUX_DLCI_PPP options.

I have been trying to sniff the UART and analyze it with Wireshark but I only get garbish (even with the SIM868 which works fine)

It is a bit surprising that Wireshark is not able to decode the muxing, usually it is handling all the protocols that I have thrown into it.
You can enable more debugging, for example CONFIG_GSM_MUX_LOG_LEVEL_DBG=y might give usable information,

You probably know this but just in case, the https://simcom.ee/documents/ contains documentation for various SIMCOM modems.

Yeah I have tried to compare the AT-command listings.
There does not seem to be any difference in the AT-command listing although the AT+CMUX description for SIM7600E is very brief and states "Currently only basic operation mode is supported." which I guess refer to the "basic operation" in the GSM 07.10 protocol?

One thing to check is to make sure that the muxing channel is correctly set. Different modems might use different channel number for PPP and AT channels. See CONFIG_GSM_MUX_DLCI_AT and CONFIG_GSM_MUX_DLCI_PPP options.

good tip will try that :)

The channels seem fine. Although I did some manual interpretation of the data captured on the UART all of the muxed packets sent only seem to be 7 byte. I guess there could be an issue with flooding the modem?
Do you know where I can find settings for the packet size?

There is no such thing as tweaking the packet size. It sounds like there is some handshake error here. You could enable more modem debugging in order to see more information
CONFIG_UART_MUX_LOG_LEVEL_DBG=y
CONFIG_GSM_MUX_LOG_LEVEL_DBG=y
CONFIG_MODEM_GSM_MUX_LOG_LEVEL_DBG=y
CONFIG_MODEM_GSM_MUX_VERBOSE_DEBUG=y
CONFIG_NET_PPP_LOG_LEVEL_DBG=y

This will print lot of data, so I had to increase the logging sizes too
CONFIG_LOG_BUFFER_SIZE=65536
CONFIG_LOG_STRDUP_BUF_COUNT=256

I had some experimental stuff for SIMCOM LTE modems at drivers/modem/gsm_ppp.c:mux_enable() function. If you set SIMCOM_LTE the mux enabling is done slightly differently. I was not able to test this as SIM808 did not work with it. This is just for experimenting if you want to try it.

There is no such thing as tweaking the packet size. It sounds like there is some handshake error here. You could enable more modem debugging in order to see more information

Sorry I meant that size in static int gsm_mux_send_data_msg(struct gsm_mux *mux, bool cmd, struct gsm_dlci *dlci, uint8_t frame_type, const uint8_t *buf, size_t size
always seems to be 1.
So when I send "AT" on the AT DLCI (2) it is sent as two frames:
0000   f9 07 ef 03 41 d4 f9                              ....A..
0000   f9 07 ef 03 54 d4 f9                              ....T..

Pretty sure I am flooding the modem with tiny frames

I realized this when I spent the morning manually dissecting the sniffed UART data ... then Wireshark behaved much nicer

Pretty sure I am flooding the modem with tiny frames

There are lot of small frames but I doubt it is the issue here.
The uart_poll_out API sends data one byte at a time so what you are seeing here is unavoidable (unless new API is implemented). See drivers/console/uart_mux.c:uart_mux_poll_out() for details.

I guess it is fine for the AT commands but it seems to be the case for all of the IP packets being sent on the PPP line as well...
Is this really how it is intended to work?
Is there a way I could use uart_mux_fifo_fill instead?

Sorry if I am missing the point

Currently the modem code in drivers/modem/modem_iface_uart.c:modem_iface_uart_write() is using polling interface. Perhaps it might be possible to use the interrupt driver API instead, would require some changes to modem code and more testing. Patches are welcome if you want to try that route.

I will try to verify that this is my issue first. If it is the case I might attempt the rewrite.
Thank you for the help :)

It seems like flooding is the issue.
I was able to verify this by hacking around uart_poll_out in modem_iface_uart_write and in a similar way in ppp_send_flush
if (strcmp(iface->dev->name, CONFIG_UART_MUX_DEVICE_NAME) == 0) {
    uint8_t dlci_address = iface->dev->name[4] - '0';

    // in this hacked version the first argument of gsm_dlci_get is ignored
    (void)gsm_dlci_send(gsm_dlci_get(NULL, dlci_address), buf, size);
} else {
    do {
         uart_poll_out(iface->dev, *buf++);
    } while (--size);
}

With this everything works as expected. I realize that this is not a nice solution but at least I have been able to find a cause of the issue.
Do you think this kind of workaround could be cleaned up to some acceptable state or how would you recommend I do this in a proper way? I am happy to look into doing it :)

So there is a bug in the modem firmware if it cannot accept things one byte at a time. Would you be able to report this to the vendor, perhaps they are able to fix it in next firmware release.
What you are proposing will not work in all cases as the device instance id found in the device name, is not really related to DLCI number. If you want to experiment a bit, you could change the uart_poll_out() call to uart_fifo_fill() and try if it works better. The documentation says that function is only to be called from ISR handler if uart_irq_tx_ready() returns true.  Result of calling this function not from an ISR is undefined (hardware-dependent). So it is not a proper solution but worth experimenting.

So there is a bug in the modem firmware if it cannot accept things one byte at a time. Would you be able to report this to the vendor, perhaps they are able to fix it in next firmware release.
I agree. I have been in contact with the vendor and I have a hard time understanding if they are going to fix this or if they are considering that one should not send only one byte / frame. Lets see where that discussion leads :)

What you are proposing will not work in all cases as the device instance id found in the device name, is not really related to DLCI number.

The main idea with the solution is to decorate the data with muxing frames before even sending it to the UART. Basically I am asking if it is possible to move the UART MUX API one layer up somehow... I get that this is not a trivial change. And ofc needs to be in a much neater and thought through way than my hack :)

If you want to experiment a bit, you could change the uart_poll_out() call to uart_fifo_fill() and try if it works better. The documentation says that function is only to be called from ISR handler if uart_irq_tx_ready() returns true. Result of calling this function not from an ISR is undefined (hardware-dependent). So it is not a proper solution but worth experimenting.

I did try a naive swap which did not work but will for sure do some more exploration in the future :)
So my main issue is solved and you can close this issue. It will be a while until I get some time to do something better than my hack workaround :)
Thank you for your time :)

For a proper solution to this issue, I would recommend that the modem API is converted from polled UART API to interrupt based API. Then the uart_fifo_fill() could be used instead. Anyway, this is a bigger change.

Hi,
@dueringa Did you make any new developments on mux support for SIM7600?
On zephyr-v2.6.0 I'm not even able to setup the ppp for some reason if mux is enabled,
while without mux enabled the ppp setups correctly. The inline AT channel is important
to query GNSS data.

For anyone struggling with SIM7600 I have the advice. Check if the power source for SIM7600 is good enough before you spend hours on tshooting...