Node descriptions don't appear in VisualScript editor's "Add Nodes"/Search window

Godot version:

3.3
OS/device including version:

macOS
Issue description:

When you extend another node, e.g. array variable - there you can see nodes descriptions, for example

When you try to add node via search or "add nodes", you see this:

Steps to reproduce:
^^^
In description
Minimal reproduction project:

Relevant code to investigate is in modules/visual_script/visual_script_property_selector.cpp.
The description field is the help_bit member variable.

https://github.com/godotengine/godot/blob/9b637faf654d9e9c715f669e1101b40c9d1479a7/modules/visual_script/visual_script_property_selector.cpp#L472
This line will output elements of class_type.
But class_type fetch from this:
https://github.com/godotengine/godot/blob/9b637faf654d9e9c715f669e1101b40c9d1479a7/modules/visual_script/visual_script_property_selector.cpp#L433-L439
When drag from dot of exist node, type is set to the same type of dot thing. So when drag from array dot, type will set to Array
But when click Add Nodes... or right click on canvas, type is not set. So it will fallback to base_type, which is the class script is inherits by. And when T is loop, function is not found.
Off topic: I think these loops should break when whey are already found what they want.

https://github.com/godotengine/godot/blob/9b637faf654d9e9c715f669e1101b40c9d1479a7/modules/visual_script/visual_script_property_selector.cpp#L472
This line will output elements of class_type.
But class_type fetch from this:
https://github.com/godotengine/godot/blob/9b637faf654d9e9c715f669e1101b40c9d1479a7/modules/visual_script/visual_script_property_selector.cpp#L433-L439
When drag from dot of exist node, type is set to the same type of dot thing. So when drag from array dot, type will set to Array
But when click Add Nodes... or right click on canvas, type is not set. So it will fallback to base_type, which is the class script is inherits by. And when T is loop, function is not found.
Off topic: I think these loops should break when whey are already found what they want.

Are you currently working on this? If not, I'd be happy to investigate it further & fix it.

@theoway No, you can do it.

Reproducible on master branch. Will make a PR on master branch soon, so that it can be cherry picked for 3.3


Slugification of file names

Types of changes

[ ] Docs change / refactoring / dependency upgrade
[ ] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[ ] Breaking change (fix or feature that would cause existing functionality to change)

Motivation and Context / Related issue
Some file names are broken in the dashboard.
How Has This Been Tested (if it applies)

Checklist

[x] The documentation is up-to-date with the changes I made.
[x] I have read the CONTRIBUTING document and completed the CLA (see CLA).
[x] All tests passed, and additional code has been covered with new tests.

Not relevant anymore.


AB#4996

Proposed changes

Related issues

Checklist

[x] I consider the submitted work as finished
[x] I tested the code for its functionality
[ ] I wrote test cases for the relevant uses case
[ ] I added/update the relevant documentation (either on github or on notion)
[ ] Where necessary I refactored code to improve the overall quality

Further comments
If this is a relatively large or complex change, kick off the discussion by explaining why you chose the solution you did and what alternatives you considered, etc...

@r-joyce looks good, please review and merge.

Please see this comment as to why I marked this as invalid

@r-joyce I saw your comment in the engineering channel, will you be merging this one into develop?


Eror

I'm using version 53 of this plugin and found an error like this

That was fast, I'm looking into the error.

Fixed this Error on Version #55
https://poggit.pmmp.io/ci/ErikPDev/AdvanceDeaths/AdvanceDeaths/dev:55

@ErwanScraft

Does it work?

Yes bro it worked

Awesome! What do you think of the plug-in?
Erik

@ErwanScraft


[Notifiers] Getting 403 errors on self-hosted ntfy server

I was trying to setup the ntfy based notifier but keep getting the following error despite giving all the parameters correctly.
[Notifiers] [Ntfy - ntfy] Failed to push notification: Request failed with status code 403
I've been able to send notifications using curl on the same protected topics on the self-hosted ntfy instance. Don't see any incoming request in the ntfy logs as well. I'm sure I'm doing something silly here, so would appreciate any pointers on debugging this.
webhook config:
"webhooks": [
    {
      "name": "ntfy",
      "topic": "Random",
      "type": "ntfy",
      "url": "https://subdomain.domain.com",
      "username": "secretUser",
      "password": "secret_password"
    }

Hi, can you try the develop branch or image foxxmd/multi-scrobbler:develop and see if that has fixed the auth issue?

@thelazyoxymoron can you confirm this fixes things for you? I was able to reproduce and the fix in develop should do the trick.

Will check tonight and update here.

Confirming that the fix works!

In release 0.4.6


Create Release 3.0.0

Released on Maven Central and Github
https://github.com/devonfw/devon/releases/tag/release%2F3.0.0


Daily log ai summary

Description
Embracing the new AI APIs!

Added new Daily Summary report command using RaycastAI

Added new Daily Standup Speech command using RaycastAI

Added new Summery of a Month report command using RaycastAI

Fixed a bug where the date was being formatted incorrectly for display in the list of logs

Screencast

Checklist

[x] I read the extension guidelines
[x] I read the documentation about publishing
[x] I ran npm run build and tested this distribution build in Raycast
[x] I checked that files in the assets folder are used by the extension itself
[x] I checked that assets used by the README are placed outside of the metadata folder

Great addition that makes use of AI! For now, we don't allow publishing extensions that use the AI API. We will stabilize the APIs soon, and then you can publish it. Maybe you can put the PR into draft until then?

Reopen PR


pytorch 1.6 support?

Pytorch 1.6 is released. Is there a plan to release the support for PT 1.6?

Hi! Thanks for your interest!
Unfortuantely, We no longer have the resources to maintain LMS on PyTorch. We tried very hard to upstream this code, but it's very difficult to merge code into projects that are not openly governed.
I'd be happy to host any new patches for 1.6 here if anyone wanted to work on it, however.


Resolve kernel.cache_dir parameter before writing routing.yml

The kernel.cache_dir-parameter is not resolved in RouterResourcePass. As a result of this, when other parameters are used to define this kernel.cache_dir, AsseticBundle generates its routing.yml file in the wrong directory, with %parameter_name%-subdirectories in its path. When handling requests, Symfony looks in the resolved cache directory, cannot find the routing file and throws an exception.
This patch makes sure the kernel.cache_dir-parameter is resolved before writing the routing.yml file, so the routing.yml-file ends up in the correct directory.

Closing as overwriting the cache parameter is not a supported way in Symfony. The cache folder must be overwritten by overwriting the kernel method (otherwise only half of the cache will be written in the new location).


a new release per the project rename?

👋 when bumping the revision for poac formula per fmt version bump, I noticed some checksum mismatch for 0.10.1 release (did not see it before for the other project rename).
With that being said, maybe cut a new release for the project rename?
Thanks!

Hmm, that's unexpected, but yes, will do. I'll let you know once it's done.

Done, https://github.com/cabinpkg/cabin/releases/tag/0.11.0. Thanks!

Thanks @ken-matsui!

relates to https://github.com/Homebrew/homebrew-core/pull/202655


Remove functions from node binding values

resolves #1292
Not sure how thorough we want to be here, I took the hardest line. We may want to exclude arrays from this or only remove top level functions.
Currently we will remove all functions within nested arrays and objects up to depth 2.
Buffers and built ins are ignored.
The tests in functions.test.js show some good examples.

@mathewc throwing from the contract resolver & handling the error is the best I've found to deal with this:
http://stackoverflow.com/questions/26107656/ignore-parsing-errors-during-json-net-data-parsing

@mathewc we're good to go, stackoverflow came through:
http://stackoverflow.com/questions/42863644/ignore-expandoobject-properties-with-json-net-serializer-settings/42865037#42865037

One small comment to move the test, otherwise looks good :)


Refactor GetPolicies function

Refactor the function to return a map with AWSSTSPolicy values,
in order to use the ARN attribute for managed policies in the future.
Related: SDA-7609

/lgtm, not much to comment mostly just renaming

/lgtm


EXC_BAD_ACCESS crash in PersistentStorage.swift

Expected Behavior

PersistentStorage should not crash on a read
Current Behavior

Since updating to Amplitude-Swift 1.4.2, we're seeing about 10 crashes/day in our application (>1MM active monthly users) coming from PersistentStorage's read function when the application returns to the foreground. This is low impact, but it's consistent.
Possible Solution

I haven't had much time to investigate, but this might be related to the sessions lazy var on Amplitude.swift, which isn't being internally synchronized. There is already work being performed on the syncPersistentStorage.amplitude.com in the stack trace when the Session object is initialized.
Steps to Reproduce

Currently unknown. The crash seems to be a race condition on foreground.
Environment

SDK Version:  1.4.2
OS Info:  iOS 16 & iOS 17

Stack trace from the crash report:
issue_91806d70e8647c1ba761c81369e030a5_crash_session_d384098f006940c4a55cd4ba8779485c_DNE_0_v2_stacktrace.txt

Hi @mt00chikin, The stack trace points to a crash calling dispatch.sync on one of our internal queues, which probably indicates a deadlock. Could you share more information about how you are calling ApplicationAnalyticsService.identifyIfNeeded (in terms of dispatch), as shown in the background thread in the stack trace?

Thanks @mt00chikin - I believe this is fixed by https://github.com/amplitude/Amplitude-Swift/pull/159 which should release later this week.

This should be fixed in 1.5.0.


Which Custom WebParts in StarterKit are compatible with Standard Release Tenant ?

Category

[ X] Question
[ ] Bug
[ ] Enhancement

Can I please know which web parts really need Targeted Release for Everyone ? If I've Production tenant with Standard Release - Can I deploy all these webparts by just deploying .sppkg to a Tenant where Release Preference is set to - Standard Release ?

You will be unable to deploy the sppkg file to an app catalog in a tenant that does not have targeted release for everyone enabled. This is because the spfx package itself contains components and configuration settings such as "webApiPermissionRequests" found in package-solution.json that require targeted release. You would need to strip out quite a bit from the package to make this work without targeted release.

I am unsure of the timeline of the cleanup script.
Per the documentation under getting started, it is recommended you do not deploy aspects of the SP Starter Kit to a production tenant. I cannot stress this enough, I highly recommend you utilize the free Office 365 developer program to create a playground.
Another option is that you wait for current targeted release features such as the Graph components to make it to GA. No pubic timeline on this I am aware of, could be a few weeks to a few months maybe?
I would not recommend turning on targeted release in a production tenant. There is no solid way to ensure that targeted release won't cause any issues.

Ok thanks. I'll then look getting the source code and extract some of the webparts, which I can deploy to standard tenant, I just want Custom Tiles(Promoted list) webpart and the Height Adjustable Banner webpart.

@hsamdani12 Those two webparts should migrate well and work in GA tenants.
As of today, the following webparts that require MSGraphClient and thus Targeted release
Personal Calendar
Personal Contacts
Personal Email
Personal Tasks
Recent Contacts
Recently Used Documents
Recently Visited Sites
There is an extension that sort of requires targeted release
Discuss now - currently using AadHttpClient, but should be migrating to MSGraphClient at some point.

@hsamdani12  I have created a solution that removes all of the FR required web parts. If you'd like to test/use this solution, I'll post it up to Github.

Thanks @eoverfield and @bcameron1231 for the info.
@bcameron1231, Thanks! that would be very helpful, if you put it up on GitHub and share the link. Ye planning to first test them in a Dev\UAT tenant first.
Also I've one question not related to starter toolkit, I'm struggling to find a solution. For branding is it possible to put banner sized logo in the header using App Customizer, and not have the boxed sized Site logo. I know about logo setting in the O365 Suite Bar, but it applies to whole tenant across all the O365 products. sort of like this - http://blog.pixelmill.com/3322/add-image-custom-header-footer-modern-page
the way PixelMill logo in Suite Bar, to be shown in the header instead.

@hsamdani12 You can find the repo here  . Please be advised, I haven't tested a TON but it was working the last few times I deployed. You can either upload the .sppkg alone, or you can run the deploy.ps1 script to install the pages and sites as well.

@hsamdani12 You can find the repo here .. It's just a clone, not a fork... so I won't be pulling any new changes into it. But here is the quick link to it. Please be advised, I haven't tested a TON but it was working the last few times I deployed. You can either upload the .sppkg alone, or you can run the deploy.ps1 script to install the pages and sites as well.

Thanks. @bcameron1231

@hsamdani12 Happy to help. Did it work for your needs?

You can provision the Links library using PnPProvisioning Template provided in the source code.
The pnp provisioning template is Portal-Footer-Links.xml
Navigate to that location, connect to your tenant and deploy using pnp
Connect-PnPOnline -TenantUrl https://yoursite.sharepoint.com/sites/yoursite
Apply-PnProvisioningTemplate -Path PnP-PortalFooter-Links.xml
Then if you want to add the Customizer to be running your site, you can run the following command.
`Connect-PnPOnline -Url https://yoursite.sharepoint.com/sites/beau
$context = Get-PnPContext
$web = Get-PnPWeb
$context.Load($web)
Execute-PnPQuery

$ca = $web.UserCustomActions.Add()
$ca.ClientSideComponentId = "b8eb4ec9-934a-4248-a15f-863d27f94f60"
$ca.ClientSideComponentProperties = "{""linksListTitle"":""PnP-PortalFooter-Links"",""copyright"":""â’¸ Copyright Contoso, 2018"",""support"":""support@contoso.com"",""personalItemsStorageProperty"":""PnP-CollabFooter-MyLinks""}"
$ca.Location = "ClientSideExtension.ApplicationCustomizer"
$ca.Name = "PortalFooter"
$ca.Title = "PortalFooter"
$ca.Description = "Portal Footer"

$ca.Update()

$context.Load($web.UserCustomActions)
Execute-PnPQuery`

If you want to change what the footer says, you can modify the ClientSideComponentProperties in the command. Instead of Contoso put your company name, etc..


AWS driver does not support multiple non default subnets

Hello,
I'm using docker-machine AWS driver to spin up EC2 machines via Gitlab Autoscaling feature (reference: https://docs.gitlab.com/runner/configuration/runner_autoscale_aws/index.html).
I would like the EC2 machines to be created in one of the private subnets of the VPC I provide to docker machine. Unfortunately without specifying the subnet docker-machine will use the default subnet of a randomly selected availability zone in the chosen VPC. This won't be good for my case since the default subnet is not the one I wanted.
I have the ability to select the subnet for docker-machine but multiple subnets cannot be provided to the configuration (reference: https://docs.docker.com/machine/drivers/aws/).
This results in registering the gitlab-runner three times one for each availability zone.
I think my problem would have been fixed with https://github.com/docker/machine/pull/3740 but it was never merged to master.
Thanks,
Giulio

This relates to https://github.com/docker/machine/issues/4657 which calls out the fact that "zone" defaults to "a" unless to set to something else.  This means unless your subnet is in zone "a" you must also set that.  I personally want the ability to spread gitlab workers over multiple private subnets, which will be across multiple AZs.
Allowing a list of subnet ids, and making the "zone" argument optional would get me where I want to be.  If following AWS best practice for fault tolerance we'll already be running subnets in multiple AZs.


Add all SQL data types to ProductsColumnTypes tests

[x] binary and varbinary
[ ] Spatial types (geometry and geography)

Created separate issue to track spatial types: https://github.com/Azure/azure-functions-sql-extension/issues/654


Breadcrumbs - Visual design

Breadcrumbs
The text of each breadcrumb should behave like a link with no underline, with the exception of breadcrumbs replaced by an ellipse, which shouldn't be clickable.

Closed by #217


Update README for selection and filter

There was limited description of the functionality of the primary selection strategy and the filter strategy in the config file. This PR adds that detail.

Thanks for the input, @cmoesel . I've updated the README based on these suggestions.

Thank you for addressing this, Dylan!


Make Taylor Xcode 7 Beta 5 Compatible

In the latest version of Xcode beta, Apple removed some methods from the Swift String type. An easy workaround (which I applied) is to cast String to NSString whenever it is necessary to use those methods. More info about these changes are available in this forum thread.

@Danappelxx ftw!


Livereload running when explicitly set to off

When livereload option left unspecified, set to false, and passing an object with enable set to false, I still get the following:

Not a deal breaker, just figure I'd open the issue if it saves me a few cpu cycles during development.
Thanks for the great tool!

Unfortunately this setting for livereload also doesn't work
      livereload: {
        enable: true,
        filter: function(fileName) {
          return false;
        }
      }


Rendering from local .mbtiles file?

Is it possible to add a local .mbtiles file onto the map using a <VectorSource>?
I was thinking of doing something like this but I couldn't figure out a way to make it work:
const Overlay: FC<OverlayProps> = ({}) => {
   return (
      <VectorSource id={'overlay-layer'} url={'mbtiles://my-file.mbtiles'}>
         <FillLayer props-... />
      </VectorSource>
   );
}

If this is not supported, what are the options to do such a thing without using a remote server?

I believe it should be possible, I have done it with the pre-forked version of Mapbox-gl-native.  You will have to include the mbtiles file in the bundle somehow.  I ended up doing it manually (dragging it into the project in Xcode and android studio) and then used something like react-native-filesystem to get the proper local uri for the file, then fed that into the url prop.
It's been a while so I don't remember some of the exact details, but the hardest part was getting the mbtiles file included in the bundle. I spent a number of hours trying to coax metro into including it with a require, but couldn't make that work, so had to resort to the manual method I mentioned above.

@gorbypark Hm, I don't seem to get it to work using filesystem either. Did you use the .mbtiles file or extract a pbf from it?

Hi @aLemonFox check this out
https://osmus.slack.com/archives/C065DB4T2UB/p1711978657053129

it worked with me

@mohanedmoh, please post the context of the slack conversation in question. Unfortunately, the slack history isn't publicly accessible, nor is it long lived.  Some mock code with explanations of how you made it work, I am sure that would be appreciated by all. Thanks!

Sure, so you will save the MBtiles locally and load it using
`<MapLibreGL.RasterSource
id="testSource"
tileUrlTemplates={["mbtiles:///" + path]}
tileSize={512}
minZoomLevel={10}
maxZoomLevel={14}>
                    <MapLibreGL.RasterLayer
                        id="testLayer"
                        sourceID="testSource"
                    />
                </MapLibreGL.RasterSource>`

Which is normal RasterSource but with tileURLTemplate  of (mbtiles:///path_to_your_mbtiles_file.mbtiles)

make sure to change the tileSize based on your MBtile configuration, mine was 512
if it's the wrong tileSize the map will start showing some tiles in dark mode and others in light mode
hope this was helpful

@tyrauber, @aLemonFox
Sure, so you will save the MBtiles locally and load it using
<MapLibreGL.RasterSource                         id="testSource"                         tileUrlTemplates={["mbtiles:///" + path]}                         tileSize={512}                         minZoomLevel={10}                         maxZoomLevel={14}>                          <MapLibreGL.RasterLayer                             id="testLayer"                             sourceID="testSource"                         />                     </MapLibreGL.RasterSource>
Which is normal RasterSource but with tileURLTemplate  of (mbtiles:///path_to_your_mbtiles_file.mbtiles)
make sure to change the tileSize based on your MBtile configuration, mine was 512
if it's the wrong tileSize the map will start showing some tiles in dark mode and others in light mode
hope this was helpful


transport: Support AGWPE over TCP (direwolf)

As pointed out by @kd8drx in #47, Direwolf appears to have a full AX.25 implementation exposed via the AGW-over-TCP format.
If we could implement a package to support AGW-over-TCP, that could be a nice way to support AX.25 on multiple platforms until #56 is resolved.

I would personally vote for the AGW route as this would allow you to leverage Direwolf's AX25 v2.2 stack and all of it's built-in intelligence vs. dumb things down via the KISS interface.

I have received some example C code from @wb2osz, and some documentation. If someone is willing to give this a go, then please let me know so I can forward the files.
I am considering to prioritize this feature soon... but I haven't found the time yet :/

I wouldn't mind seeing those files, but I know nothing of the code in this project to help at this time.

I would love to give this a go. If you could send me the example code and documentation, I'll take a crack at it.

I'm very glad to hear that! I've sent an inquiry to the original author today, requesting permission to share the code with you :)
Thank you!

@martinhpedersen I actually received some code and documentation from @wb2osz yesterday that I have started looking through.

AGWPE has a security feature that would be prudent to include for full AGWPE functionality. However, I believe Direwolf does not implement this.
From the documentation:

Login/Password validation.
The AGW Packet Engine user has now the ability to prohibit access of agwpe for other programs. The Security levels are 3.

Allow any program to use agwpe.
Allow only programs that run in his LAN.
Allow only programs that run in his computer.
If the security level is set to 2 or 3. Then a program can gain access with a login validation procedure.
This is done using the new frame ‘P’ (capital letter P).

This is fairly simple to implement as it only requres sending the login frame to AGW. However, I don't see any straight forward way right now to pass AGW username and password information into the TNC open/init functions. It doesn't look like it can be done cleanly via the dialer url anyways.
What are our thoughts on this? Also, please let me know if this is the best place to post questions and seek feedback as I'm working on this.

Also, please let me know if this is the best place to post questions and seek feedback as I'm working on this.

Sure, we can continue the discussion here :) But feel free to email directly if you prefer.

However, I don't see any straight forward way right now to pass AGW username and password information into the TNC open/init functions. It doesn't look like it can be done cleanly via the dialer url anyways.

It sounds to me like this is something that we could add in a separate config section for agw, and pass to the TNC as part of the open/init function.
Dave Cheney's Functional options for friendly APIs comes to find as a nice way to open up for this but still maintain a good and uncluttered API.
Another option could be to let Open() take an optional Config-struct, similar to boltdb's API.

AGWPE has a security feature that would be prudent to include for full AGWPE functionality. However, I believe Direwolf does not implement this.

I suspect that most users will prefer Direwolf over AGWPE, simply because more than 95% of Pat users run Linux. So IMHO, I think we can defer this security feature. But that's for you to decide 👍
Thanks for taking the time to work on this!

For the record. https://github.com/la5nta/pat/wiki/Adding-transports was added today, as discussed in https://github.com/la5nta/pat/issues/175.

Has there been any development on this feature addition? I would love to use pat without having to deal with kernel ax.25 or kiss. AGW is my preferred interface for APRS clients and is much, much easier to set up for users (I've been struggling with this the last several days).

There has been some minor work done on it but I haven’t made any significant progress as of late. I’ll see if I can reprioritize this effort since you have expressed interest!
P.S. I have never had much luck using the kernel ax.25 implementation myself for some reason.

On Feb 19, 2021, at 4:18 AM, italic<EMAIL_ADDRESS>wrote:

Has there been any development on this feature addition? I would love to use pat without having to deal with kernel ax.25 or kiss. AGW is my preferred interface for APRS clients and is much, much easier to set up for users (I've been struggling with this the last several days).
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub, or unsubscribe.

This feature would be very beneficial.  Setting up AX.25 for Linux is complicated and a new bug was discovered recently.   https://groups.io/g/direwolf/message/5074

Adding voice in support of this. Thank you!

Sent my very first WinLink via RF packets tonight... Linux Ax.25 implementation made it terrible, with more obtuse configuration than expected and some kind of bug in reconnecting. I don't think the implementation feels ready for prime time.

I have picked my work on this back up within the past few weeks. I don’t have much done, but I can transfer what I’ve learned about the AGWPE protocol if you’d like. I feel like I have a good understanding of the protocol now, but I’ve been a little slow writing code since I’m still picking up golang.

On Jun 7, 2022, at 1:28 PM, Martin Hebnes Pedersen @.***> wrote:

I've started working on a transport package implementing this. Will probably take some time 🐌.
—
Reply to this email directly, view it on GitHub, or unsubscribe.
You are receiving this because you commented.

Sure, it would be great if you could share what you've found so far 👍
I'll try to push my branch within a couple of days so you can have a look at it. Maybe we can work on this together somehow 🙂
I have been using direwolf as my test modem, and it looks like the login procedure is not required at all. I've managed to register a callsign+port and also initiated the dialing operation by sending a 'c' frame to direwolf. Direwolf have some very handy logging capabilities, so that's going to be very helpful I think.
So far I have written code for encoding/decoding frames, and started implementing a TNC type to represent the AGWPE connection. I don't have a clear picture on how to manage the TNC state yet. From my own experience writing the ARDOP and WINOR packages, that's the hardest thing to get right when it comes to writing a transport driver. Especially for modems supporting concurrent connections. My plan is to do some experimenting with different designs to come up with a good approach for handling the TNC/port/connection states correctly, without too much complexity.
I've been using this as my protocol reference so far: https://www.on7lds.net/42/sites/default/files/AGWPEAPI.HTM.

Quick update: I've been making some progress on this over the summer. I believe I've found a good approach for managing the TNC state by demultiplexing the incoming frames to various goroutines. I have done some preliminary testing with two Pat instances (P2P) and a small "chat" app I wrote just to see how the TNC (Direwolf) behaves.
I still haven't tested with the original AGWPE application on Windows, but hopefully the two TNCs behave the same 🤞.
I've also started to fiddle with a solution for having multiple transports supporting the ax25:// scheme in Pat, with a config option to select the default driver.
To be continued...

@martinhpedersen Sounds great! Do you have code I could test and compare to what I have right now?

@KI7ODK - I've pushed the branch now :) Will push relevant changes to the Pat repo as soon as I have done my own review of the code.

Here is the chat app I've been using for testing purposes:
https://go.dev/play/p/b_5rTBdTKi4

I've pushed a branch of Pat that uses this transport if anyone wants to check it out: https://github.com/la5nta/pat/tree/feature/agwpe-engine.


Support configuration of default scalar type for custom scalars

Is your feature request related to a problem? Please describe.
When generating typescript code, I would prefer that the Scalars type mapping for custom scalars default to unknown rather than any (better type safety; forces explicit typecasting; makes missing custom scalar type overrides more obvious). It's conceivable that there may be similar desires when generating code in other languages too.
Describe the solution you'd like
A new config option for the typescript code generator that allows me to set the default scalar type to unknown. This could possibly be a string config that technically supports any type to be specified, or a boolean config specific to typescript code generation only that restricts the options to any or unknown.
I think a string option might be more preferable to generally support this option for other languages. Even within typescript, it may be desirable to use never as the default type to more strictly require that custom scalars be given type mappings.
Describe alternatives you've considered
Hackishly post-processing the output of the code generator to find/replace any with unknown. Doesn't seem worth the effort to do it properly.
Additional context
I have poked around the source code and found that there is a buildScalars() method in packages/plugins/other/visitor-plugin-common/src/utils.ts with a defaultScalarType parameter that defaults to 'any'. I don't understand the structure of this project well enough to figure out the "right" way to make the change myself, but I would recommend starting by making the defaultScalarType required (no default value; because any is not a good default for ALL languages), then following the compiler errors to every usage of buildScalars() and make a case-by-case decision on whether to pass a hard-coded value for defaultScalarType, or require it to be passed down from the next level up in the call stack, grabbed from config, etc.

Totally agree :) PRs are welcome ;)

I'm also interested in this, but I'm thinking of a different approach.
Instead of specifying a custom scalar type, I'd like graphql-code-generator to simply throw an error if it finds a scalar that isn't defined in scalars.
It could be a config setting, like strictScalars: true.
@dotansimha would you be open to a PR for that?

I opened a PR that implements both OP's original request and my own variant of it at #5699

@andreialecu I like the strictScalars: true approach too. It seems so obvious now that you suggested it :)

Available in<EMAIL_ADDRESS>(and others, if relevant, you can find a list of all publishes packages here: https://github.com/dotansimha/graphql-code-generator/pull/5827 ) Thanks @andreialecu


v9.1 (UCI) Clear Value broken - does not clear value

Scenario: Testing to make sure form controls are working by testing invalid characters.
I want to set the field value (testing for invalid characters) and then clear the field's value, so we can set the field value again with other invalid characters.
_xrmApp.Entity.ClearValue("emailaddress1");  //does not clear the value of the field
I've tried saving the record and then clearing the value and that doesn't work either. The new values are appended to the end of the previous value that was set (because clear value step does nothing).

Anybody found a good workaround for this issue?

Merged into 9.1 branch - closing


EntityTypeBuilder - the order of calling HasKey and HasOne methods matters

Starting from version 2.2.0 when HasKey is called before HasOne, the later call of HasOne method defines a new shadow property. In 2.1.4 version this does not happen.
Steps to reproduce
	public class Member
	{
		public int Id { get; set; }
		public List<Membership> LeftMemberships { get; set; }
		public List<Membership> RightMemberships { get; set; }
	}

	public class Membership
	{
		public int LeftMemberId { get; set; }
		public Member LeftMember { get; set; }

		public int RightMemberId { get; set; }
		public Member RightMember { get; set; }
	}

	public class ApplicationDbContext : DbContext
	{
		protected override void OnModelCreating(ModelBuilder modelBuilder)
		{
			base.OnModelCreating(modelBuilder);

			// in version 2.1.4 this line can be here
			// since version 2.2.0 if this method is here, Membership has declared 3 properties (one shadow)
			// Workaround to 2.2.0: Move HasKey method call below and remove this call
			modelBuilder.Entity<Membership>().HasKey(membership => new { membership.LeftMemberId, membership.RightMemberId });

			modelBuilder.Entity<Membership>().HasOne(membership => membership.LeftMember).WithMany(member => member.RightMemberships); // members point to the right, memberships point to the left
			modelBuilder.Entity<Membership>().HasOne(membership => membership.RightMember).WithMany(member => member.LeftMemberships); // etc.

			// Workaround to 2.2.0: Move HasKey method call here and remove previous call
			//modelBuilder.Entity<Membership>().HasKey(membership => new { membership.LeftMemberId, membership.RightMemberId });
		}

		protected override void OnConfiguring(DbContextOptionsBuilder optionsBuilder)
		{
			base.OnConfiguring(optionsBuilder);

			optionsBuilder.UseInMemoryDatabase(nameof(ApplicationDbContext));
		}
	}

	[TestClass]
	public class ModelTest
	{
		[TestMethod]
		public void Model_Membership_HasExactlyTwoProperties()
		{
			ApplicationDbContext dbContext = new ApplicationDbContext();
			Assert.AreEqual(2, dbContext.Model.FindEntityType(typeof(Membership)).GetProperties().Count());
		}
	}

Further technical details
EF Core version: 2.2.0
Database Provider: Microsoft.EntityFrameworkCore.InMemory

Confirmed regression. But since there's a workaround we will not fix this in a patch unless it affecs a large portion of users.

Doesn't repro on 3.0. Probably fixed by 3c60068fe1dedd36cf9e43e5398653601ad17748


[release/1.2] Prepare v1.2.10 release

Draft of the release notes: https://gist.github.com/estesp/6d8443467f23c039f85725ed69a91e89
Signed-off-by: Phil Estes<EMAIL_ADDRESS>

LGTM

Codecov Report

Merging #3690 into release/1.2 will not change coverage.
The diff coverage is n/a.

@@             Coverage Diff              @@
##           release/1.2    #3690   +/-   ##
============================================
  Coverage        44.19%   44.19%
============================================
  Files              100      100
  Lines            10847    10847
============================================
  Hits              4794     4794
  Misses            5313     5313
  Partials           740      740

Flag
Coverage Δ

#linux
47.87% <ø> (ø)
:arrow_up:

#windows
41% <ø> (ø)
:arrow_up:

Continue to review full report at Codecov.

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

LGTM


Add Project Astra to list of snapshot-supporting products

I forgot to add NetApp's Project Astra to the list of snapshot-supporting products before this blog entry was published. This change adds one line to the blog entry.

/lgtm

/assign @kbarnard10

/approve


How to precompile package and build app without gcc

Is it possible to pre-compile cross-platform go-sqlite3.a in advance to avoid gcc when building applications.
I installed linux and windows go-sqlite3.a using a cross compiler.
CGO_ENABLED=1 CC=x86_64-w64-mingw32-gcc-posix CXX=x86_64-w64-mingw32-g++-posix HOST=x86_64-w64-mingw32 PREFIX=/usr/x86_64-w64-mingw32 GOOS=windows  /go1.12/bin/go install github.com/mattn/go-sqlite3

CGO_ENABLED=1  GOOS=linux  /go1.12/bin/go install github.com/mattn/go-sqlite3

Now I have compiled go-sqlite3.a
root@f4d4056fc15d:/go/src/github.com/mattn/go-sqlite3# find /go/pkg/|grep go-sqlite3.a
/go/pkg/windows_amd64/github.com/mattn/go-sqlite3.a
/go/pkg/linux_amd64/github.com/mattn/go-sqlite3.a
root@f4d4056fc15d:/go/src/github.com/mattn/go-sqlite3#

I started trying to compile _example/simple,
On Linux if  CGO_ENABLED=0 is do not work;
root@f4d4056fc15d:/go/src/github.com/mattn/go-sqlite3/_example/simple# CGO_ENABLED=0 go build
root@f4d4056fc15d:/go/src/github.com/mattn/go-sqlite3/_example/simple# ./simple
2019/03/20 03:54:27 "Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub":
	create table foo (id integer not null primary key, name text);
	delete from foo;

Compile of Windows, Build is be fine
GOOS=windows GOARCH=amd64 go build

But running the prompt requires CGO_ENABLED
C:\Users\workspace\Desktop>simple.exe
2019/03/21 12:03:44 "Binary was compiled with 'CGO_ENABLED=0', go-sqlite3 requires cgo to work. This is a stub":
        create table foo (id integer not null primary key, name text);
        delete from foo;

Where am I wrong?

It doesn't work because of how Go's build cache works. Because the value of CGO_ENABLED changed, it doesn't consider the output of the first build to be usable when you build the second time.
Can you explain why you are trying to avoid gcc? What exactly are you trying to accomplish?

Thanks Reply！
Because CGO compilation brings complex compilation environment problems, if can use pre-compiled library files, build applications more easily and quickly.

Can you elaborate on what problems you are facing? What platform(s) do you develop on? What platform(s) do you actually deploy/release on?
It's hard to say without knowing your full situation, but my initial inclination is to suggest using docker to containerize your build environment.

The compilation environment that cgo depends on is very difficult.
I am thinking about compiling the sqlite.a files of each platform on a complete machine and distributing them to other machines. Then other build machines do not need too complicated environment. Compile multiple platform targets directly, but it seems that this is not a reality

If you have libsqlite3.a on the target system, you can use libsqlite3 build tag. See README.md.

Using a pre-built libsqlite3 will not really help in this situation. You still need to use cgo when compiling your Go application. All it means is you don't need the SQLite source code, but that's already included in this library anyway.

The compilation environment that cgo depends on is very difficult.

I'm not sure what you mean by this. What platforms do you intend to compile for? If developers only need to make native builds (i.e., compile for their own machines), this is pretty straightforward. If you truly need to support cross-compilation, like I said I'd highly recommend just using docker.

Closable ?


Way to jump to references found by lsp_finder()

When using lsp_finder() and viewing a floating window of references, I was hoping I could jump to the reference I have selected under the cursor (so this file will open in the main window).
Is there any way to do this in lsp saga currently? If not, would you consider adding it?
Thanks.

When using lsp_finder() and viewing a floating window of references, I was hoping I could jump to the reference I have selected under the cursor (so this file will open in the main window).
Is there any way to do this in lsp saga currently? If not, would you consider adding it?
Thanks.

select the file and type 'o'

Awesome, thanks a lot!

Is there a way to remap this to another key?


fix: overlay align top

Summary
Align top vertically, centre horizontally for overlay title bar
Changes
Issues
NIL

Before

After


perf(compiler): use moduleResolutionCache for Language Service's resolveModuleNames

Summary

#1784 introduced the usage resolveModuleNames API from LanguageService. I noticed that resolveModuleNames API can have a cache called ModuleResolutionCache so I went ahead and tried out. The result is amazing:

Before #1784 and after #1784: the performance is more less similar, sometimes #1784 makes performance even worse.
With this PR: the performance is even better than before #1784 and after #1784

Some figures
Testing against my company's project which has 2k+ test files as well as the repo source has 2k+ files.
After #1784
 PASS  src/__tests__/pulse-items/pulse-items-filter.helper.spec.ts (5.736s)

 PASS  src/__tests__/hybrid-apps/widget-card-settings.handler.spec.ts (21.57s)

 PASS  src/__tests__/pulse-items/pulse-items-ws-res.handler.spec.ts (31.41s)

 PASS  src/__tests__/inbox/inbox-detail-traveller.effects.spec.ts (31.892s)

 PASS  src/__tests__/task-viewer/task-viewer.effects.spec.ts (31.972s)

 PASS  src/__tests__/shared/numeric-field.component.spec.ts (22.818s)

 PASS  src/integration-tests/inbox-message-view/email-custom-action.spec.ts (18.773s)

 PASS  src/integration-tests/inbox-message-view/email-standard-action.spec.ts (15.707s)

With this PR
 PASS  src/__tests__/pulse-items/pulse-items-filter.helper.spec.ts (5.387s)

 PASS  src/__tests__/hybrid-apps/widget-card-settings.handler.spec.ts (12.154s)

 PASS  src/__tests__/pulse-items/pulse-items-ws-res.handler.spec.ts (19.322s)

 PASS  src/__tests__/inbox/inbox-detail-traveller.effects.spec.ts (20.206s)

 PASS  src/__tests__/task-viewer/task-viewer.effects.spec.ts (19.916s)

 PASS  src/__tests__/shared/numeric-field.component.spec.ts (20.487s)

 PASS  src/integration-tests/inbox-message-view/email-custom-action.spec.ts (13.759s)

 PASS  src/integration-tests/inbox-message-view/email-standard-action.spec.ts (11.163s)

Some tests gain huge performance boost and overall, the time to execute the tests for the whole project improved about 20%-30%.
The difference in time between no cache run and cache run reduces to no-cache run = x1.5-2x cache run comparing to no-cache run = 2x-2.5x cache run after #1784
Test plan

Added unit test for checking the usage of ts.createModuleResolutionCache. Green CI
Does this PR introduce a breaking change?

[ ] Yes
[x] No

Other information
I also correct test for config-set.ts which reduced coverage in #1784

Pull Request Test Coverage Report for Build 5297

2 of 2 (100.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.07%) to 92.83%

Totals

Change from base Build 5296:
0.07%

Covered Lines:
1056

Relevant Lines:
1091

💛  - Coveralls


Develop base image has switched to ubuntu

https://github.com/ConsenSys/tessera/pull/1443

Not until we cut a release of TESSERA_VERSION=22.4.0 (tbd)

Not until we cut a release of TESSERA_VERSION=22.4.0 (tbd)

Roger that :)


Fix: Prevent publishing messages twice

This change will have side effects, we need to update.

This change will have side effects, we need to update.


Bug 1163631 - Make master/minion playbook configurable in cluster.sh

Now config options can take both short and long notations.

@jwhonce review/merge

@pravisankar LGTM just need to rebase

[merge]

@jwhonce rebase done, please merge the pr


Form abstraction for Rails

I'm tempted to add some comments but I don't want to pollute your draft PR. Let me know if it's ok for me to comment on it.

Early comments can be really helpful. This was just a sketch when I posted it, I think it's mostly working now but still a long way to go.

I'm tempted to add some comments but I don't want to pollute your draft PR. Let me know if it's ok for me to comment on it.

Early comments can be really helpful. This was just a sketch when I posted it, I think it's mostly working now but still a long way to go.

Yeah, since it was a sketch when I tried to test the PR I had to make some changes to make it work. That's why I wanted to add some comments, but then I realized that it was unnecessary in this case.

Shipping this as undocumented experimental.


Class '\Kanboard\Auth\Database' not found

I have updated local installation to 91bdf6aa When trying to login I receive:
Fatal error: Class '\Kanboard\Auth\Database' not found in /srv/http/kanboard/app/Model/Authentication.php on line 29

Did you update your assets with composer?

See http://kanboard.net/documentation/installation

I guess http://kanboard.net/documentation/update would be more relevant in this case.
If updating assets means using composer install after pulling from this repo then yes, I've updated dependencies of kanboard.

Missing class has been removed in aforementioned commit (91bdf6a), is this to be expected as part of greater changes or accidental removal?

I would recommend to use release tags for productional use. :-)

This time it was sufficient to checkout previous commit :) Fortunately, I'm not using this version as production.
I'll leave this issue open because I'm not sure if the class was expected to be removed. If it was, feel free to close.

I just installed, using mysql and got the same error. waiting for the fixes.

If you are using the master branch, you can update, a huge refactoring have been made...


Generator : -p versus -c

According to help:
> csolution.exe run --help
CMSIS Project Manager 0.9.5 (C) 2022 ARM
...
Options:
  -s, --solution arg    Input csolution.yml file
  -p, --project arg     Input cproject.yml file
  -c, --context arg     Input context name <cproject>[.<build-type>][+<target-type>]

But:
> csolution.exe run -g STM32Cube_BasicTrace_CodeGen -c gpio-toggle.AC6+B-U585I-IOT02A -s gpio-toggle.csolution.yml

works fine.
while:
> csolution.exe run -g STM32Cube_BasicTrace_CodeGen -p gpio-toggle.cproject.yml -s gpio-toggle.csolution.yml
error csolution: context was not specified

and:
> csolution.exe run -g STM32Cube_BasicTrace_CodeGen -c gpio-toggle.AC6+B-U585I-IOT02A -p gpio-toggle.cproject.yml -s gpio-toggle.csolution.yml

works too.
I agree that only the context knows the build-type and this can change the components to be considered.
But why having -p then ?
When can we use it ? What for ?
@jeromecoutant

@fred-r we had initially thought about allowing to specify a cproject without the existence of a csolution file. In the meantime I vote for removing the -p option completely, as it otherwise requires board/device and compiler to be specified in the cproject file.
Would you have any objections to mandate a <name>.csolution.yml referencing the <name>.cproject.yml
In this case I would not only remove -p but also remove -s as the csolution.yml file is the mandatory input file required for all commands (except help).

Yes, to me the csolution should always be considered and -p probably makes no sense alone.
@slhultgren and @VGRSTM : what do you think ?

@fred-r myself I would say it depends of context.

If commenting as ST Microelectronics contributor I would say: csolution is must have
If commenting as OpenCMSIS contributor I may say: csolution is an option, cproject is must have
If commenting as end user I would have feeling: perfectionism can be counter-productive

Myself I always try to take end user hat first. Having too open proposal is fine as expert but not helping at all common end user. I would prefer so to get a unique way of working. As we cannot lock expert we have to enable complexity support. Common end user has to be supported then by some UI or ...
In short I would push for : csolution is must have and so yes get rid of -c and -p switches.
Such said, one time more, my own ultimate mind about is such problematic is devtools one I'm happy about but not my OpenCMSIS primary interest. My primary interest is about format specification (i.e. *.yml, *.pdsc, *.cprj, ...)

@fred-r and @VGRSTM thanks for sharing your feedback. I will bring this to the meeting to drive to conclusion. Once agreed we should open another issue for removing "unnecessary" elements from the cproject.yml schema.

We close this discussion and the change request is captured here: https://github.com/Open-CMSIS-Pack/devtools/issues/348


CheckBox#setChecked not working

Hello,
The setChecked function of CheckBox doesn't work, it doesn't do anything. In addition, how would I make the progress bar keep repeating infinitely.
Thanks,
Daniel

In addition - can you edit the slider interval?

try CheckBox.post(new Runnable);
in Runnable, put CheckBox.setChecked(true)

This works for me:
final CheckBox cb = ((CheckBox) findViewById(R.id.checkBox));
cb.post(new Runnable() {
@Override
public void run() {
cb.setChecked(true);
}
});

	autoLoginBox = (CheckBox) findViewById(R.id.acconut_checkBox);

	autoLoginBox.post(new Runnable() {
		@Override
		public void run() {
		autoLoginBox.setChecked(true);
		}
		});


Remove older APIs for fetching media and building traits

Remove older APIs for fetching media.
These APIs have been replaced by the EventMediaManager APIs.

Codecov Report

Merging #713 (f140194) into main (4c9b0be) will decrease coverage by 0.40%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main     #713      +/-   ##
==========================================
- Coverage   92.36%   91.97%   -0.40%
==========================================
  Files          19       19
  Lines        1939     1744     -195
==========================================
- Hits         1791     1604     -187
+ Misses        148      140       -8

Files Changed
Coverage Δ

google_nest_sdm/event.py
98.38% <ø> (-0.13%)
:arrow_down:

google_nest_sdm/traits.py
97.77% <ø> (+2.61%)
:arrow_up:

google_nest_sdm/camera_traits.py
97.25% <100.00%> (+2.21%)
:arrow_up:

google_nest_sdm/device.py
97.97% <100.00%> (-0.32%)
:arrow_down:

google_nest_sdm/device_traits.py
100.00% <100.00%> (ø)

google_nest_sdm/doorbell_traits.py
100.00% <100.00%> (+3.57%)
:arrow_up:

google_nest_sdm/event_media.py
93.60% <100.00%> (-1.42%)
:arrow_down:

google_nest_sdm/model.py
100.00% <100.00%> (+2.85%)
:arrow_up:

google_nest_sdm/thermostat_traits.py
100.00% <100.00%> (ø)

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


Is there any completed example on distributed yarn

Is there any completed example on distributed yarn

+1

This issue is closed due to lack of activity in the last 90 days. Feel free to reopen if this is still an active issue. Thanks!


[TACHYON-1194] Add 'Persisted' column in Tachyon WebUI

https://tachyon.atlassian.net/browse/TACHYON-1194

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins/job/Tachyon-Pull-Request-Builder/6333/
Test PASSed.

Very cool!
+1 LGTM.

LGTM


frontend error - cannot unmarshall

It should throw a better error, than the following, if you do not have you frontends.ymlfile.
unable to create daemon: yaml: unmarshal errors:
  line 7: cannot unmarshal !!str `go-ntp-ova` into store.InstanceConfig

I did not see any error while I am working on Haaukins, I thought that this issue opened some time and fixed however forgotten to close. So, it could be very useful for us, if anyone can give confirmation or objection about my statement.

@mrturkmen06 I think this is fixed, but I am not entirely sure

If we don't even know what the problem is, I assume it is fixed.


DataFetchersDelegate for scalar-returning operations

Hello,
Assume you have this model:
type Foo{
   foo(p: String): String
   fu(p: String): Bar
}

If I am right, DataFetcherDelegate classes will only be generated for fu, because it returns an object and not a scalar type.
I would propose an enhancement, that you generate those delegates as well when foo is defined as extension.
extend type Foo{
   foo(p: String): String
}

Without I have to solve it by defining a StringResponse type if I need a newTypeWiring.
You need to know, that I want to work with your generated classes as they are.
Or is it possible to overwrite the  GraphQLProvider's buildWiring?
Thanks,
Markus

Hello,

If I am right, DataFetcherDelegate classes will only be generated for fu, because it returns an object and not a scalar type.
Yes, that's it

generate those delegates as well when foo is defined as extension
This seems very confusing to me.

I don't understand why you need to do such a thing.
Why can't do you implementation code in the Foo data fetcher ?
BTW, I see two ideas to help your there:

Have a CustomScalar for the foo attribute:

type Foo{
   foo(p: String): FooCustomScalar
   fu(p: String): Bar
}

But this won't create a DataFetcherDelegate

Create a dedicated type (which will create a DataFetcherDelegate)

type Foo{
   foo(p: String): FooType
   fu(p: String): Bar
}

Etienne

Hello,

If I am right, DataFetcherDelegate classes will only be generated for fu, because it returns an object and not a scalar type.
Yes, that's it

generate those delegates as well when foo is defined as extension
This seems very confusing to me.

I don't understand why you need to do such a thing.
Why can't do you implementation code in the Foo data fetcher ?
BTW, I see two ideas to help your there:

Have a CustomScalar for the foo attribute:

type Foo{
   foo(p: String): FooCustomScalar
   fu(p: String): Bar
}

But this won't create a DataFetcherDelegate

Create a dedicated type (which will create a DataFetcherDelegate)

type Foo{
   foo(p: String): FooType
   fu(p: String): Bar
}

Etienne

you'll find the documentation for Custom Scalars here:
https://graphql-maven-plugin-project.graphql-java-generator.com/customscalars.html

you'll find the documentation for Custom Scalars here:
https://graphql-maven-plugin-project.graphql-java-generator.com/customscalars.html

And if your objectif is to get the "p" parameter, then you retrieve it from the context, in the DataFetcherDelegate.

And if your objectif is to get the "p" parameter, then you retrieve it from the context, in the DataFetcherDelegate.

Thanks Etienne,
I will have a look into the custom scalars.
I don't want to have a return object though, because the existing clients expect Long
And I need it, because foo is using the Batchloader mechanism. Have a look into my other issue in the server example github.
The foo datafecher get() returns the object, but I need a CompleteFuture as result...
You need to know, that I am refactoring existing code and want to use your generated classes directly and don't want to copy them into "/src" and change them here and there.

Thanks Etienne,
I will have a look into the custom scalars.
I don't want to have a return object though, because the existing clients expect Long
And I need it, because foo is using the Batchloader mechanism. Have a look into my other issue in the server example github.
The foo datafecher get() returns the object, but I need a CompleteFuture as result...
You need to know, that I am refactoring existing code and want to use your generated classes directly and don't want to copy them into "/src" and change them here and there.

Etienne,
I don't understand how scalar types can help me here
I made a local LongResponse extending GraphQLScalarType, hooked that in the plugin config as javaType Long.
Added the scalar LongResponse into the .graphqls, used it and rebuilt the sources.
I don't see it in the DataFetchersDelegate.
But when I started this issue, I wasn't aware that I rather need a BatchLoaderDelegate instead.
So maybe we should think into that direction.
Although I think, that a @directive is needed to force the builder to make an entry into the DataFetchersDelegate.
Or isn't it your goal to be schema-first(-and-ever) and expect everybody to make changes into the classes you generated?

Etienne,
I don't understand how scalar types can help me here
I made a local LongResponse extending GraphQLScalarType, hooked that in the plugin config as javaType Long.
Added the scalar LongResponse into the .graphqls, used it and rebuilt the sources.
I don't see it in the DataFetchersDelegate.
But when I started this issue, I wasn't aware that I rather need a BatchLoaderDelegate instead.
So maybe we should think into that direction.
Although I think, that a @directive is needed to force the builder to make an entry into the DataFetchersDelegate.
Or isn't it your goal to be schema-first(-and-ever) and expect everybody to make changes into the classes you generated?

Hello,
Your use case is still very unclear to me.
Yes, the goal of this plugin is to be a schema-first tool.
But I can not create a DataFetcherDelegate when an attribute is added with the extend GraphQL extension: this would break existing implementation, and need additional code on server side, when this is specific to your use case.
As you said, it could be solved by a specific directive that would create a DataFetcherDelegate.
But as I don't understand your use case, I don't understand why this would be useful.
So, here what I understand:
My understanding is that you need to use the Batch Loader mechanism.
That is : the calculation for the foo attribute would me much faster if you execute its calculation for several entities in a row.
Note that, to execute the BatchLoader, you juste need an entity with an Id.
Then, you mix this with the fact that you write this type as a String, wheras you need a Long.
So you should use a Long scalar type, for instance: graphql.Scalars.GraphQLLong (see the graphql-maven-plugin-samples-allGraphQLCases-client pom file for a sample).
Then your schema would look like this:
scalar Long

type Foo{
   id: ID
   foo(p: String): FooSubType
   fu(p: String): Bar
}

type FooSubType {
   id: ID
   value: Long
}

With this schema, you'll have a Batch Loader created for the FooSubType. And the value type would be a Long, as your client code expect it.
Etienne

Hello,
Your use case is still very unclear to me.
Yes, the goal of this plugin is to be a schema-first tool.
But I can not create a DataFetcherDelegate when an attribute is added with the extend GraphQL extension: this would break existing implementation, and need additional code on server side, when this is specific to your use case.
As you said, it could be solved by a specific directive that would create a DataFetcherDelegate.
But as I don't understand your use case, I don't understand why this would be useful.
So, here what I understand:
My understanding is that you need to use the Batch Loader mechanism.
That is : the calculation for the foo attribute would me much faster if you execute its calculation for several entities in a row.
Note that, to execute the BatchLoader, you juste need an entity with an Id.
Then, you mix this with the fact that you write this type as a String, wheras you need a Long.
So you should use a Long scalar type, for instance: graphql.Scalars.GraphQLLong (see the graphql-maven-plugin-samples-allGraphQLCases-client pom file for a sample).
Then your schema would look like this:
scalar Long

type Foo{
   id: ID
   foo(p: String): FooSubType
   fu(p: String): Bar
}

type FooSubType {
   id: ID
   value: Long
}

With this schema, you'll have a Batch Loader created for the FooSubType. And the value type would be a Long, as your client code expect it.
Etienne

Hello Etienne,
Ok, I will try the ID mechanism.
But in that case I need to call it with
foo { value }
?
not just foo as if it would be a Long?
Now I just create a newWiringTyp with a dataFetcher returning a CompletableFuture.
I reckon, your code will return a CompletableFuture?
But I will give it a try and might come up with more questions soon.

Hello Etienne,
Ok, I will try the ID mechanism.
But in that case I need to call it with
foo { value }
?
not just foo as if it would be a Long?
Now I just create a newWiringTyp with a dataFetcher returning a CompletableFuture.
I reckon, your code will return a CompletableFuture?
But I will give it a try and might come up with more questions soon.

Hello,
Yes, with the schema I proposed in my last message, you need to call it with
foo { value }
?
But this allows to have a Batch Loader
Please note that I still don't understand your use case. So, if you have further questions, please start by properly describe your use case.

Hello,
Yes, with the schema I proposed in my last message, you need to call it with
foo { value }
?
But this allows to have a Batch Loader
Please note that I still don't understand your use case. So, if you have further questions, please start by properly describe your use case.

I have an existing application I need to refactor. The former developer used your script for an intial build only and made all the changes "inline".
I have a field configured like:
shortname: String
A new line into GraphQLProvider was added manually
.type(newTypeWiring("LocationMM").dataFetcher("shortname", locationShortnameDataFetcher))
The autowired datafetcher looks like
public class LocationShortnameDataFetcher implements DataFetcher<Object>

	@Override
	public Object get(DataFetchingEnvironment environment) throws Exception {
...
		return dataLoader.load(locationShortnameDLRequestDTO); //returning CompletableFuture<String>
	}

        public BatchLoader<LocationShortnameDLRequestDTO, String> locationShortnameBatchLoader() {
		return (List<LocationShortnameDLRequestDTO> keys) -> CompletableFuture.supplyAsync(() -> {
                    return locationUtil.getLocationShortnameByLocationIdsFallback(keys);
                }, new TraceableExecutorService(this.beanFactory, Executors.newSingleThreadExecutor(), "locationShortnameBatchLoader"));
        }
}

The later was used here
public class CustomGraphQLInvocation implements GraphQLInvocation {
...
DataLoader<LocationShortnameDLRequestDTO, String> locationShortnameLoader = DataLoader.newDataLoader(locationShortnameDataFetcher.locationShortnameBatchLoader());
        dataLoaderRegistry.register("locationShortnameDL", locationShortnameLoader);

I will break this and try to use your BatchLoader. But it is a little restriction of your tool, that it is not possible to return a Long only.  I have to change the clients as well, which will be possible in my case, but not necessarily in everybody's.
type FooSubType {
   id: ID
   value: Long @returnValue
}

or something like that could make it possible.

I have an existing application I need to refactor. The former developer used your script for an intial build only and made all the changes "inline".
I have a field configured like:
shortname: String
A new line into GraphQLProvider was added manually
.type(newTypeWiring("LocationMM").dataFetcher("shortname", locationShortnameDataFetcher))
The autowired datafetcher looks like
public class LocationShortnameDataFetcher implements DataFetcher<Object>

	@Override
	public Object get(DataFetchingEnvironment environment) throws Exception {
...
		return dataLoader.load(locationShortnameDLRequestDTO); //returning CompletableFuture<String>
	}

        public BatchLoader<LocationShortnameDLRequestDTO, String> locationShortnameBatchLoader() {
		return (List<LocationShortnameDLRequestDTO> keys) -> CompletableFuture.supplyAsync(() -> {
                    return locationUtil.getLocationShortnameByLocationIdsFallback(keys);
                }, new TraceableExecutorService(this.beanFactory, Executors.newSingleThreadExecutor(), "locationShortnameBatchLoader"));
        }
}

The later was used here
public class CustomGraphQLInvocation implements GraphQLInvocation {
...
DataLoader<LocationShortnameDLRequestDTO, String> locationShortnameLoader = DataLoader.newDataLoader(locationShortnameDataFetcher.locationShortnameBatchLoader());
        dataLoaderRegistry.register("locationShortnameDL", locationShortnameLoader);

I will break this and try to use your BatchLoader. But it is a little restriction of your tool, that it is not possible to return a Long only.  I have to change the clients as well, which will be possible in my case, but not necessarily in everybody's.
type FooSubType {
   id: ID
   value: Long @returnValue
}

or something like that could make it possible.

Could you tell me, how I get the Keys?
@Override
    public CompletableFuture<ShortnameResponseMM> shortname(DataFetchingEnvironment dataFetchingEnvironment, DataLoader<UUID, ShortnameResponseMM> dataLoader, LocationMM origin) {
        return dataLoader.load(origin.);
    }

Could you tell me, how I get the Keys?
@Override
    public CompletableFuture<ShortnameResponseMM> shortname(DataFetchingEnvironment dataFetchingEnvironment, DataLoader<UUID, ShortnameResponseMM> dataLoader, LocationMM origin) {
        return dataLoader.load(origin.);
    }

Etienne, do you have a sample project where I can see how your generated BatchLoader code works in action?
Or a documentation?
My existing code has this line to the "real" code
public BatchLoader<LocationShortnameDLRequestDTO, String> locationShortnameBatchLoader() {
		return (List<LocationShortnameDLRequestDTO> keys) -> CompletableFuture.supplyAsync(() -> {
                    return locationUtil.getLocationShortnameByLocationIdsFallback(keys);
                }, new TraceableExecutorService(this.beanFactory, Executors.newSingleThreadExecutor(), "locationShortnameBatchLoader"));
        }

I understand, that I have to do something like
@Component
public class ShortnameResponseDF implements DataFetchersDelegateShortnameResponseMM {

    @Autowired
    private LocationUtil locationUtil;

    @Override
    public List<ShortnameResponseMM> batchLoader(List<UUID> keys) {
        List<LocationShortnameDLRequestDTO> dtoKeys = null;
        return locationUtil.getLocationShortnameByLocationIdsFallback(dtoKeys)
            .stream().map((String s) ->{
                ShortnameResponseMM result = new ShortnameResponseMM();
                result.setValue(s);
                return result;
            }).collect(Collectors.toList());
    }
}

But how/where do I collect/create the UUID so that I have the LocationShortnameDLRequestDTO?
What is the Best Practice?
Creating a random UUID and then?
   @Override
    public CompletableFuture<ShortnameResponseMM> shortname(DataFetchingEnvironment dataFetchingEnvironment, DataLoader<UUID, ShortnameResponseMM> dataLoader, LocationMM origin) {
        return dataLoader.load(UUID.randomUUID());
    }

But how do I map from the UUID to the data in origin or dataFetchingEnvironment that I need to create the RequestDTO?
And where do I store it, so that that my DataFetcher knows about it?
I can imagine trillions of ways. But I would like to know the Best Practice, you suggest.
Thanks a lot.

Etienne, do you have a sample project where I can see how your generated BatchLoader code works in action?
Or a documentation?
My existing code has this line to the "real" code
public BatchLoader<LocationShortnameDLRequestDTO, String> locationShortnameBatchLoader() {
		return (List<LocationShortnameDLRequestDTO> keys) -> CompletableFuture.supplyAsync(() -> {
                    return locationUtil.getLocationShortnameByLocationIdsFallback(keys);
                }, new TraceableExecutorService(this.beanFactory, Executors.newSingleThreadExecutor(), "locationShortnameBatchLoader"));
        }

I understand, that I have to do something like
@Component
public class ShortnameResponseDF implements DataFetchersDelegateShortnameResponseMM {

    @Autowired
    private LocationUtil locationUtil;

    @Override
    public List<ShortnameResponseMM> batchLoader(List<UUID> keys) {
        List<LocationShortnameDLRequestDTO> dtoKeys = null;
        return locationUtil.getLocationShortnameByLocationIdsFallback(dtoKeys)
            .stream().map((String s) ->{
                ShortnameResponseMM result = new ShortnameResponseMM();
                result.setValue(s);
                return result;
            }).collect(Collectors.toList());
    }
}

But how/where do I collect/create the UUID so that I have the LocationShortnameDLRequestDTO?
What is the Best Practice?
Creating a random UUID and then?
   @Override
    public CompletableFuture<ShortnameResponseMM> shortname(DataFetchingEnvironment dataFetchingEnvironment, DataLoader<UUID, ShortnameResponseMM> dataLoader, LocationMM origin) {
        return dataLoader.load(UUID.randomUUID());
    }

But how do I map from the UUID to the data in origin or dataFetchingEnvironment that I need to create the RequestDTO?
And where do I store it, so that that my DataFetcher knows about it?
I can imagine trillions of ways. But I would like to know the Best Practice, you suggest.
Thanks a lot.

Good Morning Etienne,
My current issue is how to pass f.e. parameter "p". I have access to the DataFetchingEnvironment when I call dataLoader.load.
But I cannot imagine, that it is good practice to serialize a request-object and pass the base64-encoded string via UUID.fromString.
Unfortunately there is no DataFetchingEnvironment parameter anymore when I override the batchLoader(List keys)
Thanks,
Markus

Good Morning Etienne,
My current issue is how to pass f.e. parameter "p". I have access to the DataFetchingEnvironment when I call dataLoader.load.
But I cannot imagine, that it is good practice to serialize a request-object and pass the base64-encoded string via UUID.fromString.
Unfortunately there is no DataFetchingEnvironment parameter anymore when I override the batchLoader(List keys)
Thanks,
Markus

Etienne,
We have an operation like this
locationInUseWsCount(type: LocationWsCountType!, days: Long, applicationGroups: [String]): LocationInUseWsCount
Unfortunately the generated code doesn't compile
```

public DataFetcher<CompletableFuture> dataFetchersDelegateLocationMMLocationInUseWsCountWithDataLoader() {
return dataFetchingEnvironment -> {
LocationWsCountType type = (LocationWsCountType) graphqlUtils.getArgument(dataFetchingEnvironment.getArgument("type"), "${argument.type.graphQLTypeSimpleName}", "java.util.UUID", LocationWsCountType.class);
Long days = (Long) graphqlUtils.getArgument(dataFetchingEnvironment.getArgument("days"), "${argument.type.graphQLTypeSimpleName}", "java.util.UUID", Long.class);
@SuppressWarnings("unchecked")
List applicationGroups = (List) graphqlUtils.getArgument(dataFetchingEnvironment.getArgument("applicationGroups"), "${argument.type.graphQLTypeSimpleName}", "java.util.UUID", String.class);
LocationMM source = dataFetchingEnvironment.getSource();
    DataLoader<UUID, LocationInUseWsCount> dataLoader = dataFetchingEnvironment.getDataLoader("LocationInUseWsCount");

    // This dataLoader may be null. Let's hande that:
    if (dataLoader != null)
        return dataFetchersDelegateLocationMM.locationInUseWsCount(dataFetchingEnvironment, dataLoader, source, type, days, applicationGroups);
    else
        return CompletableFuture.supplyAsync(
            () -> dataFetchersDelegateLocationMM.locationInUseWsCount(dataFetchingEnvironment, source, type, days, applicationGroups));
};

The types that are passed are the correct types. Long for days for example

But in DataFetchersDelegateLocationMM, they are
`public CompletableFuture<LocationInUseWsCount> locationInUseWsCount(DataFetchingEnvironment dataFetchingEnvironment, DataLoader<UUID, LocationInUseWsCount> dataLoader, LocationMM origin, LocationInUseWsCount type, LocationInUseWsCount days, LocationInUseWsCount applicationGroups);`
all LocationInUseWsCount types (the return type of the operation)

Are we doing something wrong or is this a bug?

Kind regards,
Markus

Etienne,
We have an operation like this
locationInUseWsCount(type: LocationWsCountType!, days: Long, applicationGroups: [String]): LocationInUseWsCount
Unfortunately the generated code doesn't compile
```

public DataFetcher<CompletableFuture> dataFetchersDelegateLocationMMLocationInUseWsCountWithDataLoader() {
return dataFetchingEnvironment -> {
LocationWsCountType type = (LocationWsCountType) graphqlUtils.getArgument(dataFetchingEnvironment.getArgument("type"), "${argument.type.graphQLTypeSimpleName}", "java.util.UUID", LocationWsCountType.class);
Long days = (Long) graphqlUtils.getArgument(dataFetchingEnvironment.getArgument("days"), "${argument.type.graphQLTypeSimpleName}", "java.util.UUID", Long.class);
@SuppressWarnings("unchecked")
List applicationGroups = (List) graphqlUtils.getArgument(dataFetchingEnvironment.getArgument("applicationGroups"), "${argument.type.graphQLTypeSimpleName}", "java.util.UUID", String.class);
LocationMM source = dataFetchingEnvironment.getSource();
    DataLoader<UUID, LocationInUseWsCount> dataLoader = dataFetchingEnvironment.getDataLoader("LocationInUseWsCount");

    // This dataLoader may be null. Let's hande that:
    if (dataLoader != null)
        return dataFetchersDelegateLocationMM.locationInUseWsCount(dataFetchingEnvironment, dataLoader, source, type, days, applicationGroups);
    else
        return CompletableFuture.supplyAsync(
            () -> dataFetchersDelegateLocationMM.locationInUseWsCount(dataFetchingEnvironment, source, type, days, applicationGroups));
};

The types that are passed are the correct types. Long for days for example

But in DataFetchersDelegateLocationMM, they are
`public CompletableFuture<LocationInUseWsCount> locationInUseWsCount(DataFetchingEnvironment dataFetchingEnvironment, DataLoader<UUID, LocationInUseWsCount> dataLoader, LocationMM origin, LocationInUseWsCount type, LocationInUseWsCount days, LocationInUseWsCount applicationGroups);`
all LocationInUseWsCount types (the return type of the operation)

Are we doing something wrong or is this a bug?

Kind regards,
Markus

If you have a valid GraphQL schema, and the generated code doesn't compile, then for sure, it's a bug!
If you provide me the GraphQL schema, I'll correct that.
Are you using the last plugin version, 1.11.1 ?
And yes, there is a sample on how to use BatchLoader. Take a look here: https://github.com/graphql-java-generator/GraphQL-Forum-Maven-Tutorial-server (search for BatchLoader)
It should answer your question: But how do I map from the UUID to the data in origin or dataFetchingEnvironment that I need to create the RequestDTO?
Etienne

If you have a valid GraphQL schema, and the generated code doesn't compile, then for sure, it's a bug!
If you provide me the GraphQL schema, I'll correct that.
Are you using the last plugin version, 1.11.1 ?
And yes, there is a sample on how to use BatchLoader. Take a look here: https://github.com/graphql-java-generator/GraphQL-Forum-Maven-Tutorial-server (search for BatchLoader)
It should answer your question: But how do I map from the UUID to the data in origin or dataFetchingEnvironment that I need to create the RequestDTO?
Etienne

Try this
directive @RelayConnection
on FIELD_DEFINITION
type Query {
location(id: ID!): LocationMM!
locations(filter: FilterMM): [LocationMM!]@RelayConnection
}
input FilterMM {
locations: [String]
}
type LocationMM {
id: ID!
name: String!
locOnlineWsCount(days: Int = 0): LocationOnlineWsCount
}
type LocationOnlineWsCount {
id: ID!
value: Int!
}

Try this
directive @RelayConnection
on FIELD_DEFINITION
type Query {
location(id: ID!): LocationMM!
locations(filter: FilterMM): [LocationMM!]@RelayConnection
}
input FilterMM {
locations: [String]
}
type LocationMM {
id: ID!
name: String!
locOnlineWsCount(days: Int = 0): LocationOnlineWsCount
}
type LocationOnlineWsCount {
id: ID!
value: Int!
}

Ok, I confirm the compilation error.
I'll work on this one quickly.
While waiting for the correction, you can manually correct the generated DataFetchersDelegateLocationMM class, I guess.

Ok, I confirm the compilation error.
I'll work on this one quickly.
While waiting for the correction, you can manually correct the generated DataFetchersDelegateLocationMM class, I guess.

Ok, the code now properly compiles. But the field's parameter is not transmitted yet to the dataloader.
I'll correct that, then release a 1.11.2 version

Ok, the code now properly compiles. But the field's parameter is not transmitted yet to the dataloader.
I'll correct that, then release a 1.11.2 version

The 1.11.2 version is beeing released, and should be available soon.
You have to activate the generateBatchLoaderEnvironment plugin parameter to true, in the pom.xml.
All your batchLoader method will need a new parameter (environment).
You'll find a samples in the allGraphQLCases sample:

How to associate a parameter to an id:
Take a look at the oneWithIdSubType method of this class:
https://github.com/graphql-java-generator/graphql-maven-plugin-project/blob/master/graphql-maven-plugin-samples/graphql-maven-plugin-samples-allGraphQLCases-server/src/main/java/org/allGraphQLCases/server/impl/DataFetchersDelegateAllFieldCasesImpl.java

How to retrieve this parameter from an id:
https://github.com/graphql-java-generator/graphql-maven-plugin-project/blob/master/graphql-maven-plugin-samples/graphql-maven-plugin-samples-allGraphQLCases-server/src/main/java/org/allGraphQLCases/server/impl/DataFetchersDelegateAllFieldCasesWithIdSubtypeImpl.java

The 1.11.2 version is beeing released, and should be available soon.
You have to activate the generateBatchLoaderEnvironment plugin parameter to true, in the pom.xml.
All your batchLoader method will need a new parameter (environment).
You'll find a samples in the allGraphQLCases sample:

How to associate a parameter to an id:
Take a look at the oneWithIdSubType method of this class:
https://github.com/graphql-java-generator/graphql-maven-plugin-project/blob/master/graphql-maven-plugin-samples/graphql-maven-plugin-samples-allGraphQLCases-server/src/main/java/org/allGraphQLCases/server/impl/DataFetchersDelegateAllFieldCasesImpl.java

How to retrieve this parameter from an id:
https://github.com/graphql-java-generator/graphql-maven-plugin-project/blob/master/graphql-maven-plugin-samples/graphql-maven-plugin-samples-allGraphQLCases-server/src/main/java/org/allGraphQLCases/server/impl/DataFetchersDelegateAllFieldCasesWithIdSubtypeImpl.java

Actually my client code expects Long without the value.
Isn't it possible to define a directive so that you know, which field of FooSubType is the actual return type?

Actually my client code expects Long without the value.
Isn't it possible to define a directive so that you know, which field of FooSubType is the actual return type?

Etienne, thanks for the quick fix.
And for the sample at 2.
Could you please explain, why it is not possible to define a directive the generator is looking for in order to do exactly the same as if the return value would contain an ID.
So that we can make
foo(p: String): FooSubType
a
foo(p: String): String @yourdirective
Internally you could create a FooString class with an ID and process it as usual.

Etienne, thanks for the quick fix.
And for the sample at 2.
Could you please explain, why it is not possible to define a directive the generator is looking for in order to do exactly the same as if the return value would contain an ID.
So that we can make
foo(p: String): FooSubType
a
foo(p: String): String @yourdirective
Internally you could create a FooString class with an ID and process it as usual.

Of course.
But this is a very specific need.
I'm already spending a lot of my personal time for the plugin.
So I won't develop such specific need (at least, not for free). My opinion is that you can do it, with a separate GraphQL type. The only consequence is to add a getter. It seems quite good and simple...

Of course.
But this is a very specific need.
I'm already spending a lot of my personal time for the plugin.
So I won't develop such specific need (at least, not for free). My opinion is that you can do it, with a separate GraphQL type. The only consequence is to add a getter. It seems quite good and simple...

Ok, personally I can change my clients.
But I think you need this feature, when your user base grows, that is really using your plugin in every build and doesn't use it to generate an initial template to start with.

Ok, personally I can change my clients.
But I think you need this feature, when your user base grows, that is really using your plugin in every build and doesn't use it to generate an initial template to start with.

BTW, the plug-in already allows you to create your own templates.
Take a look at the custom templates feature.

BTW, the plug-in already allows you to create your own templates.
Take a look at the custom templates feature.


Prepare new 1.2.1-beta.0 release

New release

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

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

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
1164

Relevant Lines:
1557

💛  - Coveralls


Project Cleaning and Restructuring

To prepare the project for next year's website, I've cleaned and restructured it.
All files from 2016 and Meteor files have been removed.
Restructure changes:

Project is now structured around Mustache templates (with their corresponding YAML files), compiled with the Mustache ruby gem. These templates are then manually concatenated into one HTML file by the Makefile, which also specifies the concatenation order. The head template is special, and is put in the head, obviously. Minification/beautification could be added in too.
JS files are in their own directory. Again, they are manually concatenated to create a "bundle." Uglification could be added here, as well as wrapping the whole thing in a $(document).ready(). External JS dependencies could also be handled better, as now they must be put in the head template.
Added Compass and fiddled with config.rb to produce compressed css.
Sass is structured as many partials and one main file which includes said partials to create a css "bundle." I'm assuming here that you have one file per template, but that doesn't have to be true.
A custom Makefile compiles everything.
As we seem to be leaning towards ruby tools here, I added a Gemfile/.lock to track gem dependencies.
Added CNAME (previously missing in develop repo)
Updated .gitignore
Removed Google Analytics (since we weren't using it)

.meteor directory is still there
Can we include a make install step that gets all dependencies?


[Autocomplete] Support defaultValue when using asynchronous feature

[x] I have followed (at least) the PR section of the contributing guide.

When using Asynchronous requests, when you set a defaultValue, it doesn't update to the correct selected option after options is loaded. This pull requests will resolve this problems searching the value and showing the correct label.
Sandboxed problem: https://codesandbox.io/s/material-demo-n0cmw

@oziniak could you help me with that failing test?

It's the second time I see this concern raised but I can't find a trace of the first time. In any case, there is a problem with this approach, getOptionLabel also impacts the rendering of the input value, we should, in theory also use it. However, it would force to refactor all the demos. In the initial discussion, the recommendation was to set a key.
What do you think (thanks for starting to work on the problem)?

Hey @oliviertassinari,
I couldn't understand very well your point. Could you please elaborate more about the problem with this approach? I have made some changes to also set the value when in the first render after load options.
I also tried to search the first appearence of this concern, to try to understand where the key should be to resolve this problem. Is it the discussion?
Reading the above thread I still don't understand how the workaround should be applied.
(Searching for others things related, I found have this doubt.)

@guiihlopes Hum, maybe this discussion never happened outside of my head when designing the component 😆. The problem is that getOptionLabel should, in theory, impact the value we display in the input (not the options prop). With a new function, I would expect the value to be updated accordingly. Now, in all the demos, we don't memoize the provided prop, so the reference changes at each render. I don't know how we could better solve this problem. But maybe there is a way out.
What if we were triggering the reset lifecycle when the textbox isn't focused and the value or the getOptionLabel method changes? 🤔

Ha, yes, it's this one! #19153

Hmmm, I got it!
I couldn't get it work in this way. The problem isnt't when we will trigger the reset lifecycle, but the value we would like to show. Using defaultValue we just have a string and getOptionLabel method must need a valid option which is an object with the mapped label property.
I can't think an other way we could accomplish the right option label rendering without using the options list.
I have made other propposal over this one here. By this way we just have a property to know when it loads the option for the first time and don't interfere in the others cycle`s.
What do you think? Feel free to edit anything you would like.

If you need this today, change the key once you have the data
Based on your use case, and codesandbox, the solution proposed above "triggering the reset lifecycle when the textbox isn't focused and the value or the getOptionLabel method changes" would be a great feat.

I can't think an other way we could accomplish the right option label rendering without using the options list.

Definitely, you have to use the options, my point was about using it internally. I don't think that it's needed nor wanted.

If you need this today, change the key once you have the data.
Based on your use case, and codesandbox, the solution proposed above "triggering the reset lifecycle when the textbox isn't focused and the value or the getOptionLabel method changes" should cover your problem.

I understood what you were referring to in relation to the key. I had forgotten about this trick to re-render the component! I made another sandbox with the solution. What do you think of the solution, is there any other way to improve?
In my opinion this would need to go into the documentation. It is not so simple to arrive at this point, what do you think of adding in the documentation this way to solve this problem? This, if it is decided not to maintain this logic within the component.
I am ending this PR for having managed to solve this problem with the current code.

Thanks for sharing your solution. IMHO, we shouldn't need to change the key. But it's effective.

If you need this today, change the key once you have the data.
Based on your use case, and codesandbox, the solution proposed above "triggering the reset lifecycle when the textbox isn't focused and the value or the getOptionLabel method changes" should cover your problem.

this save my day, thank you


C# Teams-auth / about AAD SSO

Sample information

46.Teams-auth

Describe the bug

If clicked accept in the Teams desktop app, the accept page does not open
If the accept page open in Teams web, it automatically accepted it without any procedure

To Reproduce
Steps to reproduce the behavior:
Describe the bug about 1.

Go to 'Teames desktop'
Click on 'Teams-auth app'

Describe the bug about 2.

Go to 'Teames web'
Click on 'Teams-auth app'
(but at the very first time i try to get a authorization i needed to click the authorization button)

Hi @dhddldid,
Could you please provide:

More information regarding each scenario.
More details regarding your deployment and testing environment.

The detailed scenario is as follows

I followed the 46.teams-auth code

I followed the document to register azure bot and to configure sso.

And in the web version of Teams, it worked as follows.

The problem described in "Describe the bug about2" occurs here.
At first, there was a button to agree, but now it automatically agrees.

In addition, the following phenomenon occurs in Teasm's desktop app
(To return to the scenario for consent, we modified the permission of Microsoft Graph.)

Press the displayed "Continue" button
The following window did not appear
This is about "Describe the bug about 1."

Thank you. I will attempt to reproduce this issue.

@dhddldid
At the moment, I am unable to reproduce Bug #1. With the User.Read scope, I am able to see the consent window when the bot is running in Teams.
As for Bub #2, I believe that this may actually be intended behavior, and not a bug. After you log in once, you remain logged in until the token expires unless you explicitly log out.

@anishprasad01 Thank you for thinking about the bug and answering.
I will share my opinion on the answer.
In Bug 1, can you try to press permission after turning on the Teams desktop app without opening the web page?
If you follow the above scenario and the page opens the same way, I'll closed bug1.
In Bug 2, if you want to reopen pages that allow permissions, you can:
When you modify the permissions in AAD as shown in the figure, you will have to accept the permissions again in Teams, as you saw in the phrase "You are editing permission(s) to your application, users will have to have them already done if they appear on the Accept Permissions page as if they were logged in for the first time. At this time, please check if the authority is accepted automatically.

I don't think it has anything to do with login and token.
Could you give it another try?

@anishprasad01

You're right, I'm referring to running only on the desktop app.

Thanks for trying.

Thanks for checking the issues. We will see you often in the future as we develop the Teams app.
Am I asking for closed? This is my first time doing a git issue.

Thanks for clarifying. Feel free to open an issue in the appropriate repository as needed, and good luck with your project.


Supports both []int8 and []uint8 from uts.Release[:].

Solves #2506

In https://github.com/weaveworks/weave/issues/2506#issuecomment-248435313 I suggested to simply inline the function, which would be simpler.

Replaced by #2538.


The application failed when I use the context menu!

Description
The aplication failed when I try to acess the context menu!
Steps To Reproduce

Open Files.

Access one of the directories

select one archive
try to access the context menu
the aplication failed and restart

Expected behavior
I expeted to acess the context menu normaly.
Files Version
Versão: <IP_ADDRESS>
Windows Version
Windows 11 Version: 10.0.22000.100
Relevant Assets
No response

You will need to upload the logs folders. You can get them in files settings > about > open log folder

debug.log
debug_fulltrust.log

@estrelaporvenus is this still an issue in v1.9.32?

No! Since v1.9.24 the context menu works properly! Thanks! 👏🏿🖤


[PC] ui.py is missing libnppc.so.11

Describe the bug
I have an identical issue as #26503 #26595 and I tried to see if I can see camera images from ./ui.py and noticed another issue:
root@research:/openpilot/tools/replay# ./ui.py
Traceback (most recent call last):
  File "./ui.py", line 6, in <module>
    import cv2  # pylint: disable=import-error
  File "/root/.pyenv/versions/3.8.10/lib/python3.8/site-packages/cv2/__init__.py", line 8, in <module>
    from .cv2 import *
ImportError: libnppc.so.11: cannot open shared object file: No such file or directory

Partial workaround, upgrading opencv from  <IP_ADDRESS> to <IP_ADDRESS> fixes the issue with the missing libnppc.so.11 shared library but only opens up a blank windows:
root@research:/openpilot/tools/replay# pip  list | grep cv
opencv-python-headless        <IP_ADDRESS>

root@research:/openpilot/tools/replay# pip uninstall  opencv-python-headless

root@research:/openpilot/tools/replay# pip install opencv-python-headless
Collecting opencv-python-headless
  Downloading opencv_python_headless-<IP_ADDRESS>-cp36-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl (48.3 MB)
     ━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━ 48.3/48.3 MB 32.2 MB/s eta 0:00:00
Requirement already satisfied: numpy>=1.14.5 in /root/.pyenv/versions/3.8.10/lib/python3.8/site-packages (from opencv-python-headless) (1.23.4)
Installing collected packages: opencv-python-headless
Successfully installed opencv-python-headless-<IP_ADDRESS>
WARNING: Running pip as the 'root' user can result in broken permissions and conflicting behaviour with the system package manager. It is recommended to use a virtual environment instead: https://pip.pypa.io/warnings/venv

Update: The main issue is that commaai's version of opencv is missing libnppc.so.11. Updating pyproject.toml  solves THIS issue but probably introduces other issues.  since  I could not find any documentation why comma.ai has it own version of opencv, I will not create any pull request
OS Version
Ubuntu 20.04 / docker
openpilot version or commit
Tested on 72bf819ef06ee81f37d33f45979dfcf8d88b0ad3 (but this commit is not relevant)
Additional info
No response

Passing --high_quality --dual_camera to bridge.py solved the camera issue and now the window is not blank. I keep this issue open so the dependency problem (libnppc.so.11) can be solved too

I had the same issue with NVIDIA driver 525 and CUDA 12.0. Swtiched to NVIDIA driver 520 and CUDA 11.8 fixed my issue.

We've updated the python packages a few times since then. Feel free to make another issue if you're still having this issue.


Why i can't watch this type of video from webview of viseron in recordings?

Subj
Why i can't watch this type of video from webview of viseron in recordings?
What would be best settings to convert this to playable video?

This is esp32-cam with some firmware...

You would need to transcode the videos by setting codec: h264 in your camera config under the recorder block, that should hopefully resolve your issues

You would need to transcode the videos by setting codec: h264 in your camera config under the recorder block, that should hopefully resolve your issues

Tried it, still doesn't help

Any errors in the browser console?


User's permission on applications

Hi! After several testings I realize that user's tab under application configuration (ActiveDirectory-> Applications -> Users) has no effect on allowing or not a user to log into the application. Does anyone know which is the objective of that configuration ? Or maybe I'm using it in a wrong way.
Thanks a lot.

That configuration controls the provisioning of users into several of our pre-integrated SaaS applications, the appearance of the app in the user's access panel, and the assignment of the user to application roles.  I suspect for the purposes of this sample, you would be most interested the application roles - see https://github.com/azureadsamples/webapp-roleclaims-dotnet.
This is a question we get frequently, and we are actively considering what the implied meaning of this switch should be.

I'm going to close this issue if that's OK, since it doesn't relate directly to the scenario this sample tries to accomplish.

Ok dstrockis thanks a lot!

No problem


Improve side-nav

A collection of ideas:

with fixed side-navs, adjust the page content automatically
implement a working toggle for fixed side-navs
implement a resizer

Regarding page content:
If you have a fixed side-nav you need to add some padding to the edge where that side-nav appears (and also to the other edge if there is content). On smaller screens that padding must be gone.
Although that could be done with css media queries, the width of the side-nav would then be static.
This is also a prerequisite of a toggler (media queries don't fit in that case) and a resizer (padding must be adjusted dynamically).

This same issue bugs me with Aurelia components catalog help sidebar - this being particularly ugly case

The easiest fix is to remove these "down arrow` glyphs - which I will do right away since these are not used in the samples catalog and nobody complained how it was not obvious that they need to click to "open" the accordeon.
I would really like to use resizable side navigation panel. Do me a favor please and see how would size.js based solution feel like

It works but it seems the gutter depends on having a fixed-size parent (or maybe absolute positioning or flexbox). So we're there again. :smile:
Also I don't know if that's a good solution for fixed side-navs. Usually these are embedded in the header but really can be anywhere. To be "splittable" they would need to have the same parent as <header>, <main> and <footer> or a wrapping element.
It's a good thing for the docs, though. May need some tweaking. I'm uploading it into the repo.

My idea for step1: adjust the page content automatically..

implement a service which publishes events on sidenav states (visible, hidden, fixed) - this service is called from within md-sidenav on show/hide/fixedChanged
implement a custom attribute to be placed on the part(s) of the DOM which needs to be resized - this attribute subscribes to the above mentioned service's events and does the resizing, mimicing things done in materialize sidenav code

This way, the sidenav, its service and the resize locations are decoupled and can be specified by the user.
I've created a new branch to try this out.

Unfortunately, it's not that easy. There are too many things happening which we can't seem to influence (f.i. private variables). A lot of side effects when you just want to "unfix" the sidenav.
That works, btw - getting the sidenav back is another problem. :smile:
I'll put these sidenav improvements aside for a while.

Seems related: https://github.com/Dogfalo/materialize/issues/1488#issuecomment-168693324


[Feature] make generated files indent style configurable [sf#2]

Reported by emmanuel1812 on 2003-01-21 10:43 UTC
Hello,
I'm using the wxGlade feature of only writing certain

parts of the file when generating, so I actually modify the
generated file.
However, I indent with tabs, and wxGlade indents
with spaces. Can this be made configurable somewhere
deep in a .wxgladerc or something like that?
Thank you,

emmanuel

Commented by agriggio on 2003-01-26 12:47 UTC
Logged In: YES
user_id=375945
I'll try to see what can be done.
Thanks to you for the suggestions,
Alberto

Commented by agriggio on 2003-01-26 12:53 UTC
Logged In: YES
user_id=375945
I'll try to see what can be done.
Thanks to you for the suggestions,
Alberto


Add downloading of the artifact ff build for mochitests

To run gulp prepare-mochitest and then gulp mochitest
Experimental:

[ ] check if works on Linux
[ ] check if works on Windows

@yurydelendik Is this still relevant to have? I think upstream is running these tests anyway, right?