Cloud Explorer - IoT Hubs: Monitoring a C2D Message Feedback

Currently version of the Cloud Explorer for IoT Hubs has built in a feature for Monitoring C2D Messages.
Activating this feature on the Cloud Explorer will impact a real device what is absolutely non acceptable from any explorer.
The real device connected with MQTT protocol to the Azure IoT Hub is immediately disconnected because the Cloud Explorer monitoring job has been connected as a "simulated device" and waiting for C2D message.
This is a design bug. The Cloud Explorer shouldn't simulate a device and receiving a real C2D message.
The Cloud Explorer should be monitor a Feedback of the C2D Message such as a notification message from the Azure IoT Hub C2D Message queue, that the message has been received (or timeout) by device, see the Device Explorer tool.
Thanks
Roman

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

ID: 3d8c29f4-ce21-5b46-122d-8692d3c3b55a
Version Independent ID: 00451a5e-d7b1-ada7-9ef2-b5880d7d94c0
Content: Azure IoT device management with Cloud Explorer for Visual Studio
Content Source: articles/iot-hub/iot-hub-device-management-visual-studio.md
Service: iot-hub
GitHub Login: @shizn
Microsoft Alias: xshi

@romankiss Than you very much for the detailed feedback. We are currently evaluating the feedback and will provide guidance as appropriate.

Thank you for your feedback @romankiss . @shizn are we addressing this issue already?
@romankiss may I kindly ask you that you contact us<EMAIL_ADDRESS>with a link to this Doc/Issue as well? We will need some more details and a remote call may help us fixing it faster.
Thank you!

Hi Antonio,
There is no implementation issue with the Start/Stop Monitoring C2D Message. Everything is working well.
Clicking on the context menu item such as Start Monitoring C2D Message, see the following screen snippet:

the Cloud Explorer will create a "simulated device" on the device facing endpoint of the Azure IoT Hub and that's the problem, because this "simulated device" will automatically disconnect a real MQTT device from the Azure IoT Hub.
In other words, this feature of the Cloud Explorer should be taken out from the implementation and replace it by new one such as Start/Stop Monitoring C2D Message Feedback to notify a message delivery.  Based on this notification delivery feedback, we know a delivery status of the C2D message (Successfully received by device, rejected, etc.). Note, that the Monitoring C2D Message Feedback is using a service-facing endpoint of the Azure IoT Hub.
Thanks.

Thanks for reporting this issue. @erich-wang @blackchoey please help verify and have a fix.

We have created several issues to track this:

https://github.com/microsoft/vscode-azure-iot-toolkit/issues/309
https://github.com/microsoft/vscode-azure-iot-toolkit/issues/310
https://github.com/microsoft/vscode-azure-iot-toolkit/issues/311

Hi @formulahendry,
My point is to take out the "simulated device" option from the Cloud Explorer.
The Cloud Explorer should be worked only on the service-facing endpoint of the Azure IoT Hub.
Renaming item in the menu context for another one will not solve the problem, that this feature will impact the real connected MQTT device, what it is unacceptable for any explorer.
My suggestion was to replace this feature to new one such as Start/Stop Monitoring C2D Message Feedback.
Thanks
Roman

We will update the issues shared by @formulahendry accordingly and will now proceed to close this thread. If there are further questions regarding this matter, please tag me in your reply. We will gladly continue the discussion and we will reopen the issue.


Heat Curve control

The MyVaillant app now allows Heat Curve control.
If this has been added to the API too, any plans to allow control of this via the HA integration?

Not sure if this is related but since I updated the app it is now crashing when I try and look at the daily heating graph

Not sure if this is related but since I updated the app it is now crashing when I try and look at the daily heating graph

My app is not crashing but in any case this is related to a feature request on the HA integration, and not related to the MyVaillant app specifically

Not sure if this is related but since I updated the app it is now crashing when I try and look at the daily heating graph
i have the same problem !

Tee my app crashing now...

If your app is crashing, report it on the AppStore, this thread has nothing to do with the app!!!!!!!!

My app is not crashing but in any case this is related to a feature request on the HA integration, and not related to the MyVaillant app specifically

Very interesting, I hope they implement it, we should mention the creator of the integration

The MyVaillant app now allows Heat Curve control.
If this has been added to the API too, any plans to allow control of this via the HA integration?

This feature would be very great.
There would be super helpful automation-stories to implement. I had a lot ideas for this feature. How could i support to get this feature running?

Building this requires reverse engineering the current version of the app, unfortunately none of the usual APK websites have a variant that runs on my phone (armv8) or an Android emulator (x86). Something must have changed in our Vaillant packages the app. If anyone can figure out the API endoints and payloads, I would be happy to give this a shot, since it seems useful.

Oh great. I will take a look.

I only found these 3 Calls:
PATCH https://api.vaillant-group.com/service-connected-control/end-user-app-api/v1/systems//tli/circuit/<0 or 1>/heating-curve
{
"heatingCurve": 0.3
}
POST https://api.vaillant-group.com/service-connected-control/end-user-app-api/v1/systems//tli/circuit/<0 or 1>/heat-demand-limited-by-outside-temperature
{
"heatDemandLimitedByOutsideTemperature": 14
}
PATCH https://api.vaillant-group.com/service-connected-control/end-user-app-api/v1/systems//tli/circuit/<0 or 1>/min-flow-temperature-setpoint
{
"minFlowTemperatureSetpoint": 32
}

Many thanks, @signalkraft !


Azure DevOps GCP Service Connection

Hi,
From what I'm reading in your blog, it seems this was created before Azure DevOps offered a GCP Service Connection. Now that it does, is there any plans to add GCP Service Connection Integrations to this marketplace extension?
Kind regards,
Josh

Hi @jogoldberg,
Thanks for reporting your issue. Which GCP Service connection are you referring to?
Currently, the extension doesn't include a service connection object. It would be awesome if I can reuse a community object for that.

Hi Laurens,
You can find an example of using Azure DevOps Service Connections here: https://github.com/nexsolab/azure-devops-google-cloud-tools/blob/master/Tasks/GoogleCloudFunctions/src/main.js


This increases the response header timeout to 1m

This is in response to https://github.com/OpenBazaar/openbazaar-go/issues/1703.

Please note in reference to #1703 this only addresses the timeout for hitting blockbook endpoint, not the tickers which were also experiencing this in my observations.

Pull Request Test Coverage Report for Build 527

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 53.82%

Totals

Change from base Build 525:
0.0%

Covered Lines:
2839

Relevant Lines:
5275

💛  - Coveralls

We've decided to go in another direction with this fix. See https://github.com/OpenBazaar/openbazaar-go/pull/1901/files and https://github.com/OpenBazaar/openbazaar-go/pull/1925/files.


Feat: Back to top button

Describe the feature
A button in the footer section by clicking which we will directly go the the top of the webpage
Add ScreenShots

Like here on this website
Record

[X] I agree to follow this project's Code of Conduct
[X] I'm a GSSOC'24 contributor
[X] I want to work on this issue

@arghadipmanna101  Please assign this issue to me under GSSOC'24

I can help you with this problem, please assign me this issue.

I can solve this issue could you please assign me.


Replace do_combi_test with do_combi_test_sync

I think we should make mqtt::client into only a "base class", and require users of mqtt_cpp to use either async_client, or sync_client.

I'm not sure what you mean.
For users,

mqtt::async_client can use only async APIs.
mqtt::sync_client can use only sync APIs.
mqtt::client can use both async/sync APIs for expert users.

Do you mean for only test?

I mean that mqtt::client should not be used by users. I think it is dangerous.

That's why I say it is for expert users. I think that we agreed this topic before.
I have no plan that client to be private.
Before I implemented stored packet sending code after connack on async_client, it is send as sync. There are other similar case. Sending some application stored messeges at controlled point e.g. after connack or after user defined protocol initial phase, sending sync messages in convenient and other place the same client use async apis.
It seems that the PR #357 is focused on test. It could be acceptable.

That's why I say it is for expert users. I think that we agreed this topic before.

I'm sorry, I noticed that I misunderstood. I mean #196. You are not in #196.
Anyway, I want to keep async_client, sync_client, and client. See https://github.com/redboltz/mqtt_cpp/wiki/Sync-vs-Async

Current test code is

sync_client

test sync_client and client

async_client

test async_client and client

So test for client is redundant. Because sync_client and async_client use client internally. But factory functions of client should be tested.
I don't check #357 yet but I think that the following is better.

sync_client

test sync_client

async_client

test async_client

client

test factory functions only (minimal connect ?).


Some issues with switching categories

Sometimes switching from like info, awards and events work for others but sometimes it gives errors like these

Had to slash the command again for it to work, not sure what's wrong but it might be a server issue

Likely related to #10 (since this concerns the stats page).


Research on current FOSS Apps

Research would include evaluation of the following:

Complete open source. (seen some with closed protocol libs e.g. underdark)
Supported platforms
Simplicity
Size of distributable (keep in the back of your head).

List of apps:

Qaul
Briar

Stacked App with tons of under-the-hood features:

Internet connection & sync possibility + over TOR (both not needed atm)

Android Only

Android & Source

app sample following the native android BLE.

This comment will keep updating along the way..
Briar:

Stacked App with tons of under-the-hood features:

Internet connection & sync possibility + over TOR (both not needed atm)
..

Android Only

some open source projects around this idea: https://github.com/topics/bluetooth-chat

Mastodon
Element
Simplex Chat
IronCircles
qaul – قول
Bridgefy
Jami
Tox
XMPP
Keybase
RetroShare
Manyverse
Briar Project
Meshenger
Serval Mesh

* [Element](https://element.io/)

Element is an app (client) built for the Matrix network similar to how Gajim is a client for XMPP.

The Tech For Palestine should have a matrix room bridged to discord as not everyone has/uses discord.


Fix deletion of image at top of document

Repro steps:

start with a document that has an image at the top, followed by one or more paragraphs
delete the image

Expected result:
The paragraph after the image becomes the first paragraph in the document. The cursor appears at the beginning of the first paragraph.
Actual result:
The image is replaced with an empty paragraph. The paragraph after the image remains as the 2nd node in the document, when it should be the first.
Note:
The reason this behavior happens is because when an image appears between 2 other nodes, we want the image to be replaced by an empty paragraph rather than automatically collapsing. Therefore, the deletion behavior requires inspection of the image's location in the document.

I think this is solved.


src: match client v0.23.2 deps

Changes
:broom: Updates Knative dependencies to match those of client v0.23.2
/kind cleanup

Thanks @lkingland!
Looks good to me, LGTM.


[BUG] - RPM support is discontinued

What?
We don't provide packets for rpm distros anymore
Why?
Centos docker images which were used to build termscp are deprecated and are totally unable to download dependencies.
There is fedora, but fedora doesn't build for some unknown reasons. You're free to try by yourself. You can find the docker file in dist/build/.
This is the error I can't get through. YES I'VE INSTALLED PERL!!!
--- stderr
  Can't locate FindBin.pm in @INC (you may need to install the FindBin module) (@INC entries checked: /usr/local/lib64/perl5/5.38 /usr/local/share/perl5/5.38 /usr/lib64/perl5/vendor_perl /usr/share/perl5/vendor_perl /usr/lib64/perl5 /usr/share/perl5) at ./Configure line 15.
  BEGIN failed--compilation aborted at ./Configure line 15.
  thread 'main' panicked at /root/.cargo/registry/src/index.crates.io-6f17d22bba15001f/openssl-src-111.26.0+1.1.1u/src/lib.rs:506:13:

  Error configuring OpenSSL build:
      Command: cd "/usr/src/termscp/target/release/build/openssl-sys-51867ae48ab572e6/out/openssl-build/build/src" && env -u CROSS_COMPILE AR="ar" CC="cc" RANLIB="ranlib" "perl" "./Configure" "--prefix=/usr/src/termscp/target/release/build/openssl-sys-51867ae48ab572e6/out/openssl-build/install" "--openssldir=/usr/local/ssl" "no-dso" "no-shared" "no-ssl3" "no-unit-test" "no-comp" "no-zlib" "no-zlib-dynamic" "no-md2" "no-rc5" "no-weak-ssl-ciphers" "no-camellia" "no-idea" "no-seed" "linux-x86_64" "-O2" "-ffunction-sections" "-fdata-sections" "-fPIC" "-m64"
      Exit status: exit status: 2

Alternatives
Build from source, or switch from fedora to a distro contributors wants to publish release for.

For openSUSE I have packaged termscp, it has been submitted to the devel project and will hopefully land in Tumbleweed soon...


Differrent versions of vcruntime in run_list lead to downloading vc_redist.exe on each run

PS C:\> ls C:\chef\cache\package\

    Каталог: C:\chef\cache\package

Mode                LastWriteTime         Length Name
----                -------------         ------ ----
-a----       10.04.2017     15:49        1655808 7z1514-x64.msi
-a----       10.04.2017     15:49       57717344 setup.exe
-a----       30.06.2017     21:32        5673816 vcredist_x64.exe
-a----       30.06.2017     21:32        4995416 vcredist_x86.exe

remote_file from windows_package uses Chef::Config[file_cache_path]\\package and therefore checksum is always mismatch on each client run as differetnt version of vcruntime are using the same vc_redist name.
As a proposal we can use remote_file_attributes, as an example
remote_file_attributes ({
    :path => "#{Chef::Config[file_cache_path]}\\package\\vc_#{version}\\vcredist_x86.exe",
    :checksum => '7c8e873991c82ad9cfc123415254ea6101e9a645e12977dcd518979e50fdedf3'
  })

just saw the issue but i'm working on a PR to fix exactly this issue, ill reference it when I submit it.

Fix has been released


ImproperlyConfigured : push_notifications.conf.AppConfig requires the application_id be specified at all times.

Hello, when trying to send a push notification to an APNS device, I get this error. I tried to create a push notification settings file following this guide :
https://github.com/jleclanche/django-push-notifications/wiki/Multiple-Application-Support
But it says :
"Applications must be added to the PUSH_NOTIFICATIONS_SETTINGS["APPLICATIONS"] dictionary.
The dictionary key is the APPLICATION_ID"
However we are trying to implement push notifications on a hybrid application (with Ionic 3) and we cannot use the application_id as a key since we have the same application_id for iOS and Android (and any other additional platform we would use). Can we still make it work with a unique application_id ?
Django push notifications : 1.5.0
Django Version : 1.11.2
Python Version : 3.5.0

The application id is a string you make up. You can use different values and still talk to the same "app".
I usually append the platform to my app names: myapp-fcm, myapp-ios, etc.
I hope that helps.

I know that the application id is a string that I make up, but as I said it is unique because of the nature of my app (hybrid). I choose it once in a file, config.xml, and it is used in each platform (ios, android, windows phone...)
I would like to append my platform to my application id, but for example, for ios, I would have to re-create an application on the app store, create new certificates, etc. This is something I wanna avoid.

You do not need to recreate your application when you change the Django Push Notification <application_id>.
The application id used by Django Push Notifications in no way bound or tied to the various app store bundle/app identifiers. It is just a label used to group a configuration and a set of devices to a specific PUSH API. The API_KEY (fcm/gcm) or CERTIFICATE (APNS) values are the important pieces that tell Django Push Notifications how to talk to your app.
It is common in iOS to define multiple entries under applications that use the same CERTIFICATE. For instance, here is my configuration with various names changed. One iOS app is split into 3 to support voip, development, and standard push notifications. Note that my <application_id> has no relation to my iOS app/bundle id.
"my_ios_app-voip": {
      "PLATFORM": "APNS",
      "CERTIFICATE": "/path/to/your/certificate.pem",
     "TOPIC": "com.example.someappname.voip"
},
"my_ios_app-silent": {
      "PLATFORM": "APNS",
      "CERTIFICATE": "/path/to/your/certificate.pem",
     "TOPIC": "com.example.someappname.shh"
},
"my_ios_app-dev": {
      "PLATFORM": "APNS",
      "CERTIFICATE": "/path/to/your/certificate.pem",
      "APNS_USE_SANDBOX": True
}

Ok, this is clear now. Thanks for your fast answers!

Happy to help. Good luck with your project.

Hi Issue with GCM device, not saving application_id.

You do not need to recreate your application when you change the Django Push Notification <application_id>.
The application id used by Django Push Notifications in no way bound or tied to the various app store bundle/app identifiers. It is just a label used to group a configuration and a set of devices to a specific PUSH API. The API_KEY (fcm/gcm) or CERTIFICATE (APNS) values are the important pieces that tell Django Push Notifications how to talk to your app.
It is common in iOS to define multiple entries under applications that use the same CERTIFICATE. For instance, here is my configuration with various names changed. One iOS app has 3 entries to support voip, development, and standard push notifications. Note that my <application_id> has no relation to my iOS app/bundle id.
"my_ios_app-voip": {
      "PLATFORM": "APNS",
      "CERTIFICATE": "/path/to/your/certificate.pem",
     "TOPIC": "com.example.someappname.voip"
},
"my_ios_app-silent": {
      "PLATFORM": "APNS",
      "CERTIFICATE": "/path/to/your/certificate.pem",
     "TOPIC": "com.example.someappname.shh"
},
"my_ios_app-dev": {
      "PLATFORM": "APNS",
      "CERTIFICATE": "/path/to/your/certificate.pem",
      "APNS_USE_SANDBOX": True
}

Hi
How Should I use these configs? I mean django-push-notifications config is defined as "PUSH_NOTIFICATIONS_SETTINGS" in settings.
How can I use two different "APNS_TOPIC"s?

I am getting this error even tho i specified application_id when sending notification.


Unable to open PowerShell on new Snap install

Hello,
Do I need to define where PS should look for the default PATH?
I just followed the instructions provided for installs using Snap on Debian based ElementaryOS.
Please advise

This is a problem with snapd, not powershell. Snapd will have added a /snap/bin to your path, but your shell is not loading it.
Try running pwsh by specifying it's full path:
/snap/bin/pwsh
If that works, you can workaround the issue with the following command assuming you are using bash
echo 'export PATH=$PATH:/snap/bin' >> ~/.bashrc && source ~/.bashrc


Correct demos and benchmarks to use new interface

Need to check if demos and benchmarks match new interface before merging to master.

Fixed in PR #124, closing.


Competencies cannot be added to the database from the webapp

Expected behaviour
A form in the webapp creates a new competency and links it to the current user's competency model.
Actual behaviour
Competencies need to be added directly to the database or by hitting the API directly.
Details and resources
The form could appear on the /competencies page. It should have separate text fields for entering the title and description of the competency.
The user experience could be improved by clearing out the form after it submits successfully to allow for another competency to be easily added.
The list of all competencies should be updated after successfully inserting the new one.
Success and error messages are presented depending on the outcome of the request.
Checklist

[x] This issue is linked to the appropriate project.
[x] This issue has appropriate labels.

I have only one question: Have you tested simulated the server-side error in case the user competency input can not be successfully inserted into DB ?

on my local machine, all work as per the ticket requirements. Subject to question feedback on server-side error upon unsuccessful competency insert into DB. the case is good to be merged.


Avoid duplicate kube events in InfluxDB

Avoid duplicate kube events in InfluxDB by deterministically setting sequence_number value for each event.
Closes #250

LGTM


Intellij connect via ssh

Before submitting your bug report

[ ] I believe this is a bug. I'll try to join the Continue Discord for questions
[ ] I'm not able to find an open issue that reports the same bug
[ ] I've seen the troubleshooting guide on the Continue Docs

Relevant environment info
- OS: OSX
- Continue: v0.0.53
- IDE: Intellij
- Model:
- config.json:

Description
While using the Intellij feature "connect via SSH" I cannot see the continue plugin icon on the right side. So this on the client side . I am able to see this while developing locally. Only cannot see it  when developing remotely.
To reproduce
No response
Log output
console.warn(Unknown context provider ${provider.name});

I see this in the log - console.warn(Unknown context provider ${provider.name});  perhaps because it is using gateway


Perhaps Slingers could be abit more resistant to arrow damage ( similar to spearmen )

Reason : This unit while they are very cheap, are quickly forgotten due to their overall low suitability which doesn't really help the fact that they have the least amount of range out of all missile infantry in the game.
The buff could relegate them into more of an "Assault" infantry with the unique ability in that they can fire further away compared to  other assault infantry like Spearmen/ Macemen ect..
Their DPS is fine, due to their rate of fire, but most of the time this unit doesn't take advantage of that due to the fact they must be at the front line groups which renders them easy pick offs by Archers.

would buff their range and damage to light infantry as pebbles actually do fly very well and do pretty good damage to unarmored units if you want to go by realistic standards. One could even argue their range should be close to that of the other ranged units to act as a somewhat counter to them as the can be produced en mass but don't take a punch. In return, I would make them less accurate if there is such an option so you wouldn't be able to use them to pick off lone units quite so easily.

Wouldn't that be abit redundant when you already have 3 other ranged units who are all good vs light units?
My proposal is merely based on a unit design point of view. Slingers are very fast, and they do have good dps/cost, but their survivability doesn't make them viable. They'd be very good complimentary units with spearmen early game as mobile light assault infantry.

mhm, I see. I guess my proposal would require a bit of a deeper balancing where crossbows would be made even less effective against light units etc I was just worried if one would buff the health of the slingers it wouldn't represent their armor design anymore which is essentially no armor at all.
I still think their range as it is should be increased through,  just to give them some sort of change to compete with the other ranged units. As health alone wouldn't make a difference as their DPS cant make up for it when attacking a castle with a bunch of units on towers.

I think slingers are OK as they are, they are cheap units after all and their fast rate of fire means I find them useful as defence against heavily armoured units attacking the wall, particularly in the early stages of the game.

I personally do not take slingers at all.

I think they are effective, certainly if Lionheart is attacking me early in the game when I don't have that much gold, I would spam quite a few slingers alongside my archers as they are good on walls against heavy infantry attacking walls.

I love Slingers to be honest. They are very strong against units attacking your walls.
I would love to see them being more resistant to ranged damage though.
And maybe increase their damage against units (arabian) swordsmen.

Okay, but European swordsmen are too strong against slingers.

In return, I would make them less accurate as well if there is such an option so you wouldn't be able to use them to pick off lone units quite so easily.

There is. Archers aren't as much accurate as crossbowmen are for example. And horse archers running&shooting are also less accurate than if they would stand in place.

With the support for the idea, I am quite sure there will be an increase in slingers' protection against archers in the next patch then, but I hope it will only be slight, they are after all cheap units.

considering that you get  9 slingers for 1 firethrower which is much more effective against units attacking your walls I find using slinger there pretty redundant hence I suggested them as a counter to ranged/light units which would be very inaccurate on long distance but due to the mass production would then counter higher tier range (one could argue that crenelations should give additional protections against slingers if they get a similar range as archers (note ancient slings had a range of about ~350meter but at a cost of accuracy of).
That way moving in with mass slingers taking a shot and moving out of range again before enemies can fire would become a skill based tactical solution which in return would be countered by mangonels dealing spread damage to the area they are attacking. That was characters like the Abdul would also get a more protected economy with his slingers being able to pick of archers that try to intercept. That way mass slingers would also become a better solution against mass horse archers as the random spread would make avoiding shots more difficult and defense for some characters like the Abdul, not a complete joke unless he has mass archers stacked on his keep. One would have to be careful of since mass slinger could have the potential to be too strong overall so damage against melee like knights should potentially be reduced so they can not snowball out of control in open field eco-wars.


wip

@aureamunoz this work should probably wait until #210 is merged

Hi @metacosm, I opened the PR yesterday for reviewing the code with Ioannis in order to help me with something that didn't work. I'm already working on @Link as standalone annotation.


Refinements to code efficiency

GDP_dollar already read as numeric by fread. If this may not be the case, better way to handle this is to include colClasses = list(numeric = 'GDP_dollar').
latest_date unused in this script
index in fread is a recent feature I believe. Can revert if prefer a less bleeding-edge dependency.
round(.SD) was 1/2 as fast as lapply(.SD, round) for me
if not using any of the other options to predict.lm, can just access the stored fitted.values directly from the lm object
iso_a3 %in% regression_countries in line 50 is redundant to the same in line 45. If there for emphasis, can use intersect(regression_countries, big_mac_countries) to skip the potential double vector scan

Thanks, Michael.


SelectAll/Multiple choice should report errors

Both selectAll and multipleChoice should give errors if no choice is selected as correct, or as in multipleChoice's case, more than one choice is correct.

Should be fixed at the level of cake lent


Do not force a name, but suggest/inform

A new authenticator should not enforce itself, but suggest how to implement in custom code in e.g. the readme. Registering it immediately without prior notice gives people no chance of giving it a different name or have it override existing authenticators.

We can’t really remove this config, as it would break people’s sites on the next update (and I don’t really want to do a full major release for one change), so for now I’ve added instructions for a workaround to the readme instead: https://github.com/bigfork/silverstripe-oauth-login/commit/ea3e6d0df2e47b5a51b05b644dc7d0b9a30acef9. Thanks!


Unable to build app in release mode while debug mode is working fine

Hello !
I am trying to build my linux app with the following command for release : flutter-elinux build elinux --target-backend-type=x11 -v
but it's not working and it's failing without telling what is the error.
If i run the command flutter-elinux build elinux --debug --target-backend-type=x11 -v it's working fine i have my bundle directory created etc...
I have no clue how to fix it since the error doesn't tell anything.
I can't copy paste everything as my terminal is too small, but i show you the end :
RELEASE :
[  +20 ms] 💪 Building with sound null safety 💪
[   +2 ms] Building an eLinux application with x11 backend in release mode for arm64 target...
[        ] Initializing file store
[        ] Done initializing file store
[   +7 ms] Skipping target: gen_localizations
[   +5 ms] Skipping target: gen_dart_plugin_registrant
[        ] elinux_plugins: Starting due to {}
[        ] elinux_plugins: Complete
[        ] kernel_snapshot: Starting due to {}
[   +5 ms] /opt/flutter-elinux/flutter/bin/cache/dart-sdk/bin/dart --disable-dart-dev /opt/flutter-elinux/flutter/bin/cache/dart-sdk/bin/snapshots/frontend_server.dart.snapshot --sdk-root /opt/flutter-elinux/flutter/bin/cache/artifacts/engine/common/flutter_patched_sdk_product/ --target=flutter --no-print-incremental-dependencies -Ddart.vm.profile=false -Ddart.vm.product=true --aot --tfa --packages /home/ciele/test_app/.dart_tool/package_config.json --output-dill /home/ciele/test_app/.dart_tool/flutter_build/d2b0f2d38f1b85fb9fa059f0c286f4b6/app.dill --depfile /home/ciele/test_app/.dart_tool/flutter_build/d2b0f2d38f1b85fb9fa059f0c286f4b6/kernel_snapshot.d --source /home/ciele/test_app/.dart_tool/flutter_build/dart_plugin_registrant.dart --source package:flutter/src/dart_plugin_registrant.dart -Dflutter.dart_plugin_registrant=file:///home/ciele/test_app/.dart_tool/flutter_build/dart_plugin_registrant.dart test_app/main.dart
[+40900 ms] Persisting file store
[  +18 ms] Done persisting file store
[  +36 ms] Building an eLinux application with x11 backend in release mode for arm64 target... (completed in 55,4s)
[   +5 ms] "flutter elinux" took 55 892ms.
[  +18 ms] ensureAnalyticsSent: 7ms
[        ] Running shutdown hooks
[        ] Shutdown hooks complete
[   +1 ms] exiting with code 1

Along with this error but i think it's simply the command error :

DEBUG :
[ +105 ms] Building an eLinux application with x11 backend in debug mode for arm64 target... (completed in 6,3s)
[        ] "flutter elinux" took 6 690ms.
[   +2 ms] ensureAnalyticsSent: 0ms
[        ] Running shutdown hooks
[        ] Shutdown hooks complete
[        ] exiting with code 0

If you need the whole trace i can provide it but since it's working in debug mode, i don't think it's "package-related". I have already tried by removing all my non-linux packages but the release build still fails.

I must specify things a bit for you to find faster where the error may come from.
If i create an empty project using flutter-elinux create . and build it in release mode, it's working fine.
Now in my existing project, when i ran the flutter-elinux create . command to add the support as mentioned here , it asks me what is my organization name because it's ambiguous (it found 2 names).
So i did : flutter-elinux create --org=com.myappname . and it worked but i don't know the impact on my app.
Then i run the command mentioned in the above comment and it's failing.

Are you using the latest version of flutter-elinux? If no, please update it.

The issue is also reproductible with the flutter engine. It comes from one of my dependency that can't be built under arm64.


[feature request] Provide a trigger phrase for dates as link AND just date

I find myself using non-linked dates just as much as  and linked dates.
It would be nice if I could di something like @ltoday (thats an L in front of today) for a linked date and just @today for a non-linked date.  I know there are commands, shortcuts, or just @today then select and hit [[... but that's a lot of steps :).

I would also really appreciate adding this setting. If I wasn't swamped, I'd submit a PR.

+1. Considering the shift-alias functionality is already baked in, hopefully this should be fairly easy to implement. Especially useful for dataview fields where a non-linked date dataview can parse by default is preferred.

+1, with the same use-case of dataview inline fields
(workaround for folks interested in this is to type your natural language date, select the text, and then run the command Natural Language Dates: Parse natural language date (as plain text) via command entry or hotkey)

+1. This is especially useful for use with dataview.


Minor Bug: Advanced Filtering Maintain Counts Overshoots

If a filter is set to "Maintain Counts", it can place more than the count has.
For example, if you have a netherite puller providing scaffolding to a chest, and have 12 items in the filter- it will deposit 16 into the chest.
I think it does this because the netherite puller grabs groups of items and dumps it's entire payload.
If you decide to leave this bug, people can use a slower puller if they want better accuracy (which would make real world sense).
:) Just thought I'd bring this bug to your attention.

Good catch. Will look into this 👍


Global Toolbar - Clicking help icon shows blank modal

Modal is no longer blank.

Modal is no longer blank. The links display but the tutorials do not. ( devs are aware of this) Tested on IE, FF and Chrome

This has been fixed in staging


Omit Author comment if author == ""

The author comment that is injected in every single newly created AS3 file is useless in most cases. If you are alone you know who authored the file, if you're in a team, your versionning system will allow identifying the author. The only relevant case is open source.
Therefore, i'd suggest skipping injecting the comment if the author is not defined, instead of :
/**
...
author: ...
**/

Yeah, those empty comments are pretty annoying.

I think its good to have comments as i know from first hand experience that your code may end up anywhere from the original project or company, out of version control and then no one to contact for questions or help in general.
For project templates FD asks the author name if its empty for easy filling between projects/companies.
You can always customize the file templates with one F&R op with FD. Project templates you can also customize with one F&R op and then use a custom location for them.
This feat is pretty close to FD core with integrated arg parsing so i don't know how easy and solid would it be to post process every created file. Also we really don't want to remove empty author comments from customized templates which are pretty hard to detect.
I vote for clear WontFix, comments @elsassph?

I'd say it would be fair to allow setting the author empty and this would omit the @author tag too. We have this mechanism in generators templates in but I'm not sure it applies to all templates.

I'm ok with that but the setting should default to current behaviour. Somebody needs to check and implement this but i can do the setting and localization work. To get this in FD5 this should be completed asap.

FD asks the author name first time it meets the argument - we should allow to provide an empty value which in turn would omit the tag. We need to look into the feasibility but it probably is ok if it's not in the next release as it can be manually edited.

Currently file templates do not allow us to remove @author if the argument is empty.
Anyhow I somehow I agree that this whole comment block isn't terribly useful.


Issue with Script Working - Many popups appeared after first reboot - never seen before

@tinygvillage Did you perhaps enable the Firewall in System Preferences? In theory, MAC address spoofing does not trigger such warnings.

Hmm, I'll have to re-watch your earlier videos, but hadn't you instructed viewers to enable firewall?

Also, would the firewall prevent the spoof?

@tinygvillage

hadn't you instructed viewers to enable firewall?

For sure, we should always enable Firewall and figure out why apps are trying to accept incoming connections before accepting.

Hmm, I'll have to re-watch your earlier videos, but hadn't you instructed viewers to enable firewall?

Perhaps your followed the How to configure macOS for privacy guide?

Also, would the firewall prevent the spoof?

It shouldn’t.
What version of macOS are you running?

Totally: at the moment of popups, I began researching every one of them. Most of them I found out are MACos core apps, but a couple I haven't found out about yet, but I couldn't figure out why the firewall would respond to them like that all of a sudden after running the spoof code.
You are correct regarding that direction via your YouTube vid.
I'm running Catalina on an older MAC, no T2 chip.

Did you manage to get the spoofing to work? If not, can you please paste the output of /usr/local/sbin/spoof.sh here (make sure it doesn’t including anything sensitive... in theory it shouldn’t)?

ifconfig: ioctl (SIOCAIFADDR): Invalid argument

Morning! Can you please paste the output of ls /usr/local/sbin/first_names.txt /usr/local/sbin/mac_address_prefixes.txt?

I'm guessing the space at the beginning of your code was a mistake?  "ls /usr..."  I entered it but then edited out the space. But here's the whole thing:
ls /usr/local/sbin/first_names.txt /usr/local/sbin/mac_address_prefixes.txt
/usr/local/sbin/first_names.txt
/usr/local/sbin/mac_address_prefixes.txt
s-MacBook-Pro:~ GMAC$ ls/usr/local/sbin/first_names.txt /usr/local/sbin/mac_address_prefixes.txt
-bash: ls/usr/local/sbin/first_names.txt: No such file or directory
s-MacBook-Pro:~ GMAC$

Strange... not sure why you are getting ifconfig: ioctl (SIOCAIFADDR): Invalid argument. Will have to dig some more and get back to you. In the meantime, you can follow this to get things back to normal.

Thank you so much! Looking forward to your help :)

@tinygvillage
Morning, just wrote a debugging script that outputs all variables so we can find which one is failing.
Can you please audit* and run the following code block and paste the output here?
Thanks!
*To anyone reading this, we should never run code without auditing it line by line.
cat << "EOF" > /usr/local/sbin/spoof-debug.sh
#! /bin/sh

set -e

export LC_CTYPE=C

dirname=`dirname "${BASH_SOURCE}"`
echo "dirname: $dirname"

# Spoof computer name
model_name=`system_profiler SPHardwareDataType | awk '/Model Name/ {$1=$2=""; print $0}' | sed -e 's/^[ ]*//'`
echo "model_name: $model_name"
first_name=`sed "$(jot -r 1 1 2048)q;d" $dirname/first_names.txt | sed -e 's/[^a-zA-Z]//g'`
echo "first_name: $first_name"
computer_name=`echo "$first_name’s $model_name"`
echo "computer_name: $computer_name"
host_name=`echo $computer_name | sed -e 's/’//g' | sed -e 's/ /-/g'`
echo "host_name: $host_name"

# Spoof MAC address of en0 interface
mac_address_prefix=`sed "$(jot -r 1 1 768)q;d" $dirname/mac_address_prefixes.txt | sed -e 's/[^A-F0-9:]//g'`
echo "mac_address_prefix: $mac_address_prefix"
mac_address_suffix=`openssl rand -hex 3 | sed 's/\(..\)/\1:/g; s/.$//'`
echo "mac_address_suffix: $mac_address_suffix"
mac_address=`echo "$mac_address_prefix:$mac_address_suffix" | awk '{print toupper($0)}'`
echo "mac_address: $mac_address"
EOF
chmod +x /usr/local/sbin/spoof-debug.sh
/usr/local/sbin/spoof-debug.sh

Hey guys,
it seems that the location of the first_names.txt file as well as the mac_address_prefixes.txt is somewhere else as the script implies. The debug script is just showing an emtpy string! So where is it then (:

Hey guys,
it seems that the location of the first_names.txt file as well as the mac_address_prefixes.txt is somewhere else as the script implies. The debug script is just showing an emtpy string! But "cd /usr/local/sbin/ && ls" says they are there.

@simonheisstpeter
What version of macOS are you using?
Would you mind pasting the output of /usr/local/sbin/spoof-debug.sh here?

Running Catalina 10.15.5
As you can see in the output of the script I ran a few times it sometimes doesn't find any string to work with and sometimes it takes the whole inpout of the file.
I took a look at the txt files and they seem to be html files. Do they have to be html files? Seem kinda odd. See the photos attached pls

@simonheisstpeter Oh!!! Thanks so much for bringing this to my attention. There is a problem with my CMS... Will push a fix shortly and report back here.

@simonheisstpeter Can you please try steps 4 and 5 again? Just fixed the broken links and pushed to production.

It works!
Thank you!

@tinygvillage Please see above fix. Thanks @simonheisstpeter for figuring out the issue.


[SPARK-43199][SQL] Make InlineCTE idempotent

What changes were proposed in this pull request?
This PR fixes InlineCTE's idempotence. E.g. the following query:
WITH
  x(r) AS (SELECT random()),
  y(r) AS (SELECT * FROM x),
  z(r) AS (SELECT * FROM x)
SELECT * FROM z

currently breaks it because we take into account the reference to x from y when deciding about not inlining x in the first round:
=== Applying Rule org.apache.spark.sql.catalyst.optimizer.InlineCTE ===
 WithCTE                                                        WithCTE
 :- CTERelationDef 0, false                                     :- CTERelationDef 0, false
 :  +- Project [rand()#218 AS r#219]                            :  +- Project [rand()#218 AS r#219]
 :     +- Project [random(2957388522017368375) AS rand()#218]   :     +- Project [random(2957388522017368375) AS rand()#218]
 :        +- OneRowRelation                                     :        +- OneRowRelation
!:- CTERelationDef 1, false                                     +- Project [r#222]
!:  +- Project [r#219 AS r#221]                                    +- Project [r#220 AS r#222]
!:     +- Project [r#219]                                             +- Project [r#220]
!:        +- CTERelationRef 0, true, [r#219]                             +- CTERelationRef 0, true, [r#220]
!:- CTERelationDef 2, false
!:  +- Project [r#220 AS r#222]
!:     +- Project [r#220]
!:        +- CTERelationRef 0, true, [r#220]
!+- Project [r#222]
!   +- CTERelationRef 2, true, [r#222]

But in the next round we inline x because y was removed due to lack of references:
Once strategy's idempotence is broken for batch Inline CTE
!WithCTE                                                        Project [r#222]
!:- CTERelationDef 0, false                                     +- Project [r#220 AS r#222]
!:  +- Project [rand()#218 AS r#219]                               +- Project [r#220]
!:     +- Project [random(2957388522017368375) AS rand()#218]         +- Project [r#225 AS r#220]
!:        +- OneRowRelation                                              +- Project [rand()#218 AS r#225]
!+- Project [r#222]                                                         +- Project [random(2957388522017368375) AS rand()#218]
!   +- Project [r#220 AS r#222]                                                +- OneRowRelation
!      +- Project [r#220]
!         +- CTERelationRef 0, true, [r#220]

Why are the changes needed?
We use InlineCTE as an idempotent rule in the Optimizer, CheckAnalysis and ProgressReporter.
Does this PR introduce any user-facing change?
No.
How was this patch tested?
Added new UT.

cc @cloud-fan, @maryannxue

@peter-toth can you briefly explain the idea of fixing it?

I've updated the PR recently, but the main change is that the CTE accumulator map argument of buildCTEMap() changed from
mutable.HashMap.empty[Long, (CTERelationDef, Int)]
to
mutable.SortedMap.empty[Long, (CTERelationDef, Int, mutable.Map[Long, Int])].
and the new mutable.Map[Long, Int] part tracks where the references are pointing to from a CTE. (The old Int part tracks the "count of incoming references".)
Once we have this extended outer we can correct the "count of incoming references" in cleanCTEMap(). We just need to iterate the keys in reverse order (that's why the outer map is now a SortedMap) and if we encounter a CTE whose "count of incoming references" is 0 then we decrease the referenced CTE's "count of incoming references".
To build the new inner map buildCTEMap has a new outerRefMap optional argument.

thanks, merging to master!

Thanks @cloud-fan!


command_hooks plugin executable array example invalid

The documentation suggests that the command_hooks plugin can take an array of executables for any given hook, as so:
:tools:
  :post_test:
    -  :executable: echo
       :arguments: "${1} was glorious!"
    -  :executable: echo
       :arguments:
         - it kinda made me cry a little.
         - you?

This seems useful (in my case I want to run objcopy twice) but when running the test command with this structure i get the following message:
Traceback (most recent call last):
	9: from /home/emanuel/.ruby/bin/ceedling:23:in `<main>'
	8: from /home/emanuel/.ruby/bin/ceedling:23:in `load'
	7: from /home/emanuel/.ruby/gems/ceedling-0.28.3/bin/ceedling:295:in `<top (required)>'
	6: from vendor/ceedling/lib/ceedling.rb:66:in `load_project'
	5: from vendor/ceedling/lib/ceedling.rb:66:in `load'
	4: from vendor/ceedling/lib/../lib/ceedling/rakefile.rb:48:in `<top (required)>'
	3: from /home/emanuel/workspace/ceedlingTest/brokenHook/vendor/ceedling/lib/ceedling/setupinator.rb:28:in `do_setup'
	2: from /home/emanuel/workspace/ceedlingTest/brokenHook/vendor/ceedling/lib/ceedling/configurator.rb:129:in `tools_setup'
	1: from /home/emanuel/workspace/ceedlingTest/brokenHook/vendor/ceedling/lib/ceedling/configurator.rb:129:in `each_key'
/home/emanuel/workspace/ceedlingTest/brokenHook/vendor/ceedling/lib/ceedling/configurator.rb:133:in `block in tools_setup': no implicit conversion of Symbol into Integer (TypeError)

I attach the project.yml file, it was created by:

creating a clean "blinky" example
adding command_hooks to the enabled plugins list
pasting the example config from the command_hooks readme

This was done with the Ceedling version 0.28.3 but doing the same with the tip of the master branch creates the same result (but with the error on configurator.rb:135...)
project_yaml.zip

Unfortunately you're just a victim of not being on the cutting edge. This feature is soon to be released.


As CORE-ENGINE, There needs to be a way to execute permissibility rules CG0014, CG0015, CG0016, CG0431, CG0651

With this impediment resolution, CG0014 and CG0016 should be able to be fully executed.
CG0015, CG0431, and CG0651 will need Define.xml functionality as well in order to be partially executable (separate Impediment).
To execute these rules, we need to perform a permissibility check against all variables in all datasets (not just specified variables).  The permissibility should still come from the CDISC library.

@gcampion-cdisc  why does this need a new rule type?

@nhaydel We need a new rule type because of the scenarios where we are checking for Required or Expected variables. If a variable is Req or Exp in library, but missing in the data, we want to be able to flag this. In order to flag this, we need to iterate through the library variables, not the dataset variables. If we iterated through the dataset variables, when a required variable doesn't exist, it won't be iterated on and won't get flagged.

@gcampion-cdisc wouldn't this be better handled with an operation to get a list of required and expected variables and check if they are in the dataset?

I imagine the check looks something like this:

Operation to get list of all variables depending on permissibility
is_subset operator to check whether the variables are a a subset of the variables in the dataset.

Does that make sense?
Also what is the expected outcome of this issue? Based on the description, this issue does not result in authors being able to write these rules

I think the biggest difference is that your suggested approach would flag one issue for each dataset with missing variables, whereas, if we add a new rule type, we could flag an issue for each missing variable.
I think it would be preferable to flag an issue for each missing variable.
Keep in mind, for CG0014, there is more than one piece to the rule logic:

Rule ID: CG0014
Condition: Variable Core Status = Required
Rule: Variable present in dataset and ^= null

I think the rule logic might get messy if we are checking if a set of library variables is a subset of variables in the dataset vs checking each library variable associated with the domain.
As a result of this issue, I expect CG0014 and CG0016 to be fully writable.

@gcampion-cdisc  Ok, now I think I understand the issue I am having with this rule. This rule can have two approaches:

The rule requires the engine examines each record be examined for missing data, but the report should be per variable.

with this approach, the engine would need to new rule type to get all variables applicable to the dataset with associated metadata. For example the rule type could be Library Variable Metadata Check.
This would produce the following dataset (additional columns can be added as more metadata is necessary:
| Variable Name | Core | Label |
| ----------- | ----------- | ----------- |
| STUDYID      | Req       | STUDYID |
| USUBJID   | Req       | USUBJID |
Then an operation would be used to detect within the dataset whether the variable has missing values. Resulting in the following table:
| Variable Name | Core | Label | Missing |
| ----------- | ----------- | ----------- |
| STUDYID      | Req       | STUDYID | True |
| USUBJID   | Req       | USUBJID |  False |

Or you could report per record for the missing values that should be there.
So for each record the operation would return a list of values like [STUDYID, ...] if the values violate the permissibility for that variable.

Do you have a preferred approach, or an approach which would be more applicable to all permissibility checks?

is good because it can be more generic and works with both Req and Exp.
is good because it will help the end user identify exactly which record violates the req permissibility, but it is bad because it will report for each record that doesn't contain the variable at all.

I think I prefer 1, but this might be a question for the bigger team.

Solution:

Split required permissibility check into two rules.

Required variables exist in dataset

Required variable is not empty - iterate over records
| USUBJID | STUDYID  | Required Variables  | ...
| -----   | -----    | ------                                 |
| 001     | AAAA     |[A, B, C]                                      |
| 002     | ""       |[A, B, C]                            |
| ""      | ""       |[A, B, C]                      |

check:
USUBJID is empty
and USUBJID is_contained_by $required_variables
This requires 3 new operations: get_permissible_variables, get_required_variables, get_expected_variables


Add a default return value to the StrictRedis.get() method

@suAdminWen this part of code, doesn't make any sense of that.

This isn't a good idea, sorry. It won't work with pipelines and it's trivial for a user to write r.get('foo') or 'my default value'


Does not work with Node v4.2.3

gyp ERR! cwd /tmp/deployment/application/node_modules/forever-monitor/node_modules/chokidar/node_modules/fsevents
gyp ERR! node -v v4.2.3
gyp ERR! node-gyp -v v3.0.3
gyp ERR! not ok.
Hook /opt/elasticbeanstalk/hooks/appdeploy/pre/50npm.sh failed. For more detail, check /var/log/eb-activity.log using console or EB CLI","returncode":1,"events":[{"msg":"Failed to run npm install. Snapshot logs for more details.","severity":"ERROR","timestamp":1452147841151}]}],"truncated":"true"}
[2016-01-07T06:24:01.184Z] Command return code 1.
[2016-01-07T06:24:01.188Z] Tailing /var/log/eb-commandprocessor.log

******************* eb-commandprocessor taillog *******************
  npm ERR<EMAIL_ADDRESS>install: `node-pre-gyp install --fallback-to-build`
  npm ERR! Exit status 1
  npm ERR!
  npm ERR! Failed at the<EMAIL_ADDRESS>install script 'node-pre-gyp install --fallback-to-build'.
  npm ERR! This is most likely a problem with the fsevents package,
  npm ERR! not with npm itself.
  npm ERR! Tell the author that this fails on your system:
  npm ERR!     node-pre-gyp install --fallback-to-build
  npm ERR! You can get their info via:
  npm ERR!     npm owner ls fsevents
  npm ERR! There is likely additional logging output above.

  npm ERR! Please include the following file with any support request:
  npm ERR!     /tmp/deployment/application/npm-debug.log
  Running npm install:  /opt/elasticbeanstalk/node-install/node-v4.2.3-linux-x64/bin/npm
  Setting npm config jobs to 1
  npm config jobs set to 1
  Running npm with --production flag
  Failed to run npm install. Snapshot logs for more details.
  Traceback (most recent call last):
    File "/opt/elasticbeanstalk/containerfiles/ebnode.py", line 681, in <module>
      main()
    File "/opt/elasticbeanstalk/containerfiles/ebnode.py", line 663, in main
      node_version_manager.run_npm_install(options.app_path)
    File "/opt/elasticbeanstalk/containerfiles/ebnode.py", line 131, in run_npm_install
      self.npm_install(bin_path, self.config_manager.get_container_config('app_staging_dir'))
    File "/opt/elasticbeanstalk/containerfiles/ebnode.py", line 166, in npm_install
      raise e
  subprocess.CalledProcessError: Command '['/opt/elasticbeanstalk/node-install/node-v4.2.3-linux-x64/bin/npm', '--production', 'rebuild']' returned non-zero exit status 1
  gyp ERR! configure error
  gyp ERR! stack Error: EACCES: permission denied, mkdir '/tmp/deployment/application/node_modules/forever-monitor/node_modules/chokidar/node_modules/fsevents/build'
  gyp ERR! stack     at Error (native)
  gyp ERR! System Linux 4.1.13-18.26.amzn1.x86_64
  gyp ERR! command "/opt/elasticbeanstalk/node-install/node-v4.2.3-linux-x64/bin/node" "/opt/elasticbeanstalk/node-install/node-v4.2.3-linux-x64/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "configure" "--fallback-to-build" "--module=/tmp/deployment/application/node_modules/forever-monitor/node_modules/chokidar/node_modules/fsevents/lib/binding/Release/node-v46-linux-x64/fse.node" "--module_name=fse" "--module_path=/tmp/deployment/application/node_modules/forever-monitor/node_modules/chokidar/node_modules/fsevents/lib/binding/Release/node-v46-linux-x64"
  gyp ERR! cwd /tmp/deployment/application/node_modules/forever-monitor/node_modules/chokidar/node_modules/fsevents
  gyp ERR! node -v v4.2.3
  gyp ERR! node-gyp -v v3.0.3
Jan  7 06:24:01 ip-172-31-47-105 [eb-cfn-init]:   gyp ERR! not ok  (Executor::NonZeroExitStatus)

That looks like an issue with elastic beanstalk, not node or fsevents.  You need to fix the EACCES error somehow.

Hi, that was also my thought but here is the response I got from AWS tech support:

The package is trying to create a folder under tmp which anyone can write to but if you are creating sub directories you need the -P switch.
Here are the perms to the tmp folder drwxrwxrwt  6 root root  4096  ('t' is the sticky bit https://en.wikipedia.org/wiki/Sticky_bit)

Your Reported error:
stack Error: EACCES: permission denied, mkdir '/tmp/deployment/application/node_modules/forever-monitor/node_modules/chokidar/node_modules/fsevents/build'

I was able to run the same command on the instance as mkdir -P /tmp/deployment/application/node_modules/forever-monitor/node_modules/chokidar/node_modules/fsevents/build   and this worked fine.

So to get around EACCES: permission denied the lines in the package needs to be modified with -P switch.

I kind of doubt that's it (and I assume you mean -p, I don't think mkdir has a -P flag.)  node-gyp creates directories recursively using the mkdirp package.

I'm facing the same issues with AWS-- seems like a temporary solution can be found here.

I had the same issue with the dependency coming from the nodemon module. After uninstalling nodemon it worked fine. See issue. Maybe you have the same issue with the forever-monitor.

npm config set unsafe-perm true

Posting in hopes to spare someone else the grief of debugging this error. The issue was fixed for me by adding a trailing slash to the node_modules folder in .ebignore
.ebignore
node_modules/

Without the trailing slash, eb will upload your local node_modules folder - dev dependencies and all.

Thanks a lot, @unreal0 ! Your solution helped me (contrary to others). I have made it easier to find via SO: https://stackoverflow.com/questions/46001516/beanstalk-node-js-deployment-node-gyp-fails-due-to-permission-denied/46001517#46001517

Add a file named .npmrc to the application with the content:
   unsafe-perm=true
Now use the following command before pushing it to ElasticBeanStalk:
    git add .npmrc
    git commit -m"EB issue fix"

Now deploy your code. It should work.

Hi guys I followed the steps to upload a Backend Express.js app with Beanstalk but I keep getting same error... What else could it be?
2022/05/13 22:27:42.576234 [ERROR] An error occurred during execution of command [app-deploy] - [Use NPM to install dependencies]. Stop running the command. Error: Command /bin/sh -c npm --production install failed with error exit status 1.  Try again with the --unsafe-perm flag
npm ERR! sharp: Please see https://sharp.pixelplumbing.com/install for required dependencies
npm ERR! sharp: Installation error: EACCES: permission denied, mkdir '/root/.npm'

I think it depends on the version of npm. From the logs I can see that unsafe-perm works only <= 6 npm version.
2022-09-15T12:13:52.569+02:00 | npm ERR! sharp: - For npm <= v6, try again with the "--unsafe-perm" flag
2022-09-15T12:13:52.569+02:00 | npm ERR! sharp: - For npm >= v8, the user must own the directory "npm install" is run in


executor.json ignored ?

Hi team,
I noticed that even though executor.json file is part of the allure-result.zip, it is ignored by the allure server
For instance, my executor.json looks like this:
{
    "reportName": "Acme Report",
    "buildOrder":<PHONE_NUMBER>08,
    "name": "My Test Framework",
    "buildName": "Staging Test Run 2024-03-31T07:08:04 UTC"
}

reportName is not substituted in the report at the top left. It still shows "ALLURE REPORT" but it should display "ACME REPORT".
name is not substituted in the Executors section in Overview screen. Instead it seems "Allure server generated " is hardcoded.
Regarding buildName, we can pass it to the POST /api/report call, so we can still control it. That's fine.

Also buildOrder does not display in the history graph on the X axis

https://github.com/kochetkov-ma/allure-server/releases/tag/v2.13.8


Recently added component too narrow on small screens

On a phone (or otherwise smaller screen) the "See all products" button is not entirely visible. The button should be below the images when viewing on a smaller screen.

A bit better after 09a32cc


Update bower.json

You should allow minified version on the file to be  installed with bower.

Minified versions are intentionally left out. It is responsibility of build tools to create minified versions of used JavaScript files. Also there is no meaningful commit message.


Interface is blank on 3/4 of screen

Just updated to 1.0.13 on OSX 10.10.5. When I open up atom through the command line(atom) or through the dock icon 3/4 of my screen is white:

It looks like it is only happening if I have it at a certain size on my external monitor (thunderbolt display running @ 2560-by-1440). The window size in that screen shot is around 2400x1300
This also happens if I run it in safe mode from the command line (atom --safe)
It does fix itself if I resize the window

Before you last quit Atom, was the window size smaller? (ie. the size of your computer's built-in display, for instance)

If I set the window size smaller (like 1900x900) it opens normally. Its only when I set the window size around 2400x1300 that it happens

I have this problem as well, if it helps I use slate.js as a window manager. I close Atom with it taking up the whole screen but not full screened

I'm seeing this as well. It only happens when Atom opens at larger window sizes on my thunderbolt display.

Before you last quit Atom, was the window size smaller? (ie. the size of your computer's built-in display, for instance)

No. The window size was the same as it is now, and the problem can be consistently reproduced by closing and reopening Atom without resizing the window to a smaller size.

This seems to be fixed on El Capitan fyi

@erikanderson Running into this on El Capitan.

I'm using 10.11, not fixed

@bryanrsmith  same with me. running OSX 10.10.5 and  Atom 1.0.19

I'm experiencing this same issue when connecting to a Dell U2415. I'm using OS X 10.11.1 with Atom 1.1.0 on a retina MBP.  I think this is a new problem within the last week or so (I could be wrong), and this is around when I got the Atom 1.1.0 update and upgraded to El Capitan, so maybe related to one of these upgrades?
Example of triggering bug:

Have atom on external monitor (in my case, 1900x1200 resolution, and atom roughly at 1500x1100)
Disconnect monitor cable (in my case, display port cable plugged into thunderbolt v2 port); this triggers atom to pop over to laptop's display
plug monitor cable back in; and Atom returns to external monitor, but with 1/4 of window showing content, the other 3/4's cropped and white.

I am having the same issue here. I am using OSX 10.11.1 with Atom 1.1.0 on a 13" MBP over thunderbolt.
Steps to reproduce:

Atom open on an Ultrawide 3440x1440 monitor (not fullscreen).
Disconnect monitor and use laptop on built in display.
Reconnect Ultrawide monitor. Now Atom is shown exactly like the original image.

I'm having this issue on El Captain. When I move a fullscreen atom to a second display, it leaves large piece of blank.

FWIW, Chromium had this same bug last year, so their solution may be useful to whoever tackles this issue with Atom: Chromium bug

I have same issue, but it also works in other direction: when I move window to retina from non-retina window renders blurry like in compatibility mode.

I'm going to close this since it seems to be resolved in the newer versions of Atom


Add treatment bar chart

Code refactoring & add treatment bar chart

Areas changed

npm packages changed:

[ ] responsibleai/causality
[x] responsibleai/core-ui
[ ] responsibleai/counterfactuals
[ ] responsibleai/dataset-explorer
[ ] responsibleai/fairness
[ ] responsibleai/interpret
[ ] responsibleai/localization
[ ] responsibleai/mlchartlib
[ ] responsibleai/model-assessment

Python packages changed:

[ ] raiwidgets
[ ] responsibleai
[ ] erroranalysis
[ ] rai_core_flask

Tests

[ ] No new tests required.
[ ] New tests for the added feature are part of this PR.
[ ] I validated the changes manually.

Screenshots (if appropriate):
Documentation:

[ ] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.

Codecov Report

Merging #1184 (66c23ba) into main (39a7ff8) will increase coverage by 7.81%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##             main    #1184      +/-   ##
==========================================
+ Coverage   67.76%   75.58%   +7.81%
==========================================
  Files          90       10      -80
  Lines        4291      258    -4033
==========================================
- Hits         2908      195    -2713
+ Misses       1383       63    -1320

Flag
Coverage Δ

unittests
75.58% <ø> (+7.81%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

Impacted Files
Coverage Δ

raiwidgets/raiwidgets/error_analysis_constants.py

...ibleai/_tools/shared/state_directory_management.py

...onsibleai/responsibleai/serialization_utilities.py

raiwidgets/raiwidgets/constants.py

...nsibleai/responsibleai/_managers/causal_manager.py

responsibleai/responsibleai/_config/base_config.py

.../responsibleai/modelanalysis/constants/__init__.py

responsibleai/responsibleai/_internal/__init__.py

erroranalysis/erroranalysis/_internal/constants.py

erroranalysis/erroranalysis/version.py

... and 70 more

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 39a7ff8...66c23ba. Read the comment docs.


Post install script

Current Behavior
when creating a new app using vue template, the package are installed, but the cli is blocked in Installing pakage
i checked and found that the post install script block the installation, and when lunched manually i got this error
https://ibb.co/vBtrgZr
Expected Behavior
install nxplus/vue and run a vue app
Steps to Reproduce
create a new app
Failure Logs

Environment
@nestjs/schematics": "^7.0.0",
    "@nestjs/testing": "^7.0.0",
    "@nrwl/cli": "10.3.0",
    "@nrwl/cypress": "10.3.0",
    "@nrwl/eslint-plugin-nx": "10.3.0",
    "@nrwl/jest": "10.3.0",
    "@nrwl/nest": "^10.3.0",
    "@nrwl/node": "10.3.0",
    "@nrwl/workspace": "10.3.0",
    "@nx-plus/vue": "^10.1.0",
    "@types/jest": "26.0.8",
    "@types/node": "^8.9.5",

  nx : Not Found
  @nrwl/angular : Not Found
  @nrwl/cli : 10.3.0
  @nrwl/cypress : 10.3.0
  @nrwl/eslint-plugin-nx : 10.3.0
  @nrwl/express : Not Found
  @nrwl/jest : 10.3.0
  @nrwl/linter : 10.3.0
  @nrwl/nest : 10.3.0
  @nrwl/next : Not Found
  @nrwl/node : 10.3.0
  @nrwl/react : Not Found
  @nrwl/schematics : Not Found
  @nrwl/tao : 10.3.0
  @nrwl/web : Not Found
  @nrwl/workspace : 10.3.0
  typescript : 4.0.3

UPDATE:
could make it work using
npm run postinstall
but when using
nx g @nxplus/vue:app appName
its block when needing to run the postinstall script


Materialize.toast is not a function

I forked the Angular2-Webpack-Starter by InfomediaLts to highlight this issue (and another one).

https://github.com/jano42/angular2-webpack-starter
When launching app, going to "detail" menu, the error could be highlight by three ways:

click button "Toast1"
click button "Toast2"
select a dropdown option

See detail.component.ts for code:
https://github.com/jano42/angular2-webpack-starter/blob/master/src/app/%2Bdetail/detail.component.ts

@jano42 thanks for the repo. I think I've got a solution. Are you able to verify it?
Update your webpack config to only have jQuery and Hammer provided:
new ProvidePlugin({
    "window.jQuery": "jquery",
    Hammer: "hammerjs/hammer",
}),

Then, where you import angualr2-materialize (shared.module.ts), also import materialize-css explicitly:
import 'materialize-css';
import { MaterializeModule } from 'angular2-materialize';

@rubyboy thanks it works with your workaround !!

Cool, I'll make that part of the official documentation then. Thanks for helping make this library better! :)


Exponential complexity of unions generation

Hi! Awesome package! Good job! 😊
We are switching quite complex project from artemis to ferry and we were not able to generate code using ferry. It was throwing out of memory error and then we found reuse_fragments option that helped (probably), but then the generation can't finish. It takes infinite time (after 9 hours of processing a single file I gave up).
We've made an investigation and it turned out that the complexity of unions in our queries is the problem.
We have a timeline query that can return 1 of 8 possible objects. We are not able to process that file, but if we remove some of the fragments from the query then we can do it and it doesn't matter which one we remove:

4 fragments takes ~95ms
5 fragments takes ~470ms
6 fragments takes ~6667ms
7 fragments takes ~ for sure more than 1 hour, I was bored to wait more,
8 fragment - I was waiting 9 hours and it didn't finish 😢

I've prepared a repository with an example to reproduce the issue. The example is much simpler than our real project so it can generate even 10 fragments, but it takes about 2 minutes.
The time is checked in the following way:

It looks like calling https://github.com/gql-dart/gql/blob/1cabae81a96db119b00d1502043974d1f7b49f70/codegen/gql_code_builder/lib/data.dart#L128 function is responsible for such long times.
Is there any plan to improve that? In our case ferry seems to be not usable 😞

Hi!
Thanks for the repro, this makes it easier for me to figure out what is happening.

Can you maybe also produce a repro that runs into this pathological case with reuse_fragments: false?

Awesome! It looks like you fixed the problem related to a long time of processing. Now file that couldn't process within 9+ hours has been finished in 1s. 🎉 So I was able to build some part of the queries we use in the project, but when I tried to build the all queries then after 30 minutes of building I got an Out of memory error 😞 The process bumped to 30GB of memory.
[INFO] 30m 42s elapsed, 1291/1296 actions completed.Exhausted heap space, trying to allocate 458256 bytes. [SEVERE] built_value_generator:built_value on lib/graphql/__generated__/serializers.gql.dart: Unknown error in BuiltValueGenerator for /project/lib/graphql/__generated__/serializers.gql.dart. Out of Memory
So it's probably another issue, and for now, I do not have any more specific information about it.

@knaeckeKami is that question still relevant?

Can you maybe also produce a repro that runs into this pathological case with reuse_fragments: false?

@knaeckeKami is that question still relevant?

Yes! I would love the see a runnable reproduction of the issue where reuse-fragments is deactivated and the build takes a long time / runs out of memory. This would allow me to fix the root cause.
I heard reports of that from different users, but I could not reproduce it myself yet.

Actually, looking at the error message, it seems to fail to generate the serializers in the built_value step.
https://github.com/google/built_value.dart/blob/master/built_value_generator/lib/built_value_generator.dart#L56
That's surprising to me, generating the list of serializers is not particularly complex.
And potentially bad, since it might not be easy to fix from the ferry side.
If you cannot provide a reproducible example, it would also help if you cold fork built_value_generator and print more details (e.g. the stack trace when this exception happens·.

If you cannot provide a reproducible example, it would also help if you cold fork built_value_generator and print more details (e.g. the stack trace when this exception happens·.

Here you have a full stack trace of out-of-memory error with reuse_fragments DISABLED.
[SEVERE] built_value_generator:built_value on lib/graphql/__generated__/serializers.gql.dart:
Unknown error in BuiltValueGenerator for /project/lib/graphql/__generated__/serializers.gql.dart.
Out of Memory
#0      _StringBase.+ (dart:core-patch/string_patch.dart:277:43)
#1      Scanner.tokenize (package:analyzer/src/dart/scanner/scanner.dart:154:40)
#2      FileState._parse (package:analyzer/src/dart/analysis/file_state.dart:718:27)
#3      FileState.parse (package:analyzer/src/dart/analysis/file_state.dart:490:14)
#4      AnalysisDriver.parseFileSync (package:analyzer/src/dart/analysis/driver.dart:1016:33)
#5      AnalysisDriver.getParsedLibrary (package:analyzer/src/dart/analysis/driver.dart:819:24)
#6      AnalysisDriver.getParsedLibraryByUri (package:analyzer/src/dart/analysis/driver.dart:835:19)
#7      _$SerializerSourceClass.parsedLibrary (package:built_value_generator/src/serializer_source_class.g.dart:51:33)
#8      SerializerSourceClass.fields (package:built_value_generator/src/serializer_source_class.dart:167:31)
#9      SerializerSourceClass.generateBuilderFactoryAdders (package:built_value_generator/src/serializer_source_class.dart:287:12)
#10     SerializerSourceLibrary._generateSerializersTopLevelFields.<anonymous closure>.<anonymous closure> (package:built_value_generator/src/serializer_source_library.dart:203:35)
#11     new _GrowableList._ofEfficientLengthIterable (dart:core-patch/growable_array.dart:189:27)
#12     new List.of (dart:core-patch/array_patch.dart:47:28)
#13     Iterable.toList (dart:core/iterable.dart:495:7)
#14     SerializerSourceLibrary._generateSerializersTopLevelFields.<anonymous closure> (package:built_value_generator/src/serializer_source_library.dart:205:20)
#15     Iterable.join (dart:core/iterable.dart:445:19)
#16     SerializerSourceLibrary._generateSerializersTopLevelFields (package:built_value_generator/src/serializer_source_library.dart:209:8)
#17     SerializerSourceLibrary.generateCode (package:built_value_generator/src/serializer_source_library.dart:181:12)
#18     BuiltValueGenerator.generate (package:built_value_generator/built_value_generator.dart:46:48)
#19     _rootRunUnary (dart:async/zone.dart:1407:47)
#20     _FutureListener.handleValue (dart:async/future_impl.dart:156:18)
#21     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:840:45)
#22     Future._propagateToListeners (dart:async/future_impl.dart:869:13)
#23     _rootRunUnary (dart:async/zone.dart:1407:47)
#24     _FutureListener.handleValue (dart:async/future_impl.dart:156:18)
#25     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:840:45)
#26     Future._propagateToListeners (dart:async/future_impl.dart:869:13)
#27     _rootRunUnary (dart:async/zone.dart:1407:47)
#28     _FutureListener.handleValue (dart:async/future_impl.dart:156:18)
#29     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:840:45)
#30     Future._propagateToListeners (dart:async/future_impl.dart:869:13)
#31     _rootRunUnary (dart:async/zone.dart:1407:47)
#32     _FutureListener.handleValue (dart:async/future_impl.dart:156:18)
#33     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:840:45)
#34     Future._propagateToListeners (dart:async/future_impl.dart:869:13)
#35     _rootRunUnary (dart:async/zone.dart:1407:47)
#36     _FutureListener.handleValue (dart:async/future_impl.dart:156:18)
#37     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:840:45)
#38     Future._propagateToListeners (dart:async/future_impl.dart:869:13)
#39     _rootRunUnary (dart:async/zone.dart:1407:47)
#40     _FutureListener.handleValue (dart:async/future_impl.dart:156:18)
#41     Future._propagateToListeners.handleValueCallback (dart:async/future_impl.dart:840:45)
#42     Future._propagateToListeners (dart:async/future_impl.dart:869:13)
#43     Future._asyncCompleteWithValue.<anonymous closure> (dart:async/future_impl.dart:715:7)
#44     _rootRun (dart:async/zone.dart:1399:13)
#45     _CustomZone.runGuarded (dart:async/zone.dart:1209:7)
#46     _CustomZone.bindCallbackGuarded.<anonymous closure> (dart:async/zone.dart:1249:23)
#47     _startMicrotaskLoop (dart:async/schedule_microtask.dart:49:5)
#48     _Timer._runTimers (dart:isolate-patch/timer_impl.dart:405:11)
#49     _RawReceivePort._handleMessage (dart:isolate-patch/isolate_patch.dart:189:12)

I will try to create some reproducible example in the next few days.

Thanks.
Maybe the aggressive memoization of built_value_generator + keeping all the SerializerSourceLibrary objects  in memory is the issue.
I removed a few suspicious @memoized fields in built_value_generator in my fork https://github.com/knaeckeKami/built_value.dart/tree/relax_memoization .
you can try it out using dependency overrides for built_value_generator
  built_value_generator:
    git:
      url: https://github.com/knaeckeKami/built_value.dart.git
      ref: relax_memoization
      path: built_value_generator

This will probably increase the code generation time significantly, but might be a workaround until a fix in built_value is found.

This will probably increase the code generation time significantly, but might be a workaround until a fix in built_value is found.

Yep, that worked, thanks 🎉 , but the code has been generating about 2 hours. Let's leave it for now. I will back to the topic in a few days with a reproducible example (I hope so).

Glad to hear that! There are definitely ways to fix this without disabling memoization completely and re-calculating the fields on every access, built_value_generator just needs to be a bit smarter with keeping references to objects with all these calculated fields.
This should improve the built time again. I opened an issue in built_value.

Hi @knaeckeKami!
I think we found the main problem in our case. I removed the commented part of the fragment (that is used in maaaaaany queries/fragments in our schema) and now code generation takes ~6min. Instead of 2.7mln lines of code, we have just 11k. It also solved that problem https://github.com/gql-dart/ferry/issues/560

I don't know why but, bcs of that code reusing fragments doesn't work. So almost every query has to generate new fragments.
BUT there is still some issue. Now we have an issue with the deserialization of fragments used in unions

Do you have any idea how to fix that? 🤔  If you need a repo with an example to reproduce then let me know 🙏
BTW we use that branch with fix.
dependency_overrides:
   gql_code_builder:
      git:
           ref: possible_reuse_fragment_fix
           url:  https://github.com/gql-dart/gql.git
           path: codegen/gql_code_builder

cool!
Is this a new problem? The reuse_fragment flag is still experimental, and the author actually opened a PR with some fixes which i did not get to merge yet / i also asked them to verify that the bug with the exponential codegen time on unions is fixed.
It's possible that this PR: https://github.com/gql-dart/gql/pull/417/files fixes the deserialization issue, but it's possible that the exponential codegen time is still there (that was just a one line change though and should be easy to integrate)

If you disable the reuse_fragment flag, I guess the codegen time and size is still too high?

yep

It's possible that this PR: gql-dart/gql#417 (files) fixes the deserialization issue, but it's possible that the exponential codegen time is still there (that was just a one line change though and should be easy to integrate)

I am going to check it ❤

Checked. It looks like it solves the aforementioned problem, but I am getting some errors related to incorrect return type. I am going to investigate it and create some example.


test: Fix TestLagoonPush by upgrading lagoon CLI, replaces #6524

The Issue

TestLagoonPush started failing when the latest lagoon cli got implemented
@rocketeerbkw responded very quickly with #6524 Thanks!
Because that was a forked PR, TestLagoonPush didn't get run because the secrets were not available

How This PR Solves The Issue

Build the new released lagoon client v0.30.1 into ddev-webserver
Run @rocketeerbkw original change

Manual Testing Instructions
If TestLagoonPush runs here and succeeds, we're good.
Automated Testing Overview

Release/Deployment Notes

Yay, TestLagoonPush worked, https://github.com/ddev/ddev/actions/runs/10724069086/job/29738857420#step:15:10510
Thanks @rocketeerbkw !


refactor: :recycle: created LogManager and LogEntry Class

LogManager and LogEntry Class

Moved most of the logging logic from ModLoaderUtils into LogManager.
New LogEntry Class to store log message info.
Added log storing in LogManager

🛠 WIP 🛠
Still needs work, mainly because of the self setup.
Currently all logging functions in mod_loader_utils.gd depend on ModLoaderStore.
To get this working I can think of:

Store all, by_mod, by_type in ModLoaderStore and make all functions in LogManager static.
Then store_log() can be skipped if  ModLoaderStore is not available.

Feedback and ideas are appreciated.
Todos

[ ] fix self setup
[ ]  update get_mod_config() in config.gd line 73 and 75

works towards #140

Oh and I still need to fix this:

https://github.com/GodotModding/godot-mod-loader/issues/140#issuecomment-1490453112

Working on this now. Just so I don't forget update get_mod_config() in config.gd line 73 and 75:
if not ModLoaderStore.logged_messages.has(full_msg):
   ModLoaderUtils.log_debug(full_msg, mod_dir_name)
   ModLoaderStore.logged_messages.push_back(full_msg)

I was thinking the log funcs would be moved to ./add_ons/mod_loader/api/log.gd? And the class would follow the standard of other API classes, ie. ModLoaderLog. That follows the established standard and retains the namespaces classes.
Note: The current classes directory might be misnamed (my fault), as it's actually only used for resources. The functional classes are actually in api now.

I've looked over this PR's code in more detail and I have some notes.
There are still logging methods in ModLoaderUtils. Can they all be moved to ModLoaderLog please? And leave deprecation funcs behind -- eg. see #208, which moves methods from ModLoader.* to ModLoaderMod.*
How come you've used a class instance for LogManager? Why not use it with static methods, like other API methods do? Then you can log things with ModLoaderLog.method, rather than ModLoaderStore.LogManager.method.
Generally I think we should keep the ModLoaderFoo standard of class names. This makes it easier to identify methods that originate with ModLoader, and avoids potential conflicts with games/mods that use more generic class names (eg. an existing game might already have a class called LogManager, but it definitely won't have a class called ModLoaderLog).
You've used ModLoaderStore to store a class instance, but it's not intended to be used that way. It's meant to be a simple data store, and was created to fix these two issues:

You couldn't access the local variables from ModLoader.* during ModLoader's init phase. See issue #161 and PR #172 for more details on this. This point isn't related to the PR but I'm mentioning it here for completeness.
Static methods can't save data to their own class (because that class hasn't been instanced). So now instead, they can store data to ModLoaderStore. In this case, ModLoaderStore lets you keep track of any logged messages, via ModLoaderStore.logged_messages. So all your static methods can still exist in ModLoaderLog, but you can also save data, like logged messaged, to ModLoaderStore.

I will rework this to account for #153.
Ty @ithinkandicode for the review 👍

Should this PR be called "Logging Refactor", instead of "store logged messages"? Just thinking of the commit message which is set automatically from the PR title

good point


Can't set font-display CSS property

Describe the bug
When you add font-display, you get this error

Argument of type '{ fontDisplay: string; }' is not assignable to parameter of type 'GlobalStyleRule'.
Object literal may only specify known properties, and 'fontDisplay' does not exist in type 'GlobalStyleRule'.ts(2345)

Reproduction
N / A
System Info
System:
    OS: Linux 6.5 Fedora Linux 39 (Workstation Edition)
    CPU: (16) x64 AMD Ryzen 7 7840HS w/ Radeon 780M Graphics
    Memory: 21.45 GB / 27.10 GB
    Container: Yes
    Shell: 5.9 - /usr/bin/zsh
  Binaries:
    Node: 20.8.1 - /usr/bin/node
    npm: 10.1.0 - /usr/bin/npm
  npmPackages:
    @vanilla-extract/css: ^1.13.0 => 1.13.0
    @vanilla-extract/css-utils: ^0.1.3 => 0.1.3
    @vanilla-extract/vite-plugin: ^3.9.0 => 3.9.0
    vite: ^4.4.9 => 4.4.9

Used Package Manager
npm
Logs
No response
Validations

[X] Check that there isn't already an issue that reports the same bug to avoid creating a duplicate.
[X] The provided reproduction is a minimal reproducible example of the bug.

This is because font-display is specific to @font-face rules. Using fontDisplay won't work with style or globalStyle. You want to use either the fontFace or globalFontFace APIs.


Added to bus.h as well as bus.cpp

Modified bus.cpp to include the TODO listed and added temporary initializers to be modified in the future

sorry about all the past commits I didn't see most of these errors when linting. Gonna go through the issues more thoroughly to reduce failed requests