Running Xorg inside a container

I'm trying to figure out the secret behind running Xorg in a container. I managed to get it running, but now I'm stuck at the last step: unresponsive keyboard and mouse. I saw that you had the same problem in #7; did you have any luck with it?
I thought that's what --xorg option does, but from what I see it just runs another Xorg instance on the host, and connects the container to it. What I want is to avoid depending on the host's Xorg - for example, sometimes I want to try another version of Xorg. Ideally, I wanted to be able to run Wayland this way as well - not depending on anything on the host at all, except the kernel and the kernel graphics driver.
Or am I misunderstanding things, and --xorg actually runs the Xorg server in the container?

Could it be possible to use #253 for keyboard and mouse passthrough?..

I've found #221 . I wouldn't mind giving the container enough privileges to use my mouse and keyboard; I'm already giving it my whole graphics card to do acceleration, which is much more significant. The alternative is rebooting into those systems, giving them complete access to my whole system while not being able to use them at the same time.
But I really want acceleration, so Xpra is not going to help, and as far as I remember, Weston doesn't even work properly on Debian Buster (too old). The idea is to have the same experience as with running Xorg on the host, but use the container's Xorg version (for testing bugs in graphical applications, mostly).

I'm trying to figure out the secret behind running Xorg in a container. I managed to get it running, but now I'm stuck at the last step: unresponsive keyboard and mouse. I saw that you had the same problem in #7; did you have any luck with it?

I remember that I had the problem and solved it. However, it#s a long time and I don't remember clearly what I did.
IIRC it was something about evdev and the Xorg evdev drivers. Maybe you just need to install libevdev2 and/or the Xorg evdev drivers in the image.

The idea is to have the same experience as with running Xorg on the host, but use the container's Xorg version (for testing bugs in graphical applications, mostly).

If it is only to test the xorg version, it will be easier to run Xorg with the dummy video driver in container and access it with xpra. But the dummy video driver does not provide hardware acceleration.

Ideally, I wanted to be able to run Wayland this way as well - not depending on anything on the host at all, except the kernel and the kernel graphics driver.

Running a nested/windowed Wayland in a container that shows up on Xorg on host  is no problem. For testing purposes this should be enough. for example, this runs the KDE Wayland in container:
x11docker --gpu --init=systemd -- --cap-add SYS_RESOURCE -- x11docker/kde-plasma startplasmacompositor

What I want is to have the same experience as with running Xorg on the host, but sometimes things don't work with the Xorg version in Debian Stable... the most recent example being the development build of Godot engine with Vulkan rendering backend. So unlike security, acceleration and video driver are not things I can sacrifice. :) I know I can always "do something else instead", but I want to try getting to the bottom of actually running Xorg (and what it would take).
Nested Wayland in X is not cool enough! :) Especially if I want to see if the new Plasma release is stable enough to run and has finally defeated tearing. And work in it. This approach only adds instability - on my system, it took a very long time to start, and then did not resize properly. (That's Plasma's fault, I guess - that's why I want to test it "close to bare metal".)
According to this:
https://stackoverflow.com/questions/33585482/keyboard-mouse-are-unresponsable-when-running-x-org-in-a-docker-container
https://stackoverflow.com/questions/50789172/libinput-in-a-docker-container
...the problem is that we have to force Xorg to use those devices, which is supposed to be managed by logind... isn't there an easier way nowadays?.. I've tried installing xserver-xorg-input-evdev, but that won't make Xorg pick up the devices. What's even worse, I'm using a USB KVM, so my keyboard and mouse are always hot-plug.
So you do remember that there is a solution, but it seemed too hacky and insecure to implement in x11docker, is that right?

the problem is that we have to force Xorg to use those devices, which is supposed to be managed by logind... isn't there an easier way nowadays?.

Well, logind is the "nowadays" way, coming along with systemd.
Maybe you need an entry in xorg.conf.d/ in container. Compare the gentoo wiki: https://wiki.gentoo.org/wiki/Evdev

So you do remember that there is a solution, but it seemed too hacky and insecure to implement in x11docker, is that right?

I remember that in the final end I had a running Xorg with keyboard and mouse, but was not able to switch to other tty's.
I decided not to implement this in x11docker for two reasons:

Xorg (and Wayland) heavily interact with the hardware. If they make false assumptions about the hardware because they see something wrong within the container, they might damage the hardware.
Running a container with high privileges gains no security.

I think the requested use case here is almost more aligned to the snap packet management system. It would allow you to have multiple versions of the same package (Xorg) installed.

@jd666 Thank you for your suggestion. I am not a fan of snap,  but for this use case it might be the better choice, indeed.

The idea is to have, say, the latest Ubuntu running "just like it's supposed to", like in a VM, to see how exactly is it supposed to run - without having to do things like check the Xorg version first, install it on the host in a snap package, which I'm also not a fan of...
Thank you for sharing your experience! So, after getting the devices to work, and not necessarily hotplug, there is at least one more challenge of being unable to switch VTs... I guess this is really far too complex for the benefit of "using the Xorg shipped in the container".


[jest-each] Fix test function type

Summary
Fixes: #8144
Test plan
Types should pass

Codecov Report

Merging #8145 into master will not change coverage.
The diff coverage is 100%.

@@           Coverage Diff           @@
##           master    #8145   +/-   ##
=======================================
  Coverage   62.44%   62.44%
=======================================
  Files         264      264
  Lines       10371    10371
  Branches     2515     2516    +1
=======================================
  Hits         6476     6476
  Misses       3318     3318
  Partials      577      577

Impacted Files
Coverage Δ

packages/jest-each/src/index.ts
100% <100%> (ø)
: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 0100877...b93399c. Read the comment docs.


slackclient v1.3.1: SlackClient.rtm_connect() does not work for newly created apps

Hi
We're using slackclient version 1.3.1 to get credentials to connect to a bot using SlackClient.api_call()
and connecting using these credentials with rtm_connect()
Although there were no code change at all from our side, the application is showing a new error when trying to connect:
slackclient.server.SlackConnectionError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1056)
I saw in sdk version 2.0.0 there was a separation to WebClient, which has a ssl property in the constructor, that helped others with the same issue
Couldn't find anything similar in 1.3.1
Was there a recent change that is causing the problem that needs a fix similar to described in https://stackoverflow.com/questions/59808346/python-3-slack-client-ssl-sslcertverificationerror ?
Is there a workaround for v1.3.1?
The Slack SDK version
slackclient version 1.3.1
websocket 0.47.0
Python runtime version
python version 3.7
OS info
Centos7
No Proxy
Steps to reproduce:
use SlackClient.server.rtm_connect() with bot_access_token and bot_user_id credentials from a new workspace.
self.slack_client.server.rtm_connect(auto_reconnect=True, use_rtm_start=False)
Expected result:
connecting to slack and sending messages using rtm_connect
Actual result:
getting SlackLoginError
adding the traceback, maybe a change accrued along the way
Traceback (most recent call last):
  File "slackclient/server.py", line 192, in connect_slack_websocket
  File "websocket/_core.py", line 511, in create_connection
  File "websocket/_core.py", line 220, in connect
  File "websocket/_http.py", line 126, in connect
  File "websocket/_http.py", line 253, in _ssl_socket
  File "websocket/_http.py", line 232, in _wrap_sni_socket
  File "ssl.py", line 412, in wrap_socket
  File "ssl.py", line 853, in _create
  File "ssl.py", line 1117, in do_handshake
ssl.SSLCertVerificationError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1056)

During handling of the above exception, another exception occurred:
Traceback (most recent call last):
  File "algobot/slack/mainloop.py", line 156, in mainloop
  File "slackclient/server.py", line 159, in rtm_connect
  File "slackclient/server.py", line 200, in connect_slack_websocket
slackclient.server.SlackConnectionError: [SSL: CERTIFICATE_VERIFY_FAILED] certificate verify failed: unable to get local issuer certificate (_ssl.c:1056)

Thanks!!

This one seems to be duplicated with #1287


Change primary color in dark theme for higher contrast

See https://github.com/open-rpc/open-rpc/issues/432:
Taking a look at a page like open-rpc.org/use in dark mode:
The background color is 212121. The color of links is 3F51B5 based on MuiTypography-colorPrimary. The content of the links can be hard to read in some scenarios.
Using a tool like WebAim's contrast checker this produces a contrast ratio of 2.34, not passing any standard for contrast. I'd suggest using a lighter color like blue[300] in the same spectrum to be more visible.

hi @Fleker, thanks for the PR.
I opened #3 to add configuration for the primary and secondary color, so that we can configure it in the gatsby-config of the open-rpc website:
https://github.com/open-rpc/open-rpc/blob/ec91962bfe9fe0f50cf26dbf8a1e53dade8584fe/gatsby-config.js#L9

closed in favour of #3


Implement new reader, which is capable to restore the existing behavior by reading the new configuration structure

The idea discussed in a first meeting was to remove the context.xml from the root folder and put the triggers directly in the subfolders. Either as a separate context.xml file in the subfolder or inside the templates.xml file.


Docs/find r ref

What I Changed
Added reference in working with R in the pages listed below in how to test it.
How to test it
Spin up docs locally and visit:

http://[::]:8000/technical_tutorials/working_with_r/find_data_in_r.html
http://[::]:8000/technical_tutorials/working_with_r.html
http://[::]:8000/technical_tutorials/accessing.html
http://[::]:8000/technical_tutorials/searching.html

Other notes
Closes https://github.com/NASA-IMPACT/active-maap-sprint/issues/1044

Is this the first time we've cross listed a tutorial under 3 different headings. Is that weird? Should there be a different way to send you to the R section?

It's pretty clear where to go to work with R, it's under 'working with R'. The question seems more should the other sections of the guide be solely Python based? The find-R docs from OpenScapes have content on searching and accessing, so I linked them in those sections also. We may want to remove them.


Timeseries plot for graph on CanberraAir should round, to be consist with other PM 2.5 information returned

What do you mean by "other PM 2.5 information returned"? The numbers under "Current Air Quality" are also decimal numbers.

The PM 2.5 data at the top of the page is rounded.

AQI is rounded. Raw PM2.5 is not...


Add text.is-ascii

closes #127

PR-Codex overview
This PR adds functionality to the text module in the form of three new tests and two new methods, is-ascii and bytes-1-to-8. The is-ascii method checks if all characters in a string are ASCII characters, while bytes-1-to-8 returns a concatenation of all strings.
Detailed summary

Added three new tests to text-tests.eo

check-is-ascii
check-is-ascii2
check-is-ascii3

Added two new methods to text.eo

is-ascii
bytes-1-to-8

✨ Ask PR-Codex anything about this PR by commenting with /codex {your question}

@Graur, can you have a look pls?

@rultor merge

@rultor merge

@yegor256 OK, I'll try to merge now. You can check the progress of the merge here

@rultor merge

@yegor256 Done! FYI, the full log is here (took me 8min)


Source Control text field steal focus when Experimental Edit Context Enabled is enabled

Does this issue occur when all extensions are disabled?: Yes

Version: 1.96.0-insider (user setup)
Commit: 818169af1dac5a59b4cb43c5681cfe0ea4a23463
Date: 2024-11-07T05:05:36.563Z
Electron: 32.2.1
ElectronBuildId: 10427718
Chromium: 128.0.6613.186
Node.js: 20.18.0
V8: 12.8.374.38-electron.0
OS: Windows_NT x64 10.0.26100
Steps to Reproduce:

Enable Experimental Edit Context Enabled - editor.experimentalEditContextEnabled
Reload window
Open new file, type something and copy it
Click on the Source Control icon
Try to paste something in the new file

Pasted text is added to Source Control text field even if it's not focused.
https://github.com/user-attachments/assets/1f67f592-be19-4563-8256-5a793bfdc79e

@aiday-mar, could you please take a look at this one? Thanks!

Hi thanks for filing this issue. I fixed the issue a couple of minutes ago as I was seeing the same behavior. The relevant PR is here : https://github.com/microsoft/vscode/pull/233309 and the relevant issue is here https://github.com/microsoft/vscode/issues/233310


Scanning of TB-codes with external app ?

Just today a strange idea came into my mind and I want to ask you about your opinion and about the general feasibility:
Since some weeks you implemented the import of QR-Codes via QR-Droid,etc to scan GC-Codes.
When selecting this feature it also allows me to open Google Goggles. This made me think about the following:
I tried Goggles to read a Travel Bug Dog Tag and it worked, that it delivered back the TB-code from the tag.
Would it be possible to allow scanning of the code and opening the TB-page with it ?
Just today I went again to a TB-Hotel with >10 Bugs and most of them without description of the goal.
So I had to input each code manually into the c:geo search to look them up.
I dont really know if scanning is faster, but if Goggles is working reliable it could save a lot of manual input (and its a really sophisticated feature :) )

Yeah, should be possible. I'm thinking about it for several months now, but never thought about Google Goggles.

I'm not so sure about this because there is a major difference between the GC and TB codes: The GC codes which you can currently scan are not really GC codes like GC12345, but instead hyperlinks like http://coord.info/GC12345. And c:geo can easily be registered for hyperlinks matching certain patterns, therefore c:geo can be invoked from any barcode reader (without the need for c:geo already running).
As the TB code is really only a TB code, it would not be possible to invoke c:geo from the barcode reader. It would only be possible to invoke a barcode reader explicitly from some activity of c:geo.

I made some more tries with Goggles and I have to revert my first statement a little bit.
It seems that it does not read the codes from the tag very reliable. On most tries it only identifies theTB logo.
So maybe Goggles is not the right app to do it.
@Bananeweizen I think it would be sufficient to start the app from cgeo.. invoking from other program is not necessary.

It must only be a program, which returns the scanned text back to c:geo.. don't know if goggles provides this

To me it seems that we will not be able to do anything here in the near future. Therefore closing. Please reopen if circumstances change...


Add BulkSize method to get the bulk request body size in bytes

I’m using this method to send bulk request based in the bulk body size

Thanks for collaborating. I'm not sure if I want this to be part of the core client. What do you use it for?

I'm using bulk size to know the bulk request body size and control when I want to send the request. It's an alternative approach to NumbersOfActions function.
Regards,
Cleiton
On Oct 28, 2015 5:54 AM, Oliver Eilhard<EMAIL_ADDRESS>wrote:Thanks for collaborating. I'm not sure if I want this to be part of the core client. What do you use it for?
—Reply to this email directly or view it on GitHub.

I understand. Hmm... I'm trying to keep elastic aligned to the Java API. The Java API doesn't have a concept like this. I see how this can be useful in certain use cases, but I think I refrain from adding it to core. Do you see a way of adding this to your application without modifying elastic?
Furthermore, the name bulkSize (to represent the request body size) clashes with the concept of "bulk size" used in the clients to represent the number of "requests to send in one batch"; perhaps using bodySize or requestBodySize would be a better fit?


Using Flask debug toolbar to profile POST responses

Hi, I want to know how to use POST method  to profile my app, everything is fine when i use GET method

Not clear what's being asked for here. This injects the toolbar in any HTML response, as well as in redirect pages. If this is still an issue please provide a minimal reproducible example.


feat: set default macaddress when vmi is removed

Problem:
After we updated KubeVirt to v1.0.0, the actual generation is different from expected. The root cause is that we set macaddress to VM and don't restart the VM.

Solution:
Set interfaces to VM when VMI is deleted.
Related Issue:
https://github.com/harvester/harvester/issues/4866
Test plan:
Restart VM.

Create a VM. There is no warning message on the dashboard.
Check macaddress in vmi.status.interfaces.
Click Restart on the dashboard.
Check the macaddress is set to vm.spec.template.spec.domain.devices.interfaces.

Use command to stop VM and start again on dashboard.

Create a VM. There is no warning message on the dashboard.
Run sudo shutdown now in the VM.
Check macaddress in vmi.status.interfaces. VMI status is Succeed in this step.
Click Start on the dashboard.
Check the macaddress is set to vm.spec.template.spec.domain.devices.interfaces.

Migrate VM doesn't delete VMI, so the macaddress is not set to the VM, but it's still same in the new pod

Create a VM. There is no warning message on the dashboard.
Check macaddress in vmi.status.interfaces.
Click Migrate on the dashboard.
Check macaddress again in vmi.status.interfaces. They're same. Also, there is no warning message on the dashboard.

When a VM starts the first time, the GUI can't display its MAC address (The network has to be a VLAN network). The GUI seems to get the MAC address from the VirutalMachine resource.

this change will affect the UX. end users will not be able to view the mac address until the VM is stopped the first time.
would it not be better to have a mutating webhook to patch VM spec with a mac address if it is empty on creation. this will ensure mac address propogates to vmi and the vm and vmi generation stays in sync.

would it not be better to have a mutating webhook to patch VM spec with a mac address if it is empty on creation. this will ensure mac address propogates to vmi and the vm and vmi generation stays in sync.

In this case, we may need to have a way to prevent macaddress collision.

Close the PR because we prefer https://github.com/harvester/harvester/pull/4948.


can't try catch soci_error or soci_sqlite_error or soci_mysql_error

version :  4.0
the master version which can't try catch any exception except ...

Closing the garbage report


list

Because
<Using CSS to style lists (such as ordered lists  and unordered lists ) is generally a good practice for web development. However, if you choose not to use CSS to style lists, there are a few potential problems or drawbacks we may encounter like Lack of Visual Consistency, Limited Customization, Accessibility Issues, Reduced User Experience and Inconsistent Branding.>
This PR
<Added list.html, desired-output.png, style.css, README.md (To describe CSS list implementation)>
Issue
<#XXXXX>
Additional Information
<>
Pull Request Requirements

[x] I have thoroughly read and understand The Odin Project Contributing Guide
[x] The title of this PR follows the location of change: brief description of change format, e.g. list
[x] The Because section summarizes the reason for this PR
[x] The This PR section has a bullet point list describing the changes in this PR
[x] If this PR addresses an open issue, it is linked in the Issue section
[x] If applicable, I have ensured that the TOP solution files match the Desired Outcome image

I will close this since it looks like you are PR'ing personal practice to this repository.


stop truncating project descriptions

Description
This PR removes the truncating logic for project descriptions. It also adds short_descriptions to pooled products, which were missing that field before.

Related Ticket

Resolves #967

Checklist

[x] I have run npm run build-all without errors
[x] I have formatted JS and TS files with npm run format-all

Please let me know if I am missing something or testing the wrong link.

hi @sprrwhwk
confirming you saw my review questions/comments above?

Please let me know if I am missing something or testing the wrong link.

hi @sprrwhwk
confirming you saw my review questions/comments above?

Hi jabby,
since this PR isn't merged yet it shouldn't be deployed to staging yet. You can check the deployment of this branch here:
backend: https://carbonmark-api-f4f91df-klimadao.vercel.app/api/projects
frontend: https://carbonmark-2iq8gv19b-klimadao.vercel.app/de/projects


Pinecone support for dataprep and retrieval microservice

Description
Added the pinecone vector database-related config and docker files in data prep and retrieval microservice.
Issues
n/a
Type of change
New Feature

[ ] Bug fix (non-breaking change which fixes an issue)
[ ] New feature (non-breaking change which adds new functionality)
[ ] Breaking change (fix or feature that would break existing design and interface)

Dependencies
pinecone-client
langchain-pinecone
Tests
Describe the tests that you ran to verify your changes.

Require test scripts test_vectorstores_langchain_pinecone.sh, test_retrievers_langchain_pinecone.sh, test_dataprep_pinecone.sh

Require test scripts test_vectorstores_langchain_pinecone.sh, test_retrievers_langchain_pinecone.sh, test_dataprep_pinecone.sh, like this one https://github.com/opea-project/GenAIComps/blob/main/tests/test_retrievers_langchain_pgvector.sh

@pallavijaini0525  please add the e2e test scripts.

@chensuyue  -> Since Pinecone functions as a managed service and operates through APIs, I'm utilizing the Pinecone token to access its hosted vector database. Given that these tests are authentic functional tests, I'll need to pass my Pinecone token by configuring an environment variable and then integrating it into the following tests:
test_vectorstores_langchain_pinecone.sh
test_retrievers_langchain_pinecone.sh
test_dataprep_pinecone.sh
any suggestions for this usecase?

I can pass a secrets for the test, like this one, it want be shown in the test scripts. You can send me by teams.

And we can merge this PR first and add the test in another PR.


Installer telemetry

Add installer telemetry following spec

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 69.16%. Comparing base (cacad6b) to head (4d293b8).

Additional details and impacted files

@@           Coverage Diff           @@
##           master     #127   +/-   ##
=======================================
  Coverage   69.16%   69.16%
=======================================
  Files          36       36
  Lines        3963     3963
  Branches      669      669
=======================================
  Hits         2741     2741
  Misses        874      874
  Partials      348      348


pp1.7.3 /components/server-map2/jquery.ServerMap2.js not found htIcons

pinpoint 1.7.3
/components/server-map2/jquery.ServerMap2.js not found htIcons

pinpoint 1.7.3
/components/server-map2/jquery.ServerMap2.js not found htIcons
Ignore this. Pinpoint 1.7.3 need not to config plugin icons in /components/server-map2/jquery.ServerMap2.js

OK, but this causes a problem. I want to intercept our self-developed middleware. Although the plug-in package generated by your project intercepts my target class, it does not show this middleware in the application's main view (similar to app with an arrow pointing to redis).

What is you plugin generate config,an you should put the images icons to ‘webapp\images\servermap’ and ‘webapp\images\icons’

Pinpoint 1.7.3 has a bug,that cause the generated plugin can't working.This bug has been fixed as follows:
https://github.com/naver/pinpoint/issues/4283


Bedrock Integration Tests tracking with junit logs from terratest

As an:
Operator
I want:
Visibility to unit & integration tests over time in devops pipeline,
So that:
I can monitor the success rate, common failure errors and capture logs of failed builds.
Describe the solution you'd like:
Using a JUnit report with the terratest_log_parser, which outputs the Junit report, to be captured in our pipeline.
Acceptance Criteria:

[x] All Integration test produce Junit report
[x] Junit report is integrated in Devops Pipeline framework

Additional context:

https://github.com/gruntwork-io/terratest/issues/350
https://github.com/gruntwork-io/terratest#debugging-interleaved-test-output
https://docs.microsoft.com/en-us/azure/devops/pipelines/tasks/test/publish-test-results?view=azure-devops&tabs=yaml
Sample: https://dev.azure.com/epicstuff/bedrock/_test/analytics?definitionId=128&contextType=build

Does this require updates to documentation?:
Yes

An approach that may work
We can run each test like the following:
$ go test -v -run TestIT_Bedrock_AzureSimple_Test -timeout 99999s |  tee terratest-ci.log

Then use terra test_log_parser
$ terratest_log_parser --testlog terratest-ci.log --outputdir test_xml

Which produces a test_xml folder
Then add this yaml task
  - task: PublishTestResults@2
      inputs:
        testResultsFiles: '$(Agent.BuildDirectory)/s/test_xml/report.xml'
        mergeTestResults: false
        failTaskOnFailedTests: true

Since we may have multiple or conditional test runs we may need to merge multiple test results into one xml file.
We can maybe follow the approach here: https://gist.github.com/cgoldberg/4320815
cc @NathanielRose

Issues with logging recorded here - https://github.com/gruntwork-io/terratest/issues/524


util/libm: replace force_eval! by std::hint::black_box

During an internal review of unsafe code at work, @cramertj noticed that the the force_eval! can be replaced by std::hint::black_box, removing the need for unsafe Rust.

Related: https://github.com/rust-lang/libm/pull/288


Config block chaining fix

This should fix the reported issue #122.

Can you provide a test case covering this situation?

A mail.global.php config with the following contents should show this issue (and that it's solved by adding the do-while-loop):
return [
    'acmailer_options' => [
        'default' => [
            //unaltered default values from mail.global.php.dist
        ],
        'foo' => [
            'extends' => 'default',
            'message_options' => [
                'from' =><EMAIL_ADDRESS>            ]
        ],
        'bar' => [
            'extends' => 'foo',
            'message_options' => [
                'to' =><EMAIL_ADDRESS>                'subject' => 'Foobar subject'
            ]
        ]
    ],
];

I mean if you can create a unit test that tests this case :-)

I was afraid you actually meant a unit test... ;)
Not today, maybe tomorrow.

Perfect, thanks.
--
Alejandro Celaya Alastrué
El 27/1/2016 18:01, "André Lahmann"<EMAIL_ADDRESS>escribió:

I was afraid you actually meant a unit test... ;)
Not today, maybe tomorrow.
—
Reply to this email directly or view it on GitHub
https://github.com/acelaya/ZF2-AcMailer/pull/123#issuecomment-175747282.

There you go. :)

Looks good, thanks


Issue while running the sample examples from the docs.

I am running the following example from the docs.
var builder = require('botbuilder');

var helloBot = new builder.TextBot();
helloBot.add('/', new builder.CommandDialog()
    .matches('^set name', builder.DialogAction.beginDialog('/profile'))
    .matches('^quit', builder.DialogAction.endDialog())
    .onDefault([
        function (session, args, next) {
            if (!session.userData.name) {
                session.beginDialog('/profile');
            } else {
                next();
            }
        },
        function (session, results) {
            session.send('Hello %s!', session.userData.name);
        }
    ]));
helloBot.add('/profile',  [
    function (session) {
    	console.log("inside profile");
        if (session.userData.name) {
            builder.Prompts.text(session, 'What would you like to change it to?');
        } else {
            builder.Prompts.text(session, 'Hi! What is your name?');
        }
    },
    function (session, results) {
    	console.log("inside profile final");
        session.userData.name = results.response;
        session.endDialog();
    }
]);

helloBot.listenStdin();

This is sample conversation. The program exits after the profile dialog which should not be the behavior.
[nodemon] starting `node index.js`
hi
inside profile
Hi! What is your name?
hihi
inside profile final
Hello hihi!
he
Hello hihi!
he
Hello hihi!
set name
inside profile
What would you like to change it to?
hihihi
inside profile final
[nodemon] clean exit - waiting for changes before restart

I am using latest node.js on Windows 10. Let me know if more logs etc are required.

Closing this issue due to age. @harshil93 - please open a new issue if this issue is not fixed and needs further discussion. Thanks!


Xz fixes 5

updated the AF annotation scripts to :

revise "pop_AF" to "AF_pop"
added "CN_STATUS"

Updated CN_STATUS description for clarity
Added 1KG population assignments file for testing population AF annotation
Tested AnnotateVcf on reference panel and verified that CN_STATUS description and AF_pop fields were as expected in output


Add key to prevent switching to new tab

Add a key to hold when double clicking on a show or season to prevent switching to the new tab when opening for the cases where the user wants to open many tabs but doesn't want to change the setting

CTRL key has this effect now


no matching manifest for linux/arm64/v8 in the manifest list entries

Any chance you could add one?

duplicate of #37, see the issue for details about the current situation


ZCPU's reset-button clears the cpu's memory

If I hit the reset button while in debugging mode of zcpu, it doesn't reset the program, it removes it from cpu and clears it's memory. I connected a E2 chip to read out the first bits of CPU's memory to verify it.
This is not how the reset button should work I think.

Did some more testing tonight on a different server (metastruct). Had the same issues there. It does not only happen when using the reset button, but also on the reset input.

Sorry, the problem was, as usual, in front of the screen.
After looking through the reset-sourcecode in zvm_features.lua, I found out it happend because I used a cpu type without internal rom. The reset button restores the program from internal rom, without that there is nothing to restore.

Cool, one less bug for me to fix.


Domain: changes to an Entity instance as a source of domain events

Elaborate and implement a simple approach in which Entities can support eventsourcing.
Part of #40

If I may.
Domain events and sourced events (from eventsourcing) are completly opposite of each other. A sourced event describes a change to be done in the domain. While domain events reflect a change that has happened in the domain.
Both can coexist. A sourced event is processed, a significant change happens in the domain, a domain event is fired. A sourced event is not all that different from a sourced request, its just at different layer.
An important distinction is that a sourced event may fail, may be rejected. While a domain event as no concept of a fail, it happened.
So. Yes a changes to an Entity instance are the source of domain events. But thats not make it to eventsourcing. I think the focus here should be better defined. Just my 2 cents on the matter. Great project.

@pedro2555

If I may. Domain events and sourced events (from eventsourcing) are completely opposite to each other. A sourced event describes a change to be done…

Firstly, thank you for your note, even when you have removed it. It has helped me to refine what I was thinking of opening this issue.
Secondly, I'm sorry you had to wait for the reply. I was on vacation after intensive work-time during COVID.
Thirdly, let me clarify what I had in mind.
By the topic of this issue, I meant how to connect eventsourced Entity with another eventsourced Entity using domain events. Yes, you're right when you say the two kinds of events have different purposes. Domain events are unquestionable messages about facts that already happened, a way to provide means of loosely coupling distant places of the system.
On the other hand, eventsourced events are internal detail of an entity implementation. They can and should be stopped when the operation is invalid or unreasonable. In terms of Event-Driven  Architecture, they can be identified as Command pattern.
When I was creating this issue, I hadn't had that idea well-thought. I hadn't considered the distinction between domain events and commands. Now I see a Context Gateway pattern which servers as a translation middleware between domain events (preferably from the distant parts of the system) and local context's commands. Command handlers/interactions turn these commands into mutative operations of the local entity, which represents its inner state by an eventsourced event.
Although the picture I'm trying to describe may sound complicated, I have to take into account designs of significantly complex contexts -- I work on banking systems on a daily basis. On the other hand, every pattern besides basic ones (Interactor, Entity, eventsourced Event) is optional.

In terms of event sourcing. Process Manager and Sagas manage to translation you're talking about, they translate events into commands. Further more they also apply compensations for failed commands, or yet more commands; which in turn may generate more events and so on.
For cross context communications a canonical model of events and commands may prove useful in larger system, or even smaller ones.


play.sbt.PlayExceptions$UnexpectedException: Unexpected exception[SassCompilerException: Errno::EISDIR: Is a directory @ io_fread

Hello!
I'm trying to use "sbt-sass" % "1.1.0" but getting following error:
play.sbt.PlayExceptions$UnexpectedException: Unexpected exception[SassCompilerException: Errno::EISDIR: Is a directory @ io_fread - <full path to my Play app>/app/assets/node_modules/bs-recipes/recipes/gulp.ruby.sass
Play version is 2.5.18, scala is 2.11.7 and sass is 3.5.6, sbt.version is 0.13.11
Any ideas how to fix this issue very appreciated!

Could you try with the latest sbt of the 0.13 series (0.13.17)?

Hey @jan0sch ! Thank you for quick response. I've tried sbt 0.13.17, and unfortunately it has no effect :(

I guess it is something related to your sass code. The error message states that you want to include a file which is actually a directory.

I found one strange thing. I deleted almost all scss files from default 'app/assets/css', and left only 2 simple of them for tests. But when I run the app, it says

[info] Sass compiling on 79 source(s)
What is that? And I getting the same error. Is it scss from node modules? And probably issue may be there?


[Improviment] Declare Exchange Peer Producer

What?
Any Producer should declare your own exchange, with various parameters like: 'durable', 'passive' , 'internal'.

#4


reformatted the fonts on benefits.html to make it look more appealing

🛠 Fixes Issue

👨💻 Changes proposed

✔ Check List (Check all the applicable boxes)

[ ] My code follows the code style of this project.
[ ] This PR does not contain plagiarized content.
[ ] The title of my pull request is a short description of the requested changes.

📄 Note to reviewers

📷 Screenshots

I am attaching screenshots
OLD VERSION:

NEW VERSION (in this PR):

Hello there here are some things you need to do

Mention issue number in the PR

I have done it

@17Moons You changed the CSS and fonts of the whole website, Create a new CSS file for Benefit.html. Create a new PR ASAP!

@IAmTamal Look into this, Although I reverted the PR.

sorry

@SauravMukherjee44  can i do it tomorrow?


Need to classify Domains

We need an option to indicate a domain is a "catalog" or a "project" domain. When it is a "project" domain, it should include Environments and Endpoints, and Tasks.  A catalog domain should not have these Objects and we should prevent that in the frontend.
This simplifies the use of Env and tasks.

Should be considered and addressed in the new UI release.


bugfix(idp_facebook): fixes individual app registration configuration.

Thanks to Go's omitempty functionality when serialising JSON, FusionAuth doesn't know what to do if it doesn't receive a boolean value for a property and injects the default value, even if false was configured.

hahaha true! Cheers! 💯👕


fix: mobile view

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

@mdathar4403 plz sign CLA

@mdathar4403 plz sign CLA

Done✅

@mdathar4403 this is not really a fix, as it only hard-coded to another value

@mdathar4403 this is not really a fix, as it only hard-coded to another value

Yeah!! so to avoid that overflow only that little thing was needed


client interface standardisation with cosmos-sdk

Paraphrasing @ethanfrey:

If Orga supported the Cosmos-SDK's Bank data structure and message interface it could get wallet support out of the box.

This represents more than a cosmos-rust issue, rather it's a question about whether frameworks ecosystem-wide can or want to standardise around a minimal set of internal representations, like bank, such that they can expose common interfaces to client applications.
This may be relevant to projects like Agoric, Kepler, CosmosSwift, and other frameworks that could benefit from cosmjs, alan dart, or other client library support, as well as direct integrations with wallets, block explorers, etc.
cc: @mappum @keppel @blinky3713 @michaelfig @ratranqu @aaronc @webmaster128 @okwme @RiccardoM

The intention of the Cosmos SDK proto files is to provide a common set of client facing interfaces which can be used by different chains and modules: https://github.com/cosmos/cosmos-sdk/tree/master/proto. Everything is structured around protobuf service definitions which could allow for dynamic service discovery of supported interfaces. Is that helpful? We could eventually store these proto files in a separate schema repository or maybe have dedicated schema registry.

I think having a language-agnostic message/service format has been a big step for opening up client side possibilities.
I was not aware of so many server side projects looking to plug into cosmos, but if they actually want to be considered part of the cosmos ecosystem, it would make sense to try to expose a similar interface. That is, for all functionality which overlaps with the cosmos-sdk, implement the same public services (or a backwards-compatible superset), so client libs/apps that work with the cosmos-sdk modules will work with this chain as well.
Bank and auth are the most obvious examples that are pretty universal. This requires using the same tx format and signing mode (which seems a safe bet) and supporting 1-2 message types and a few queries. I'm sure an adaptor could be made into whatever internal representation is being used. And if the framework's representation/capabilities are so much more advanced, they should consider feeding back those ideas into the cosmos-sdk to improve the interface.
All frameworks that support ibc will need to implement the spec, which constrains the data types used here, and they will need quite a bit of overlap with these cosmos-sdk proto types in any case. Having bank, ibc, and ics20 working the same would be a great boon for relayers to be able to just plug into a chain with this new framework and give immediate liquidity without having to build out all that infrastructure as well.
I would not see this as an immediate action item for other frameworks, but a good avenue to investigate and then to help shape some "1.0" cosmos-sdk protobuf definitions that would support. Right now, we are still building out robust client side support on these types which may give quicker feedback.

@aaronc definitely not an immediate need, but if there was support for standardisation, creating a multi-stakeholder repo for proto files and related documentation makes a lot of sense.

I personally felt the pain on not having this when writing kepler and trying to keep it close to the cosmos-sdk. I don't know how it is now, but at that time the cosmos-sdk used json for its message types which made it even more of a manual process. even assembling the protobuf files required to just run the ABCI server was a pretty manual process at that time because of the way haskell protobuf libraries work. A central repository would be nice, but even a central directory in each repository with the complete set of files relevant to that repo would already be enough imo.
Kepler doesn't have a large module set at this time, but we already kind of do what you're talking about for standardizing transaction format, storage types, and message types: https://github.com/f-o-a-m/kepler/tree/master/hs-abci-sdk/protos

https://github.com/forbole/cosmos-rust-wallet


New Product Digital Twin Registry

Product name: Digital Twin Registry
GitHub users to invite: @agg3fe @tunacicek @thomas-henn
Validation / approved by: @thomas-henn
including new GitHub-team, ArgoCD and Vault
Repository is not needed, work will be done with Tractus-X: https://github.com/eclipse-tractusx/sldt-digital-twin-registry
We need to test our functionalities to be release in the v24.08.
If possible, also please copy the Vault values from https://vault.demo.catena-x.net/ui/vault/secrets/semantics

@agg3fe product-digital-twin-registry was created

Pending member


Implemented drop to sidebar items

Fixes #1049.

can you make them highlight when you drag over an item?
like this:

can you make them highlight when you drag over an item?
like this:

I haven't been able to do that, would you like to have a crack at this??

@XPoppyX @yaichenbaum reveal effect is now implemented:

perfect 👍

Why there is different actions for some folders?

Why there is different actions for some folders?

I have implemented different actions based on Windows Explorer. In Windows Explorer, if the item you are dragging is in the same drive as the destination folder the operation will be to move the item otherwise the item will be copied.

Can't move or copy file. App crashing when drop file on side bar item.
2020-07-29 15:31:44.3932|ERROR|Files.App|Object reference not set to an instance of an object.|System.NullReferenceException: Object reference not set to an instance of an object.
   at Files.Interacts.Interaction.PasteItems(DataPackageView packageView, String destinationPath, DataPackageOperation acceptedOperation)
   at Files.Controls.SidebarControl.NavigationViewLocationItem_Drop(Object sender, DragEventArgs e)
   at System.Threading.WinRTSynchronizationContextBase.Invoker.InvokeCore()

Can you share more detail on what you were trying to copy and to what path??

@soumyamahunt

@tsvietOK Is the error happens to you always?? I can't seem to reproduce it. Also the exception seems to be related to StatusBarControl and I haven't made any changes to it in this pr.

I don't think it is a good idea to cancel user action (copy or move) if item already exists in folder.

I don't think it is a good idea to cancel user action (copy or move) if item already exists in folder.

What do you think should be the default behaviour?? Currently if the item is already present in the folder, when dragging over the same folder the glyph would prompt the user it cannot be dropped. This is the implemented behaviour in every drag-drop scenario app wide.

Oh, sorry, I misunderstood you. All ok.

Oh, sorry, I misunderstood you. All ok.

What about the exception?? Are you still getting it??

It is strange, but now i can't reproduce this issue anymore.

It is strange, but now i can't reproduce this issue anymore.

I think it is related to StatusBarControl, not this pr.


[Feature request] Export Geolocations

I use the Map View plugin to plan hiking trips by organizing geolocations in Obsidian. It would be incredibly useful to have the ability to export these geolocations to other formats, such as GPX as a waypoint. This feature would allow me to reuse the data with other services like GaiaGPS for offline navigation and Suunto watches for tracking and navigation.

I'm not very familiar with these services, can you elaborate how you envision this feature to work? e.g. what would such a GPX include?

GPX is a common file format used by many geographic applications, including Google Maps My Maps, Google Earth, Gaia GPS, and more. Supporting GPX means you can then easily use Obsidian markers / way points on these platforms. Many of these apps also support other / enhanced features such as offline (hiking) maps, making them ideal for remote areas where internet connectivity may be limited.
For example, when planning a hiking trip, you could store all your desired locations in Obsidian and then export them as a GPX file to a hiking planning tool like Gaia GPS. With Gaia GPS, you can download multiple maps and layers for offline use, and then use your exported GPX file to plot your route and navigate using the downloaded data.
Google Maps My Maps offers another great use case. You can export your GPX file to My Maps and create custom maps, add markers, and share them with others. This is particularly useful for planning group trips or sharing favorite locations.
Supporting GPX would be a valuable addition to the plugin, enhancing its versatility and making it more compatible with other popular tools. This feature would allow us to keep our geolocations organized within Obsidian while maintaining the flexibility to use them in various other applications. Many other tools also support GPX export, which would expand the ecosystem significantly.

Sorry I guess my question wasn't phrased very well.
Regarding support for GPX input, see for example here and here. It's definitely one of the next big things on my plate for Map View, I just can't tell when I'll be able to get around to it.
What I was trying to ask relates to GPX export, which I don't remember coming up. What I tried to ask is how do you envision the Map View UI to do such an export, and what would the resulting GPX include.  Would such a GPX include just the points on the map -- and if so, what data should they have (I assume they need a label of some sort)? I'm familiar with GPX only for drawing routes, so the concept of plotting individual points and exporting them to GPX is new to me.

Sorry for the late reply. I was on a hiking holiday during the conversation and forgot about this thread afterwards.
I have only had experience with GPX points. From a user's point of view, the minimum viable product is to export coordinates and the name/description. I am not sure if GPX supports the concept of labels/tags as a separate field, but it could be included in the name/description as well.
From a UI perspective, I can imagine a complete hierarchical list of all notes that contain map view points. Invalid map view points that cannot be exported should be greyed out. There should also be a "select all" option for each hierarchical node. This would naturally add a "select all" option for the root node, as well as any notes that are in a folder.


Tayfa Launcher

Tayfanın !!!

Dont steal someone else's bot and claim its your own

I'm don't steal I will share with my group.

You are asking Apostolique to rename his entire project to your name... you know this isnt going to get approved right?

Also you are giving no credit at all to Apostolique, you removed his name from every part of the bot, that is stealing


Add KEEP space

KEEP is the token from the KEEP Network, responsible for tBTC.
Requires #92 and #93 to be merged to solve conflicts.

Please add only one space per PR. Read comment in #93.

Closing this PR for now, feel free to open it again once you've done the changes.


update tests for ruff>=0.1.0

Thanks! We've added this fix here: https://github.com/pydantic/pytest-examples/pull/34


Fix behavior of start_worker_delay option

The behavior of start_worker_delay is a little weird.
While not a major problem, there seems to be a minor mistake in the implementation.
Although Fluentd doesn't use this option,
if we use the option as follows, then this works as follows.
--- a/lib/fluent/supervisor.rb
+++ b/lib/fluent/supervisor.rb
@@ -494,7 +494,8 @@ module Fluent
         main_cmd: params['main_cmd'],
         signame: params['signame'],
-        disable_shared_socket: params['disable_shared_socket']
+        disable_shared_socket: params['disable_shared_socket'],
+        start_worker_delay: 3
       }
       if daemonize
         se_config[:pid_path] = pid_path

The current behavior
2022-06-10 16:02:08 +0900 [info]: using configuration file: <ROOT>
  <system>
    workers 6
  </system>
  <source>
    @type forward
    port 24224
    bind "<IP_ADDRESS>"
  </source>
  <match test.**>
    @type stdout
  </match>
</ROOT>
2022-06-10 16:02:08 +0900 [info]: starting fluentd-1.14.6 pid=353261 ruby="2.7.5"
2022-06-10 16:02:08 +0900 [info]: #0 fluentd worker is now running worker=0
2022-06-10 16:02:11 +0900 [info]: #2 fluentd worker is now running worker=2
2022-06-10 16:02:11 +0900 [info]: #1 fluentd worker is now running worker=1
2022-06-10 16:02:14 +0900 [info]: #4 fluentd worker is now running worker=4
2022-06-10 16:02:14 +0900 [info]: #3 fluentd worker is now running worker=3
2022-06-10 16:02:17 +0900 [info]: #5 fluentd worker is now running worker=5

The next 2 workers start at the same time.

The behavior with this fix
2022-06-10 15:56:47 +0900 [info]: using configuration file: <ROOT>
  <system>
    workers 6
  </system>
  <source>
    @type forward
    port 24224
    bind "<IP_ADDRESS>"
  </source>
  <match test.**>
    @type stdout
  </match>
</ROOT>
2022-06-10 15:56:47 +0900 [info]: starting fluentd-1.14.6 pid=352530 ruby="2.7.5"
2022-06-10 15:56:47 +0900 [info]: #0 fluentd worker is now running worker=0
2022-06-10 15:56:50 +0900 [info]: #1 fluentd worker is now running worker=1
2022-06-10 15:56:53 +0900 [info]: #2 fluentd worker is now running worker=2
2022-06-10 15:56:56 +0900 [info]: #3 fluentd worker is now running worker=3
2022-06-10 15:56:59 +0900 [info]: #4 fluentd worker is now running worker=4
2022-06-10 15:57:02 +0900 [info]: #5 fluentd worker is now running worker=5

They are cleanly separated by 3 seconds.

I rebased this for checking tests.

Thanks for the merge!


Backend enhancements

VF team is working to provide an enhanced functionality. Our upcoming plan is the following:

provide additional sources (such as ClickHouse)
implement Spark string and date/time functions for an appropriate stages
offer new stages (such as Wait, Pivot and more)
improve functionality for storing logs and history
fix issues
make VF more easier and user friendly

Looking forward to hear anything back from interested parties. Let us know the features you are missing.
Thank you and stay tuned!

We are happy to introduce some important updates with the latest release 1.1.0:

additional sources (ClickHouse, DataFrame, Local File)
'Wait' stage for pipeline designer
Updated functionality of Connections page (including 'Ping' feature)
As usual, complete list of all the updates is in the Changelog, documentation is in the UserGuide.

So long awaited release 1.2.0:

new stages for Job Designer (Pivot, String Functions, Date/Time and others)
improved functionality for storing logs and history
internationalization support
dependencies update: connection, parameter and job/pipeline entities being used for processing are restricted from the removal
You can find complete list of updates and fixes in the Changelog, documentation is in the UserGuide.


A grid you left out

You left out one of the best grids available, which I've used extensively. It's the jqxGrid from http://jqwidgets.com. Check it out!

Cool! Want to send a pull request?


doc: Avoid table scroll

In current documentation, tables cause horizontal scroll when the content is large (e.g. 1, 2), which makes it hard to read.
This PR enables the contents of tables to wrap.
TODO: Apply to CuPy documentation

LGTM. Please rebase it.

Rebased.

LGTM


Stack overflow when running DFS as part of larger project

I'm using featuretools as one step in a data ingestion pipeline to create extra features as part of a larger project.  After doing some code refactoring and organizing, I started seeing this error for a few of my datasets while ft.dfs was running:
Fatal Python error: Cannot recover from stack overflow.

Abort trap: 6

Unfortunately because it's a stack-related issue, I can't reproduce the problem in a notebook and my data is sensitive.  After a lot of debugging I managed to fix the problem by setting the python recursion limit much higher than its default value of 1000 (I found 5000) to work for all my datasets (sys.setrecursionlimit(5000)).
Just wanted to make you guys aware and possibly provide help for those that encounter the same problem.  Internally to Featuretools and DFS I don't know what's blowing up the stack or if it's even a bug.

Closing until we can get a reproducible example


deno support

I'm using deno. In the past, I used the command line version of civet without issues. However, now I'm trying to use the API, specifically the compile() function. The issue is that it complains about this syntax:
import {assert} from 'jsr:@std/assert'
import fs from 'node:fs'
import pathLib from 'node:path'
import {globSync} from 'npm:glob'
import lineByLine  from 'npm:n-readlines'
import {compile} from 'npm:@danielx/civet'

which is typical with deno
It appears that the compile() function does some checking that the civet command does not. Perhaps there's some option on the compile() function that can turn off the extra checks? I think the API should be better documented. I would actually like the checks if they would recognize the admittedly non-standard deno syntax for imports.

It appears that the compile() function does some checking that the civet command does not.

I don't think that's the case. The only difference between calling compile directly and the CLI should be an implicit setting of rewriteCivetImports, which I don't think would do anything here. And possibly a difference of ESM vs. CJS mode.
 I don't see anything nonstandard in your example, and it works in the Playground which also uses the compile interface (just like the CLI does).

Thanks for the quick response. I think the problem may be that I'm not passing the proper options to the compile() function. E.g., when using the command line, I use:
civet --js --inline-map -c src/lib/llutils.civet -o .js
I.e. I want JavaScript code and I want the resulting file extension to be .js, not .jsx.
I also want an inline source map.
It would be a great help to me if you could point me to a web page that describes the options that compile() accepts. I've tried searching github for the actual code to no avail.

https://civet.dev/getting-started#transpilation gives an example of calling compile
Types for compile are in types/types.d.ts.
The source code is here:

https://github.com/DanielXMoore/Civet/blob/7a30fd4ac23b3ef00250d99bf8387567a9c4d06a/source/main.civet#L99
Perhaps the confusion is that compile just does transpilation; it doesn't do any file I/O. You're responsible for reading the file and outputting the result.

I think the problem comes down to the fact that I'm using Deno and not NodeJS. I'm getting an error on an import statement where the imported module uses schemes not supported by NodeJS. Here is an example:
# temp.civet

import {compileCielo} from './llutils.js'

export hConfig = {
	'.cielo': {
		outExt: '.js'
		}
	}

// llutils.js

import {assert} from 'jsr:@std/assert';
import fs from 'node:fs';
import {globSync} from 'npm:glob';

export const globFiles = (pattern) => {

	assert(typeof pattern === 'string');
	let lFiles = globSync(pattern);
	for (path of lFiles) {
		assert(fs.existsSync(path));
		}
	return lFiles;
}

I think that the civet compiler doesn't like the jsr: and npm: schemes. You may not need it, but here is the full error message. Note that with Deno, there is no CommonJS - everything is an ES6 module. Also, no package.json so nowhere to put "type": "module". But that's not where the error lies. I'm going to try to use Deno's "imports" field in my deno.jsonc file, but I've had problems with that in the past.
$ civet --js --inline-map -o .js temp.civet
(node:14952) [MODULE_TYPELESS_PACKAGE_JSON] Warning: Module type of file:///C:/Users/johnd/vllu/llutils.js is not specified and it doesn't parse as CommonJS.
Reparsing as ES module because module syntax was detected. This incurs a performance overhead.
To eliminate this warning, add "type": "module" to C:\Users\johnd\package.json.
(Use `node --trace-warnings ...` to show where the warning was created)
Error [ERR_UNSUPPORTED_ESM_URL_SCHEME]: Only URLs with a scheme in: file, data, and node are supported by the default ESM loader. Received protocol 'jsr:'
    at throwIfUnsupportedURLScheme (node:internal/modules/esm/load:209:11)
    at defaultLoad (node:internal/modules/esm/load:107:3)
    at nextLoad (node:internal/modules/esm/hooks:748:28)
    at load (file:///C:/Users/johnd/AppData/Roaming/npm/node_modules/@danielx/civet/dist/esm.mjs:40:10)
    at nextLoad (node:internal/modules/esm/hooks:748:28)
    at Hooks.load (node:internal/modules/esm/hooks:385:26)
    at handleMessage (node:internal/modules/esm/worker:199:24)
    at Immediate.checkForMessages (node:internal/modules/esm/worker:141:28)
    at process.processImmediate (node:internal/timers:511:21) {
  code: 'ERR_UNSUPPORTED_ESM_URL_SCHEME'
}

That's a Node error message. It means that the Civet CLI is trying to run your code (in Node). The issue is that you're missing a -c command-line option to trigger compilation, not execution.
(Civet the compiler does nothing with colons in module specifiers.)


feat: adding ability to build docs (sidebar and toc) with generic script, small refactor to build-post-script

Description
I'm currently working on #442 which allows us to pull down docs from external repos and render them on our website, a small part of that process the the ability to generate the needed .json file required for the side navigation and table of contents in the docs.
I started by writing my own file which you can see in #442, but after talking to @derberg we explored the ability to reuse what we already have.
This PR introduced and reuses what we already have to allow us to use this code more generically in the future.
Changes

build-post-list.js is now build-doc-list.js
the script now accepts arguments which allow us to make it more generic (also for use case https://github.com/asyncapi/website/pull/442).
added .node-version file to tell Netlify which version of node to use when building, yargs won't work on super old version

New Arguments

output - You can set the output of the file
directory - You can specify the directory to process
groupByCategories - This allows you to run the script and support the frontmatter format to group categories.

Grouping by front-matter
When groupByCategories is true, the front matter for the menu will be read and consumed. Here is an example
---
weight: 2
title: Installing Modelina
menu:
  docs:
    parent: 'Getting Started'
---

This example will render (in the sidebar):

Getting Started

Modelina

At the moment the script relies on you having a _section.md file to group your docs (which is OK for a website, but https://github.com/asyncapi/website/pull/442 we want to make this abit more generic), and I want to give tool builders the ability to add docs without having to know about _section.md files and enforcing a folder structure on them too much. If they follow this standard markdown pattern they can render what they want on the website (under their tools url which needs to be decided still)
This solution allows people (from external tools) to group their docs without folders and _section.md format.
All they have to do is document the menu > docs > parent which will build the side navigation for them.

Thanks for the reviews.
I decided to look at this again, and I felt the code was bloating in areas, and I think it was time to separate some of the logic.
The new improvements are:

new utils.js file (within the scripts dir to share some functions)
new build-tools-list.js file which will be used later as part of the GitHub Actions process (for inserting external tools)
edited build-docs-list.js just moved common code into the utils and kept it the same.

This will allow us to continue using build-docs-list as we were, but also use yargs in built-tools-list as I need to pass in arguments to build docs for particular tools.
Hopefully, that makes sense.

The main issue I see here (if I am following correctly 😱), is the urls proposed?
So I wanted to give another explanation here of how you want to structure the urls for tools.
(First, remember that I'm talking to you about how I'm already planning on changing our docs main domain as well, so my examples below will make more sense.) ￼
docs.asyncapi.com/tools/modelina
No subsections yet, cause one thing at a time. ￼
Later, we can add/migrate the tools docs and create needed subsections.

Thanks @alequetzalli

The main issue I see here (if I am following correctly 😱), is the URLs proposed?

Yeah at the moment this PR will extend what we have to get the docs onto the main website, but from what I'm reading maybe we should hold fire on this work until you have docs.asyncapi.com ready to go?
Sorry I'm not up to speed on whats happening with docs.asyncapi.com and the plans (maybe I've missed some threads etc)

Yeah at the moment this PR will extend what we have to get the docs onto the main website, but from what I'm reading maybe we should hold fire on this work until you have docs.asyncapi.com ready to go?

IMHO, I think you are correct and that we should hold off on merging this one until the new URL redirects are in place. I am thinking I shall prioritize and do this the week after the conference because if I try to get it done before, I don't think Lukasz will have time to process my PRs. 😂😂😂

Sorry I'm not up to speed on whats happening with docs.asyncapi.com and the plans (maybe I've missed some threads etc)

Yes, you're totally right! Sorry about that, I noticed context was missing here.
I have created a Docs issue in our Docs Board to detail all the changes imply from the URL cleanup we're talking about here: https://github.com/asyncapi/website/issues/459

closing this PR as there is no progress and there were also many changes in related scripts. Better open fresh Pr if you still want to work on it


Creating multiple configs with different platforms

I am trying to create multiple configs for when I package my app, but the way I am attempting is not working.
My config
"electronPackagerConfig": {
        "platform":"mas",
        "icon":"src/assets/icons/mac/icon.icns",
        "asar":true,
        "overwrite":true,
        "app-version":"1.1.0",
        "build-version":"1.0.101"
      },
      "electronPackagerConfig": {
        "platform":"darwin",
        "icon":"src/assets/icons/mac/icon.icns",
        "asar":true,
        "overwrite":true
      },

How can I have both darwin and mas configs in my package.json?

The mac config is used for mas (and should be identical).  If you want to build / make for mas you simply have to pass the --platform argument.
I.e. electron-forge make --platform=mas

To further clarify you should never pass in "platform" in your electronPackagerConfig.  In fact, it will be ignored and overwritten by electron-forge

Oh I see. Okay that makes sense. Thank you!

Is it possible to have better docs on how to use the electronPackagerConfig entry in package.json?
It's not clear to me how to have platform-specific settings for the packager.
The icon entry, for instance needs to be mac.icns on darwin and win.ico for win32.
How does electron-forge make --platform xxx pick up the right electronPackagerConfig settings?
I recently moved to electron-forge. I used to have platform-specific electron-packager scripts with the relevant arguments.

@cleverplatypus electronPackagerConfig.icon does not require the file extension, you should put all your icon files in the same folder with the same name apart from the extension.  E.g. path/to/icon.ico and path/to/icon.icns.  Then just set the icon config option to path/to/icon and electron-packager will figure it all out for you.

To further clarify there aren't really any settings in electronPackagerConfig that should change based on the platform you are building for.  If you've found a use case I missed, I'm happy to discuss that 👍

Thanks for that. My bad, I found the extension-less icon solution in the packager docs.
I guess that the win32metadata will safely reside in the electronPackagerConfig.
Fair enough :)


fix invalid "defaultLocale" is not valid BCP47 formatted locale string

if "defaultLocale" is not set manually, then when receiving from the system, the return invalid BCP47 format

Q
A

Is bugfix?
✔

New feature?
❌

Breaks BC?
❌

Tests pass?
✔

Fixed issues

👍


Use molecule.conformers[0] directly

Hey Matt, I was doing some profiling on the code I mentioned in the meeting and on slack, and I saw that a ton of the time was being spent in the call to get_final_molecule, which appears to make a request to qcarchive for every single geometry:
   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
   2301/1    0.038    0.000  112.856  112.856 {built-in method builtins.exec}
        1    0.000    0.000  112.856  112.856 main.py:1(<module>)
        1    0.000    0.000  110.461  110.461 core.py:1155(__call__)
        1    0.000    0.000  110.461  110.461 core.py:1010(main)
        1    0.000    0.000  110.461  110.461 core.py:1423(invoke)
        1    0.000    0.000  110.461  110.461 core.py:732(invoke)
        1    0.002    0.002  110.461  110.461 main.py:17(main)
        1    0.013    0.013  102.361  102.361 _store.py:267(from_qcsubmit_collection)
      403    0.039    0.000   87.409    0.217 client.py:240(_automodel_request)
      403    0.004    0.000   86.911    0.216 client.py:203(_request)
      403    0.006    0.000   86.907    0.216 api.py:62(get)
      403    0.006    0.000   86.901    0.216 api.py:14(request)
      403    0.006    0.000   86.838    0.215 sessions.py:502(request)
      401    0.012    0.000   86.538    0.216 client.py:372(query_molecules)
      403    0.012    0.000   86.307    0.214 sessions.py:673(send)
      400    0.018    0.000   85.300    0.213 models.py:48(from_qcarchive_record)
->    400    0.002    0.000   85.264    0.213 records.py:492(get_final_molecule)
      403    0.009    0.000   84.425    0.209 adapters.py:434(send)
      403    0.009    0.000   84.215    0.209 connectionpool.py:595(urlopen)
      403    0.010    0.000   84.152    0.209 connectionpool.py:380(_make_request)

I also see in test_load_from_qcsubmit that you're calling numpy.allclose on qm_conformer.coordinates and molecule.conformers[0], so I figured this was a safe thing to do. I know from my work in the past few days that to_records adds the final_geometry of an OptimizationRecord as the single conformer on the resulting Molecule, so this seemed like a good optimization. It reduced the runtime on that example from ~113 seconds above to ~21 seconds:
   ncalls  tottime  percall  cumtime  percall filename:lineno(function)
   2301/1    0.038    0.000   21.247   21.247 {built-in method builtins.exec}
        1    0.000    0.000   21.247   21.247 main.py:1(<module>)
        1    0.000    0.000   19.096   19.096 core.py:1155(__call__)
        1    0.000    0.000   19.096   19.096 core.py:1010(main)
        1    0.000    0.000   19.095   19.095 core.py:1423(invoke)
        1    0.000    0.000   19.095   19.095 core.py:732(invoke)
        1    0.002    0.002   19.095   19.095 main.py:17(main)
        1    0.009    0.009   11.262   11.262 _store.py:267(from_qcsubmit_collection)
        1    0.002    0.002    7.830    7.830 _store.py:303(optimize_mm)
      233    0.006    0.000    7.787    0.033 __init__.py:1(<module>)
17867/8867    0.007    0.000    6.347    0.001 {built-in method builtins.next}
11000/3200    0.019    0.000    5.288    0.002 state_changes.py:95(_go)
     2800    0.009    0.000    5.278    0.002 _store.py:68(_get_session)
5421/1621    0.005    0.000    5.255    0.003 contextlib.py:141(__exit__)
     1400    0.001    0.000    5.231    0.004 session.py:1887(commit)
1900/1400    0.002    0.000    5.229    0.004 <string>:1(commit)
1900/1400    0.021    0.000    5.225    0.004 session.py:1232(commit)
        1    0.003    0.003    4.931    4.931 _minimize.py:28(_minimize_blob)
     1401    0.001    0.000    4.854    0.003 base.py:2598(commit)
     1401    0.005    0.000    4.853    0.003 base.py:2715(_do_commit)

I double-checked that no caching tricks were going on by reverting to main and running that code again, and I got a time of 1:43.13 compared to 14.769 sec with the new version.
I was also getting test failures from foo.sqlite hanging around after a successful run, so I added a line to that test to delete it. Finally, the tests are still going to fail because the force field in the plugin test is not tracked in the repo currently:
================================================= FAILURES =================================================
___________________________________________ test_plugin_loadable ___________________________________________

input = MinimizationInput(inchi_key='OTMSDBZUPAUEDD-UHFFFAOYSA-N', qcarchive_id='test', force_field='de-force-1.0.1.offxml', m...     [ 2.27674198e+00,  1.01656127e+00,  1.90807253e-01],
       [ 2.23959613e+00, -2.09655568e-01, -1.09094548e+00]]))

    def _run_openmm(
        input: MinimizationInput,
    ) -> MinimizationResult:
        inchi_key: str = input.inchi_key
        qcarchive_id: str = input.qcarchive_id
        positions: numpy.ndarray = input.coordinates

        molecule = Molecule.from_mapped_smiles(
            input.mapped_smiles,
            allow_undefined_stereo=True,
        )

        if input.force_field.startswith("gaff"):
            from ibstore._forcefields import _gaff

            system = _gaff(
                molecule=molecule,
                force_field_name=input.force_field,
            )

        else:
            try:
>               force_field = FORCE_FIELDS[input.force_field]
E               KeyError: 'de-force-1.0.1.offxml'

That file should be available using the environment after this commit:  https://github.com/mattwthompson/ib/commit/cad8367ff413f82c0cf395ffebb9c06bb70d94c5#diff-138b2d13a248cf5347c3fcd70a2e3ea5ba9e5a329919206b95badb51e8ae0253
It looks like tests are passing now, so if you update your environment locally it should also pass.

Nice find, I hadn't considered that that method would call out to the server. I guess I just assumed it was contained in the JSON blob. (If loading from disk, are there any requests that get sent out now?)

Yeah, I've been continuously surprised at the timing and number of requests that the qcportal stuff likes to make.

Does this change reduce the number of requests or completely eliminate them? If the latter, would it make sense to add a test that ensures no request is sent out when something is loaded from disk? (I don't know how to do this, but I assume pytest has some way to turn off the network during a test.)

I think it should completely eliminate requests inside of from_qcarchive_record because get_final_energy() actually just looks at record.energies[-1], which is what I would have expected from get_final_molecule too, but the OptimizationRecord only holds a list of molecule ids, not the molecules themselves. However, to_records still makes requests (and effectively calls get_final_molecule itself), so I think anywhere you actually call from_qcarchive_record will probably still need to make requests. But that would be cool if you could wrap everything after to_records in something like that.

So the only way to make this work offline is to patch QCSubmit to store more information in OptimizationRecord. Bummer.

Yeah but even then you have to make an initial request to get the OptimizationRecord. The stuff in the dataset files right now is basically just a list of ids to query for:

Feel free to pursue an offline mode - this is a huge and self-contained improvement so I'm merging now.


get_current_play_position() always returns 0 for all looping animations

Godot version
Godot v4.1.1.stable
System information
Windows 10.0.19044 - Vulkan (Forward+) - dedicated NVIDIA GeForce RTX 3080 (NVIDIA; <IP_ADDRESS>13) - AMD Ryzen 9 5950X 16-Core Processor (32 Threads)
Issue description
When $AnimationTree["parameters/playback"].get_current_play_position() is called during playback of any animation that is set to loop, it always returns 0. This makes it impossible to track animation progress or intercept animations mid-cycle through code.
I have a complex project that has a looping walk cycles that require continuous step tracking, so animations can be queued against the player's left or right foot. To do this, I need to call get_current_play_position() every frame to know when the legs switch over. In 3.5, this function works as expected, and I cannot port my project over to 4 between this and #75825.
Steps to reproduce

Open minimal reproduction project.
Run it once and observe as console continuously returns 0 for the looped idle animation.
Uncomment line 11: state_machine.travel("jump"), to travel to an unlooped animation.
Run again, observe get_current_play_position() now prints values in console from 0 to 0.5.

Minimal reproduction project
get_current_play_position() returns 0.zip

Confirmed.
Looks like godot will return a huge number for a looped anim —— return is_looping ? HUGE_LENGTH : anim_size - cur_time;
Looks like it's by design. Although I still think it's a bug.

HUGE_LENGTH is not related. The current_position should not have been allowed to be acquired in the first place.

@TokageItLab Please stop closing my issues without so much as a discussion. It's really frustrating, you did the same with #75843 which now is back to normal in 4.1.

Isn't this the same with https://github.com/godotengine/godot/issues/23629#issuecomment-1001020829? I have been asked that many times and I remember there was no published method to get the playback position of a particular node.

This method does exist though and has since at least 3.4

Ah I see, so StateMachine has its own  time. Sorry for my misunderstood.
But this probably doesn't get the correct time due to (or even before) the reworking by https://github.com/godotengine/godot/pull/75759. When it transitions without a reset, it does not remember the original length of the state because the current time is zero at the moment of transition.
For example, if you leave at 2s in a 10s state and come back to that state without resetting, you will be recognized as being at 0s in an 8s state.
Also, in looping, the current time could be an illegal value due to the infinite length of the current loop due to HUGE_LENGTH.
I believe in order to make those time retrieve properly, it must be necessary to have each Node have the correct time, as mentioned in the comment https://github.com/godotengine/godot-proposals/issues/7867#issuecomment-1734847806. In any case, there is currently no semantic way to get the time of any AnimationNode.

In 3.5 the playback position always resets to 0 after every loop. So getting a value from 0 to 1 which can then be put to use is simple as $AnimationTree["parameters/playback"].get_current_play_position()/$AnimationTree["parameters/playback"].get_current_length()
It's so silly that in 4 even the bar in the UI doesn't loop.

Unfortunately, this means Godot 4's AnimationTree is immature for any game with a moderately complex state machine. Even with whatever suboptimal code 3.5 may have had, it was extremely reliable for my project.
The workflow I'm describing isn't niche, just one that would become a problem fairly late into development, once animation seams start getting stitched together. I don't mind sticking to 3.5 for now, but I think it should be noted in the docs that the get_current_play_position function is non-functional, if only to deter anyone that might start a project in 4 expecting it to work.

@lullabyist  I want to do this as well, get name of the animation and frame, to see how transitions going for debuging/checking purposes. While getting them from engine would be best, I have a "bad" solution for this which is using animation_started and animation_finished signals and counting frames inbetween from _physics_process. I will play around with this more later on but for now it doesn't look bad.. You may wanna try to use it like that if your project doesn't need to be too precise.

suboptimal code 3.5 may have had, it was extremely reliable for my project

As I mentioned above, the current AnimationNode is not linked to any Animation resource other than AnimationNodeAnimation (e.g., NodeBlend2, NodeStateMachine and etc), so it is not possible to get the exact elapsed time for a specific animation.
The 3.x method may work to some extent, but you should be aware that it does not "directly" retrieve the animation's time. It would be working on the unstable scaffolding of the constraint that the AnimationStateMachine "force to reset any State". But this scaffold has already fallen.
I agree that StateMachine is still not mature, but counting elapsed time on the restriction of forced resets as in 3.x, is completely useless in some cases due to the behavior of forced resets.

While getting them from engine would be best, I have a "bad" solution for this which is using animation_started and animation_finished signals and counting frames inbetween from _physics_process.

While this approach may work to some extent, it has the restriction that it is not possible to distinguish between them in the case of multiple same animations.
A fundamental problem with the current AnimationTree is that the only time information propagated downstream is "remaining time" and "seeked or not". This means, when "animation length" or "current time" is needed, there is no way to retrieve them downstream, and the only way is to estimate them from the "remaining time" and "seeked" information although it is unsafe.
For animation length, there is also a lack of "selectivity" as to which length should be prioritized when blending short animations and long animations. Currently, the longer animations are basically forced to take precedence, and we prioritize the "looping or not" over the "remaining time" by using HUGE_LENGTH.
Ideally, they should have been propagated separately, but the current AnimationTree cannot, so to stabilize something is forced to sacrifice something. This is why huge refactoring is needed and why this problem is so hard to solve.

Thank you so much @TokageItLab


Don't restrict invalid titles on save

Is your feature request related to a problem? Please describe.
People are having trouble saving notes when creating invalid titiles
Example
Describe the solution you'd like

don't restrict invalid titles on save

Additional context

Obsidian titles need to have a certain format and I added the same format check to Fleeting Notes.
The same format check isn't needed because in the plugin I dynamically update the title to fit the proper formatting.
Double check that saving invalid titles doesn't affect Obsidian plugin.

Duplicate of #638


FEAT Add log-sum penalty

#Closes 108
Paper describing proximal operator: https://www.researchgate.net/profile/Erin-Tripp/publication/349804616_The_Proximity_Operator_of_the_Log-Sum_Penalty/links/60914684a6fdccaebd08e9ff/The-Proximity-Operator-of-the-Log-Sum-Penalty.pdf?origin=publication_detail

@PABannier can you resurrect this? It would be a nice addition

@mathurinm @Badr-MOUFAD The following script converges.
import numpy as np

from skglm.datafits import Quadratic
from skglm.penalties import LogSumPenalty
from skglm import GeneralizedLinearEstimator
from skglm.solvers import AndersonCD, FISTA
from skglm.utils.data import make_correlated_data

random_state = 113
n_samples, n_features = 50, 60

rng = np.random.RandomState(random_state)
X, y, _ = make_correlated_data(n_samples, n_features, random_state=rng)
rng.seed(random_state)

alpha = 1e-5
eps = 1e-2
tol = 1e-5

est = GeneralizedLinearEstimator(
        datafit=Quadratic(),
        penalty=LogSumPenalty(alpha=alpha, eps=eps),
        solver=AndersonCD(tol=tol, ws_strategy="fixpoint", verbose=2),
).fit(X, y)

print("Done.")

I did not find the definition of the subdifferential of the log-sum penalty.

For the subdifferential, since the penalty log(1 + |x|) is differentiable left and right at 0, I'd say [-1/eps, 1/eps] at 0, and {sign(x)/(eps + |x|)} elsewhere?

We talked about testing the prox procedure with @Badr-MOUFAD and came up with the following suggestion:

define the prox objective function F for a few values of epsilon and x's (in particular above/below the threshold)
compute its argmin with the formula
compute F on a grid of 1000 points with reasonable values (value between 0 and 10 * prox?)
check that F(prox) is lower than all the 1000 values

WDYT?

Currently, the unit test checking prox computation of the penalty fails, which hints at (perhaps) a wrong prox result.

@Badr-MOUFAD Thank you for giving it the final touch :) Much appreciated.


Looking for the AdoptOpenJDK 8u202 MSI file and define settings

Hi guys,
I have been asked to prepare a deployment package with AdoptOpenJDK in my company since we are looking for an alternative solution to the Oracle Java releases. The thing is I am not able to find the MSI file for the AdoptOpenJDK 8u202 as am willing to deploy this package through SCCM and automate everything as much as I can.
Another topic is how can I change the settings of the package. E.g: with Oracle Java I send a report with the settings I want to apply to the Java Package: "Check for Updates Automatically", "Security Levels", "Advanced settings", etc, etc. Then this is configured as default in the Java deployment package. But with the AdoptOpenJDK I not sure how to do this or at least know which settings are available.
Thanks for your support.

The first Windows MSI installer was released today for OpenJ9 binaries.  We are continuing to work on these for HotSpot as well.  Please see the current Wix based installer in the source code here in the openjdk-installer project for its existing state and options.

There is not anymore  JavaWebStart and so no "Security Levels", "Advanced settings" which was aimed to configure JWS (No more ControlPanel)

"Check for Updates Automatically" is not yes implemented

@douph1 see #22 for Java WebStart discussions.

@zyxser: If you open the package with an MSI editor you see that everything is customizable via features with an MST file.

There is also #27 ( Provide MSI installer ) that might interest you

@karianna is there any ETA for the OpenJDK 11 (LTS)?
We are interested in that version.
Concerning auto-updates... does the recent MSI has support for it?

@karianna is there any ETA for the OpenJDK 11 (LTS)?
We are interested in that version.
Concerning auto-updates... does the recent MSI has support for it?

It'll take a week or two to iron out all of the MSI issues and make it a regular part of our pipelines.  One of those challenges is looking at the auto-update.  If you do have expertise in this area please do jump on our slack channel

Auto update is somewhat difficult here. People need to be able to install several version in parallel. This affects both jdk and jre. This means the msi internal upgrade feature may not used.
For software that do not require parallel installation this is easy. I‘ve done this a lot, but this installer was challenging as it requires parallel installations.
I‘m not sure ww can add a screen that asks the user if he want to upgrade or do a parallel installation and than really do what the user selected. Never done this... maybe with custom action, but here I‘m out and cannot help.

Yes, I'm also torn on this.  As a JDK power user, I have 30-40 different versions on purpose.  I guess an end user really only wants the one though...  It would be great to give them a choice but as you say I'm not sure the Wix installer can even do that.

@alexhass
When you says

This means the msi internal upgrade feature may not used.
and
as it requires parallel installations

Is it linked with the actual code who generate always new GUID/CLSID for each build ? So whe can have several install of same major(8/11) arch(32/64) jvm(hotspot/openj9) ( 8_x64_openj9 ) and different minor build ?
`
REM Generate one ID per release. But do NOT use * as we need to keep the same number for all languages, but not platforms.
FOR /F %%I IN ('POWERSHELL -COMMAND "$([guid]::NewGuid().ToString('b').ToUpper())"') DO (
  SET PRODUCT_ID=%%I
  ECHO PRODUCT_ID: !PRODUCT_ID!
)
FOR /F %%F IN ('POWERSHELL -COMMAND "$([guid]::NewGuid().ToString('b').ToUpper())"') DO (
  SET PRODUCT_UPGRADE_CODE=%%F
  ECHO PRODUCT_UPGRADE_CODE: !PRODUCT_UPGRADE_CODE!
)

`
Personally, I expect that when I downloading a new version of same major package it update (replace) the current one to not having many old version.
If I whant to keep/test in parallel old minor release, I use the archive format tgz/zip ..
I think whe need to use the same CLSID/guid for each minor build of same major/arch/jvm.
It will replace b191 with b201 for same major(8/11) arch(32/64) jvm(hotspot/openj9)
but allow to install 8/32/hotpost and 8/32/openj9 and 11/64/hotpost and etc ..

@karianna , when you says

I have 30-40 different versions on purpose

Also, we must thinking of what we really need/want:

Auto-update
or just notifier who says : hello a new version is available  (like ojdkbuild)

@karianna , when you says

I have 30-40 different versions on purpose

Do you mean all installed with MSI ?
or do you use zip ?

I'm on a Mac, so all installed via Brew or manually.

As an "end user" we only keep one version and it would be great to have it always updated.
So, for us, an auto-update would be great!
However, we have nothing against the possibility for it to be disabled on settings.

Since now (https://github.com/AdoptOpenJDK/openjdk-installer/pull/74 was merged)
next MSI will provide upgrade to new AdoptOpenJDK for same bundle type jre/jdk-8/11-hotspot-openj9 ( remove previous one at the end of the installation (to keep only the newer one) )
(This is not a option)
(Downgrade is not allowed ( without first uninstalling the new one ) )

@zyxser  have you tried successfully to

deploy this package through SCCM

?

Since now (#74 was merged)
next MSI will provide upgrade to new AdoptOpenJDK for same bundle type jre/jdk-8/11-hotspot-openj9 ( remove previous one at the end of the installation (to keep only the newer one) )
(This is not a option)
(Downgrade is not allowed ( without first uninstalling the new one ) )

I'm not getting it.
will we get notified a new version is available?
will we be able to choose "update now"?
and after the update will we be asked if we would like to remove older versions?
Sorry for so many questions

Past installers created by me intentionally allowed to install several versions in parallel. This is no longer possible. The setup itself upgrades outdated versions. This is a common practice for setups, but Oracle JDK does allow parrallel installs.
This are build in mechanisms of msi. This does not mean there exists an automatic update or a notification.
Hopefully we can close the issue so the questions from people who comment before reading are stopping.

@alexhass the change that was recently implemented essentially means that you cannot have several versions of the same java version in parallel. You can still have a Java 8 and a Java 11 and even a Java 8 OpenJ9 at the same time and they won't be overwritten.

@maverick74 I can answer your questions for the current installers

will we get notified a new version is available?

No, this is what an autoupdater will do. We plan to implement this but it's not available now. See https://github.com/AdoptOpenJDK/openjdk-installer/issues/4

will we be able to choose "update now"?

Once the autoupdater is implemented it will work like this yes.

and after the update will we be asked if we would like to remove older versions?

Our MSI's are now configured to automatically remove the older version if it is the same java version, vm and architecture.

Example installing with CLI:

msiexec /i OpenJDK8U-jdk_x64_windows_hotspot_8u212b03.msi ADDLOCAL=FeatureEnvironment,FeatureJarFileRunWith,FeatureJavaHome INSTALLDIR="C:\temp" /q

Features (use with ADDLOCAL):

FeatureEnvironment
FeatureJarFileRunWith
FeatureJarFileRunWith
FeatureMain
FeatureOracleJavaSoft

Please refere to updated README.md  (FeatureMain is required)
https://github.com/AdoptOpenJDK/openjdk-installer/blob/master/wix/README.md
There is just documentation about "Per user install" which is new into installer and not any jdk are already built with this new capability

You should never create a per user installer!  It only causes issues.

@zyxser Does that cover off all of your requirements?

Not sure this is the place to post this, but how do I go about utilizing a site exception list? Im not having much luck in the Control Panel.  Thank you!