Improve readability of console output

Right now, it's hard to discern the different types of messages in the proxy. What's more, indenting messages makes them even harder to read. We should consider color-coding different types of messages.
Here's our output at the moment:

In comparison, here's an example from the Node proxy:

This is debug output where arrows describe different types of messages (proxy response →/request ←, pass-thru response/request ↑).
Let's look at the different types of messages we log and how we could code them to make them easier to follow.

I like it!
We do need to ensure that we use some iconography as well as color for the different types of messages we're outputting for accessibility reasons.
Open question for this, can we find enough text icons in the default character sets across Windows/Linux/Mac or do we need to have the users install a nerdfont?

Great suggestion @waldekmastykarz a clearer output will really help.

can we find enough text icons in the default character sets across Windows/Linux/Mac or do we need to have the users install a nerdfont?

I think we should stick to using text icons and colour coding, but we could also check to see what the emoji support is across the three OS as an alternative to text icons.

I suspect the lowest common denominator will be cmd on Windows or remote sessions when using the proxy in a container. Let's propose a few designs through a simple console app that we could run across the different terminals to verify it's working as intended. If we choose to use something based on an optional dependency like nerdfont then we should give folks an option to have a readable output without it.

In the following comments I'll add screenshots of some ideas so far. Use 👍 to vote on your preferred UI

Option 1
Warp:

Built-in VSCode terminal:

Option 2
Colored ASCII icons
Warp:

Built-in VSCode terminal:

Option 3
Inverted ASCII icons
Warp:

Built-in VSCode terminal:

Option 4
Emoji icons with colored text
Warp:

Built-in VSCode terminal:

Option 5
Indented
Warp:

Built-in VSCode terminal:

Option 6
Colored labels and text
Warp:

Built-in VSCode terminal:

Option 7
Colored labels
Warp:

Built-in VSCode terminal:

Option 8
Inverted labels
Warp:

Built-in VSCode terminal:

Option 9
Short color labels
Warp:

Built-in VSCode terminal:

Great work on producing these options!
I really like 1 & 8.

Definitely Option 8 because it's the most explicit and easy to follow with the eyes

Thank you for your opinion and the reasoning @tmeckel 😊

Hey @waldekmastykarz  your ideas are great, I don't know if I can improve them, if I may add, I would suggest using the Nerd Font for the icons, we would gain more "real state" in the output and I guess, a better visual representation, I've been using Oh-My-Posh for quite some time now and it was the first thing that came to my mind when I was reading your suggestions.

Thanks for chiming in @MrDrSushi. That's a great idea, like you mentioned, to get some more screen estate back. The only limitation I see is that not everyone might have the font installed, so we'd have to build it as a +1, where we have a baseline symbols that work for everyone. That said, do you have suggestions for icons to use for the different types of messages?

To be honest, the same thought crossed my mind, and for that reason I think the NerdFont should be an optional thing since it is  a +1 (I can't agree more with you) - not everybody will want to go this route if NerdFont is a requirment, I think for devs like myself that live on Terminal screens + Visual Studio Code plugins, having a tool that embraces the current Windows Terminal is an big advantage.
if we could have an option for "settings" we could define our own "icons", then the output would be rendered according to what we are using (NerdFont or not), under whatever I'm using classic MS-DOS Prompt, Linux Terminal, or Windows Terminal + NerdFont + Oh-My-Posh as example.

if we could have an option for "settings" we could define our own "icons", then the output would be rendered according to what we are using (NerdFont or not), under whatever I'm using classic MS-DOS Prompt, Linux Terminal, or Windows Terminal + NerdFont + Oh-My-Posh as example.

A good way about it would be for us to offer a binary switch for NerdFont on|off. If it's disabled, you get whatever works fine in the lowest common denominator. When it's on, you get default icons from us. On top, we'd offer the ability to customize with your own icons. How does that sound?

I took a look at NerdFont and how it could fit our output styling. The biggest issue is readability which seem to differ per font. Here are some examples:
Cascadia Cove 13pt in Warp on macOS:

Hack 13pt in Warp on macOS:

Cascadia Code 12px in VSCode Terminal on macOS:

Here's an example of some icons in our output:

You can barely see them and I wonder if it makes sense to investigate them further.

Here's how the output could look like with Nerd Fonts:

The key part is that user must be using a non-Mono Nerd Font, because for Mono fonts icons are illegible.
Here are some alternative icons that we could consider:

We're refactoring the proxy to separate its core/runtime from the different features. This will allow us to organize the code better and allow others to add custom functionality #58.
We noticed, that this causes the different messages to run out of band:

To address this, we're thinking about two approaches:

To every captured request, assign an ID and prepend it to each message we log. This would look a bit like this:

While the output is condensed, it requires you to look up the URL for each ID which could be cumbersome if you have an app that issues many requests.

To every message append the context URL:

We use bands to group the related lines together and for each message you can quickly see to which request it applies. The downside is that it expands the log with the request method and URL for each message we log.
It would be great to hear your thoughts

Right now, my thinking goes towards:

banded output (rather than assigning an ID for each request)
icon mode with icons Nerd Font or ascii icons with whole lines colored (option 1)
text mode following option 8

Rationale:

banded output allows you to directly see to which request each message relates, without having to scroll back and match the ID to a URL
when you start using the Proxy or you don't use it that often, the different icons could be cryptic, so text mode is self-explanatory
after you've used the Proxy for a while, you might want to condense the output and use icons instead of text labels
if you care about your terminal experience, you likely have a Nerd Font installed and we should use it when possible to give you a great experience
if you don't have Nerd Font, ascii icons are the next best thing

🙋♂ Thinking of it, should we combine option 8 (text labels) with option 1 (icons) so that you can start getting used to icons and at some point remove the text label?

We're refactoring the proxy to separate its core/runtime from the different features. This will allow us to organize the code better and allow others to add custom functionality #58.
We noticed, that this causes the different messages to run out of band:

To address this, we're thinking about two approaches:

To every captured request, assign an ID and prepend it to each message we log. This would look a bit like this:

While the output is condensed, it requires you to look up the URL for each ID which could be cumbersome if you have an app that issues many requests.

To every message append the context URL:

We use bands to group the related lines together and for each message you can quickly see to which request it applies. The downside is that it expands the log with the request method and URL for each message we log.
It would be great to hear your thoughts

I'm intrigued, both options are really good, I guess testing will determine which one is the best when troubleshooting things in a dev/production environment

Right now, my thinking goes towards:

banded output (rather than assigning an ID for each request)
icon mode with icons Nerd Font or ascii icons with whole lines colored (option 1)
text mode following option 8

Rationale:

banded output allows you to directly see to which request each message relates, without having to scroll back and match the ID to a URL
when you start using the Proxy or you don't use it that often, the different icons could be cryptic, so text mode is self-explanatory
after you've used the Proxy for a while, you might want to condense the output and use icons instead of text labels
if you care about your terminal experience, you likely have a Nerd Font installed and we should use it when possible to give you a great experience
if you don't have Nerd Font, ascii icons are the next best thing

🙋♂ Thinking of it, should we combine option 8 (text labels) with option 1 (icons) so that you can start getting used to icons and at some point remove the text label?

I really like option 1, 7 and 8 are equally good also

🙋♂ Thinking of it, should we combine option 8 (text labels) with option 1 (icons) so that you can start getting used to icons and at some point remove the text label?

I love this approach, 💯 in agreement with you.

Loved option 7 & 9. Great thread everyone. I came to the repos to suggest readability. So glad to see the maintainers are already thinking about.

Looks awesome guys, I like nerd fonts, but it does not make it clearer perse. I'd say: just text labels (8) by default, and allow a configuration option to change to icon mode.
Fully in favor of the banded idea as well. 🤙


Calling a virtual method in an ISR when flash is being read panics (IDFGH-1116)

Environment

Development Kit: ESP32-PICO-Kit
Kit version: v1
Module or chip used: ESP32-PICO-D4
IDF version: 3.2
Build System:  Make
Compiler version: xtensa-esp32-elf-gcc.exe (crosstool-NG crosstool-ng-1.22.0-80-g6c4433a5) 5.2.0
Operating System:     Windows
Power Supply:    USB

Problem Description
If I have an ISR that calls a virtual method on a class, and a task is reading from flash, the ESP32 panics. It works fine if the method is not virtual.
Expected Behavior
It doesn't panic
Actual Behavior
It panics
Steps to repropduce
Compile and run the code below (it uses the Arduino framework)
Code to reproduce this issue
#include "Arduino.h"
#include "esp_spi_flash.h"
#include "nvs.h"
#include "nvs_flash.h"

hw_timer_t *timer;

class Test {
public:
	// If this is NOT virtual, everything works
	virtual void IRAM_ATTR callMe();
};

void Test::callMe() {

}

Test *test = new Test();

void IRAM_ATTR isr() {
	test->callMe();
}

void setup() {
    Serial.begin(115200);
    nvs_flash_init();
    timer = timerBegin(0, 80, true);
	timerAttachInterrupt(timer, isr, true);
	timerAlarmWrite(timer, 100, true);
	timerAlarmEnable(timer);
}

void loop() {
	const uint32_t n = SPI_FLASH_SEC_SIZE;
	uint32_t val_read;
	for (uint32_t offset = 0; offset < n; offset += 4) {
		if (spi_flash_read(offset, (uint8_t *) &val_read, 4) != ESP_OK) {
			break;
		}
	}

	delay(10);
}

Other items if possible

Could you please post the panic handler output, obtained using IDF monitor? It will contain a bit more information, such as the specific address which triggers the cache access error.

@judge2005 , @igrr -
I'll also add a note that a virtual function reads the vtable entry out of flash, so you're reading flash within the ISR.  The documentation here (https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/general-notes.html#iram-instruction-ram) states:

If the ISR is placed into IRAM, all constant data used by the ISR and functions called from ISR (including, but not limited to, const char arrays), must be placed into DRAM using DRAM_ATTR.

@judge2005 , @igrr -
I'll also add a note that a virtual function reads the vtable entry out of flash, so you're reading flash within the ISR. The documentation here (https://docs.espressif.com/projects/esp-idf/en/latest/api-guides/general-notes.html#iram-instruction-ram) states:

If the ISR is placed into IRAM, all constant data used by the ISR and functions called from ISR (including, but not limited to, const char arrays), must be placed into DRAM using DRAM_ATTR.

(Granted, it seems as though you should be able to place constant data in flash even if the ISR is marked as being in IRAM; the consequence seems like it should only be that isn't gaining the full benefit of being in IRAM. I'm not sure if there is another rationale.)

I was thinking that the vtable was probably in flash. I don't suppose there could be any way to force it into IRAM? Now or in the future?

It should be possible to move the vtable into DRAM using the linker script generation feature. However, it is not available in Arduino IDE (you will have to use Arduino as IDF component).

It should be possible to move the vtable into DRAM using the linker script generation feature. However, it is not available in Arduino IDE (you will have to use Arduino as IDF component).

Do you have a link to how to do this? I'm not using the Arduino IDE. I am using eclipse, so I may be able to incorporate this into my build process. However, I guess it would be nice to be able to make this happen with a directive like DRAM_ATTR on the class, as I can't guarantee that others using my code would use my development environment!
Thanks

Instructions to use Arduino as IDF component: https://github.com/espressif/arduino-esp32/blob/master/docs/esp-idf_component.md
You have no way to guarantee the same env on your users though.

I see that the ESP8266 Arduino platform has this as a build option. Would it be possible to do this with the ESP32 platform?


Using Postal in Virtualbox

Could I install Ubuntu 16.04 and Postal in Virtualbox? Is there a third party service that would allow me to assign public ip addresses to my Virtualbox server? I guess my question is this. Can I host Postal locally?
If so what would I need to do? The computer I'm using has about 8gb of RAM

The IP addresses would be controlled by either your hosting company or your ISP, depending on where your computer is. Unless you have a fixed static IP address for your postal server to the internet, you will probably not have a great experience.
There is nothing stopping you hosting postal locally, technically it will run on any Ubuntu 16.04 server, but it is likely most of your email would end up in recipients spam folders.

As WIll says, you can definitely host is locally, and it will send emails, but for various reasons, you will likely not have the best experience running it in this way. Without a public IP address, it will not be able to receive email, and unless you control the DNS for your public facing IP address, you are very likely to get blocked by every spam filter you reach. If you simply wish to play with the software, it will work fine on VirtualBox. If you configure it for bridged networking, it will get an IP on your local network, so you should be able to connect to it and send email to it.


[5.6] Set relatedDependenciesBranch to release/5.6

Motivation:
Tools depending on release/5.6 branch of SwiftPM together with release/5.6 branch of TSC fail to build due to conflicting dependencies.
Modifications:
relatedDependenciesBranch now is set to release/5.6 instead of main when SwiftPM release/5.6 branch is checked out. This makes dependencies consistent and resolvable when other Swift tools are included in the dependency tree.
Result:
Tools depending on release/5.6 branch of SwiftPM can be built without failures.

@swift-ci please test

Thanks @MaxDesiatov.  Also opened a corresponding on on swift-driver since local builds will fail otherwise:  https://github.com/apple/swift-driver/pull/929

Will mark approved once the swift-driver change is in so local desktop use doesn't break.  Thanks for this fix @MaxDesiatov!

Still waiting for there to be a 5.6 toolchain so that we can merge the SwiftDriver change.  Otherwise all non-CI builds of SwiftPM will start failing when we merge this.

Update: since there's no 5.6 toolchain yet, and therefore apple/swift-driver#929 is blocked from merging, I ran a cross-repo test using an empty-commit PR in the Swift compiler repo (https://github.com/apple/swift/pull/40613).  That seems to have succeeded, which means that we should be able to merge apple/swift-driver#929 soon and then this one after that.

Update: Still trying to get the swift-driver change in, otherwise desktop builds of SwiftPM will start failing once this is merged.

The SwiftDriver change has been merged, so I will do a local test to confirm that this is now fixed, and then merge it.

With the latest change to SwiftDriver (https://github.com/apple/swift-driver/pull/964), this looks good now for local builds as well.  I think we just need @tomerd's approval now for the 5.6 branch.


HL2 MRTK SlateUGUI Content not Constrained to Slate

Describe the bug
The MRTK SlateUGUI prefab renders correctly in the Unity Player with all fields working as expected and the page scrolls as expected with text or controls confined to the view port area. On HL2 the text and controls are not confined to the view port and are in view at all times. However any control visible outside the view port is "inactive" to input. Also scrolling input actions only are detected while in the view port, even though text and controls are visible outside the view port they are not responsive as if hidden.
To reproduce
Use the MRTK Example Hub and select the Hand Interaction example. Observe the UI Examples.
Expected behavior
I would expect the TextMesh Pro and Unity controls to be visible only in the view port area and that input would only be possible in the view port.
Screenshots
Content in Unity Player is constrained to the view port.

Content in HL2 is visible at all times outside the view port.

The button controls above the view port are inactive as is scroll input outside the view port (as expected). Input only occurs inside the view port as it should.
Your setup (please complete the following information)

Unity Version [e.g. 2019.10f1]
MRTK Version [e.g. v2.4.0]

Target platform (please complete the following information)

HoloLens 2

Additional context
Add any other context about the problem here.

This sounds like https://github.com/microsoft/MixedRealityToolkit-Unity/issues/6747, which is caused when the depth buffer submission is set to 16-bit. It's a side effect of the way Unity sets up stencil buffers. We have some references on it here, here, and here.
If you'd like to use this component, please change the depth buffer format to 24-bit in the Player settings:

Closing this issue as a duplicate.


[$500] Web -  Send message screen - User navigates to Room tab when drag to select e-mail from Chat tab

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Action Performed:

Navigate to staging.new.expensify.com
Click on FAB button
Select Send message from dropdown
Put random e-mail in the input field
Try to select part of the e-mail by dragging

Expected Result:
The e-mail address should be easily highlighted
Actual Result:
User navigates to Room tab when drag to select e-mail from Chat tab
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

[ ] Android / native
[ ] Android / Chrome
[ ] iOS / native
[ ] iOS / Safari
[x] MacOS / Chrome / Safari
[ ] MacOS / Desktop

Version Number: <IP_ADDRESS>
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/93399543/d5af05dc-3577-4d68-86ed-a117206aecaf
Expensify/Expensify Issue URL:
Issue reported by: Applause - Internal Team
Slack conversation:
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~013efbb12cd17aad2f
Upwork Job ID:<PHONE_NUMBER>787040256
Last Price Increase: 2023-09-24

Proposal
Please re-state the problem that we are trying to solve in this issue.
When attempting to select the email address in the text input of the Chat tab, the tab swipes to show the Room tab.
What is the root cause of that problem?
Attempting to swipe or drag anywhere on the tab screens results in a swipe action which will change the current tab, regardless of the focused or active control.
What changes do you think we should make in order to solve the problem?
Add a PanResponder to the target control in order to handle the swipe action and prevent the tab from swiping. This can be added to a wrapper View for the text input control in BaseOptionsSelector.
const panResponder = PanResponder.create({
    onMoveShouldSetPanResponder: () => true,
    onPanResponderTerminationRequest: () => false,
});
...
<View {...panResponder.panHandlers}>
  <TextInput
      ...
  />
</View>

Since this will also affect the text input on the Room tab, we can create a lib file that defines the pan responder and then wrap each of the affected text inputs with a View that uses the pan responder's handlers.
What alternative solutions did you explore? (Optional)
None.
https://github.com/Expensify/App/assets/4160319/8204228e-edba-459b-a07d-fb58ab125873

Please re-state the problem that we are trying to solve in this issue.
Web - Send message screen - User navigates to Room tab when drag to select e-mail from Chat tab

@ginsuma Please don't just copy the title to re-state the problem. Your solution is not fixing this issue; we still want to be able to navigate the tab with a swipe on all platforms.

@akinwale Your proposal looks good. We already have the same pan responder in the MapView. For better understanding, could you explain more about the combination of onMoveShouldSetPanResponder and onPanResponderTerminationRequest fixing the issue?

@mollfpr
onMoveShouldSetPanResponder is triggered when there is any movement gesture on the control either horizontally or vertically. Setting it to true enables the view which has the handler set to become the responder for the move gesture. In this case, since we set the pan handler for the wrapper view, it starts to handle the move gesture, instead of the parent tab view which does the swiping.
onPanResponderTerminationRequest deals with the parent view intercepting or interrupting the current gesture being handled. This could happen in empty areas of the view handling the gesture. Empty areas meaning the parts of the view that don't have any text content or subviews that can be interacted with. When the movement gesture gets to this empty area, the view's gesture handling is terminated, and the parent takes over, unless we set the termination request to return false.
Hope that makes sense.

Thanks @akinwale!
The proposal from @akinwale looks good to me!
🎀 👀 🎀 C+ reviewed!

Should we udpate our text inputs to work like this more generally? Is there ever a scenario where we want this swipe gesture to work when swiping within a text input?

Should we udpate our text inputs to work like this more generally? Is there ever a scenario where we want this swipe gesture to work when swiping within a text input?

This only really affects text inputs that are used within swipeable tabs, so maybe we could have a separate component called SwipeInterceptTextInput (or a better name?), which can be used in these scenarios. The root view of the component would have the necessary pan handlers set up.

This only really affects text inputs that are used within swipeable tabs

That makes sense. Would there be a downside of adding this swipe intercept code to all TextInputs anyways?

This only really affects text inputs that are used within swipeable tabs

That makes sense. Would there be a downside of adding this swipe intercept code to all TextInputs anyways?

I can't say for sure. In BaseTextInput there is a wrapper view around RNTextInput, so maybe we could (conditionally?) add the panhandlers to that instead.
https://github.com/Expensify/App/blob/3e9fdf6f70bdfd9366ffa6bbedfe80d66f683d89/src/components/TextInput/BaseTextInput.js#L282-L285
So essentially create a new prop interceptsSwipe and when it's true add the pan handler to the View.

I like that approach. What do you think @mollfpr?

Yup, I agree with making the component generic in case we have a similar case happen.

Great, let's do it.

@mollfpr My PR is ready for review. Thanks.

Payment Summary:

External issue reporter - Applause N/A
Contributor that fixed the issue - @akinwale payment issued in Upwork $500
Contributor+ that helped on the issue and/or PR - @mollfpr please accept offer in Upwork, payment owed $500

Please update the checklist steps above so we can close out. Thanks!

@laurenreidexpensify Could this be considered eligible for the speed bonus? There was a delay with merging the PR. Thanks.
cc @puneetlath

[@akinwale / @mollfpr] The PR that introduced the bug has been identified. Link to the PR:
[@akinwale / @mollfpr] The offending PR has been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake. Link to comment:

No offending PR. The issue arises when implementing the slide tab navigation, but we improve our TextInput component to ignore swiping the tab inside the text input.

[@akinwale / @mollfpr] A discussion in #expensify-bugs has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner. Link to discussion:

This should be a one time bug, the regression step should be enough.

[@akinwale / @mollfpr] Determine if we should create a regression test for this bug.
[@akinwale / @mollfpr] If we decide to create a regression test for the bug, please propose the regression test steps to ensure the same bug will not reach production again.

Precondition: the account should be in beta or at least can create a room chat.

Launch Expensify
Open the global create menu and select Send message
Enter an email address in the text input in the Chat tab

On the web and desktop, verify that attempting to select the text in the text input does result in a swipe to the Room tab.
On native iOS, verify that when the text is in selection mode, dragging the text selection handles does not result in a swipe to the Room tab.
On native Android, verify that when the text input is focused, dragging within the text input does not result in a swipe to the Room tab.

Switch to the Room tab.
Enter some text for the room name.
Run the same verifications for step 4 with the room name input.

@laurenreidexpensify Could you confirm if we are eligible for the speed bonus? Thanks!

@puneetlath do you agree this is eligible for the speed bonus?

Yes, that seems fair given me accidentally not merging after approving.

Updated Payment Summary:

External issue reporter - Applause N/A
Contributor that fixed the issue - @akinwale payment issued in Upwork $500 + 50% bonus = $750
Contributor+ that helped on the issue and/or PR - @mollfpr please accept offer in Upwork, payment owed $500 + 50% bonus = $750

$750 payment approved for @mollfpr based on summary above.


merge changes to upstream: ldap secure connections, log/exception han…

…dling, AWS SessionDurations, userPrincipalName as LDAP search filter

Coverage decreased (-0.4%) to 87.379% when pulling 0f816f7234d330ad5771e2f44b87db138a525074 on fnerdwq:upstream_merge into c8cf2da7bbf1df8bba7477efd09baebeda60ad67 on ImmobilienScout24:master.

Coverage decreased (-0.4%) to 87.44% when pulling 205366a810259c23d8c33a26530ce05b8bc69df4 on fnerdwq:upstream_merge into 15ab5e6528fc0705db7764c5b8359565d9db1dcf on ImmobilienScout24:master.


Jupyter Notebook training for GPU Optimization Guide

Existing Sample Changes
Description
Adding Jupyter Notebook training for GPU Optimization training, code samples used is from GPU Optimization guide document.
External Dependencies
NA
Type of change
Please delete options that are not relevant. Add a 'X' to the one that is applicable.

[X] New feature (non-breaking change which adds functionality)

How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Provide instructions so we can reproduce. Please also list any relevant details for your test configuration

[X] Command Line
make
make run
make clean

@jkinsky @tomlenth I'm back and going through all the PRs... has Rakshith reviewed this with either of you already?

@jimmytwei , I'm not familiar with this particular one.  And, I think there may be some of the sycl migration samples that have not "officially" been reviewed in the WG.  These may not have made it onto the dashboard either.  I'm having trouble wading through a lot of the git notifications to sort through what's what.

These top-level Jupyter Notebook readmes are kind of unique. This is a better example of the structure for these types of top-level readmes: https://github.com/oneapi-src/oneAPI-samples/blob/development/AI-and-Analytics/Jupyter/Predictive_Modeling_Training/README.md. The readme.md in this PR is close to the final structure needed, but it could be updated to match the example more.

@praveenkk123 @jkinsky I've updated all of the READMEs and moved the License section to the bottom.


add pyupgrade (#2253)

Description

Added https://github.com/asottile/pyupgrade to .pre-commit-config.yam (#2253)
Tested it with pre-commit run --all-files, and also added the changes of running the hook in a separate commit.
I had to add the --keep-runtime-typing flag, otherwise it would break the tests.
Types of Changes

[ ] Core
[ ] Bugfix
[ ] New feature
[x] Enhancement/optimization
[ ] Documentation

Issues Fixed or Closed by This PR

#2253 Add pyupgrade to pre-commit

Checklist

[x] My code follows the code style of this project.
[ ] My change requires a change to the documentation. - I'm pretty sure it's not.
[ ] I have updated the documentation accordingly.
[x] I have read the CONTRIBUTING document.
[ ] I have added tests to cover my changes. - Is it relevant here?
[x] I have tested the changes and verified that they work and don't break anything (as well as I can manage). - Ran tests and also tested the example app.py specified in the README. Everything seems to work fine.

Hi, thanks for contributing to Strawberry 🍓!
We noticed that this PR is missing a RELEASE.md file. We use that to automatically do releases here on GitHub and, most importantly, to PyPI!
So as soon as this PR is merged, a release will be made 🚀.
Here's an example of RELEASE.md:
Release type: patch

Description of the changes, ideally with some examples, if adding a new feature.

Release type can be one of patch, minor or major. We use semver, so make sure to pick the appropriate type. If in doubt feel free to ask :)
Here's the tweet text:
🆕 Release (next) is out! Thanks to Liel Fridman for the PR 👏

Get it here 👉 https://github.com/strawberry-graphql/strawberry/releases/tag/(next)

Also, I'm not sure if the release should be patch (as it is now) or minor. Would happily change it if needed

Thanks for contributing to Strawberry! 🎉 You've been invited to join
the Strawberry GraphQL organisation 😊
You can also request a free sticker by filling this form: https://forms.gle/dmnfQUPoY5gZbVT67
And don't forget to join our discord server: https://strawberry.rocks/discord 🔥


Error: I/O Error in DHCP: Address already in use (os error 98)

Hi,
Here a progress report from my exploring erbium expedition ;-).
I'm stuck at
Error: I/O Error in DHCP: Address already in use (os error 98)

But I don't understand that fatal error message.
With sudo strace target/debug/erbium I can see
socket(AF_INET, SOCK_DGRAM|SOCK_CLOEXEC|SOCK_NONBLOCK, IPPROTO_IP) = 15
bind(15, {sa_family=AF_INET, sin_port=htons(67), sin_addr=inet_addr("<IP_ADDRESS>")}, 16) = -1 \
  EADDRINUSE (Address already in use)
close(15)

With ss -n | grep :67  I did found a dhcp client, but after switching network configuration of my Linux laptop to static config, the error persists.
What should be done to get beyond the EADDRINUSE?

Hmm.  This is saying that something is already using that port.  What does ss -nulp | grep :67 say?  It should list the process name/pids of things that have that port already open.

Hmm.  This is saying that something is already using that port.  What does ss -nulp | grep :67 say?  It should list the process name/pids of things that have that port already open.

Yes, the l of listen  makes the difference.
$ sudo ss -n | grep :67
$ sudo ss -nl | grep :67 | sed -e 's/    / /g'
udp   UNCONN 0   0                         <IP_ADDRESS>%virbr0:67       <IP_ADDRESS>:*
udp   UNCONN 0   0                         <IP_ADDRESS>%ovsbr0:67       <IP_ADDRESS>:*
$

Silly me.
Running the request test:
$ sudo ss -nulp | grep :67 | sed -e 's/    / /g'
UNCONN 0   0           <IP_ADDRESS>%virbr0:67   <IP_ADDRESS>:* users:(("dnsmasq",pid=1621,fd=3))
UNCONN 0   0           <IP_ADDRESS>%ovsbr0:67   <IP_ADDRESS>:* users:(("dnsmasq",pid=1393,fd=4))

That indeed does explain the EADDRINUSE.  Now how to get beyond it  :smiley:
dnsmasq does bind on interface name and each dnsmasq only claims one interface.
To get ( to trick? ) erbium to only use eth0  I have in erbium.conf this line
  addresses: [ <IP_ADDRESS>/26 ]

because
$ ip -4 address show dev eth0
7: enxe4b97a90028f: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet <IP_ADDRESS>/26 brd <IP_ADDRESS> scope global noprefixroute enxe4b97a90028f
       valid_lft forever preferred_lft forever

I think the strace shown
bind(15, {sa_family=AF_INET, sin_port=htons(67), sin_addr=inet_addr("<IP_ADDRESS>")}, 16)

should become something like
bind(15, {sa_family=AF_INET, sin_port=htons(67), sin_addr=inet_addr("<IP_ADDRESS>")}, 16)

to honor
  addresses: [ <IP_ADDRESS>/26 ]

from erbium.conf.

Yes, the l of listen  makes the difference.
$ sudo ss -n | grep :67
$ sudo ss -nl | grep :67 | sed -e 's/    / /g'
udp   UNCONN 0   0                         <IP_ADDRESS>%virbr0:67       <IP_ADDRESS>:*
udp   UNCONN 0   0                         <IP_ADDRESS>%ovsbr0:67       <IP_ADDRESS>:*
$

Silly me.
Running the request test:
$ sudo ss -nulp | grep :67 | sed -e 's/    / /g'
UNCONN 0   0           <IP_ADDRESS>%virbr0:67   <IP_ADDRESS>:* users:(("dnsmasq",pid=1621,fd=3))
UNCONN 0   0           <IP_ADDRESS>%ovsbr0:67   <IP_ADDRESS>:* users:(("dnsmasq",pid=1393,fd=4))

That indeed does explain the EADDRINUSE.  Now how to get beyond it  :smiley:
dnsmasq does bind on interface name and each dnsmasq only claims one interface.
To get ( to trick? ) erbium to only use eth0  I have in erbium.conf this line
  addresses: [ <IP_ADDRESS>/26 ]

because
$ ip -4 address show dev eth0
7: enxe4b97a90028f: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc pfifo_fast state UP group default qlen 1000
    inet <IP_ADDRESS>/26 brd <IP_ADDRESS> scope global noprefixroute enxe4b97a90028f
       valid_lft forever preferred_lft forever

I think the strace shown
bind(15, {sa_family=AF_INET, sin_port=htons(67), sin_addr=inet_addr("<IP_ADDRESS>")}, 16)

should become something like
bind(15, {sa_family=AF_INET, sin_port=htons(67), sin_addr=inet_addr("<IP_ADDRESS>")}, 16)

to honor
  addresses: [ <IP_ADDRESS>/26 ]

from erbium.conf.

erbium, currently, always listens on <IP_ADDRESS>.  I want to support interfaces coming and going without needing to restart erbium, as well as erbium dropping permissions (which, to be fair, it doesn't do at the moment), so it wouldn't be able to start listening on a new interface after startup.
I could, I guess, add a "dhcp-listen-addresses: [<IP_ADDRESS>]" or similar for people who specifically don't want it to listen on all interfaces.

erbium, currently, always listens on <IP_ADDRESS>.  I want to support interfaces coming and going without needing to restart erbium, as well as erbium dropping permissions (which, to be fair, it doesn't do at the moment), so it wouldn't be able to start listening on a new interface after startup.
I could, I guess, add a "dhcp-listen-addresses: [<IP_ADDRESS>]" or similar for people who specifically don't want it to listen on all interfaces.

FWIW:

When an interface goes, it is fine that it takes erbium with it.
I have no idea how network daemons should cope with bouncing interfaces, but I fear the idea of a running network daemon that is unaware of a returned network interface.
Listening on 1  interface will allow running  various erbium instances for various interfaces.

FWIW:

When an interface goes, it is fine that it takes erbium with it.
I have no idea how network daemons should cope with bouncing interfaces, but I fear the idea of a running network daemon that is unaware of a returned network interface.
Listening on 1  interface will allow running  various erbium instances for various interfaces.

Listening on 1 interface will allow running various erbium instances for various interfaces.

is to express that

I could, I guess, add a "dhcp-listen-addresses: [<IP_ADDRESS>]" or similar for people who specifically don't want it to listen on all interfaces

is indeed a solution to Error: I/O Error in DHCP: Address already in use (os error 98)

I've given this quite a bit of thought over the last few weeks, trying to figure out the right balance.

Do I have a global listen-addresses (or possibly listen-interfaces) for all protocols?   Or do I have a per protocol dhcp-listen-addresses / radv-listen-addresses / dns-listen-addresses (or their equivalent ${protocol}-listen-interfaces)?  Or both?  What should the semantics be if you, say, specify listen-interface: ['eth0'] and dhcp-listen-address: <IP_ADDRESS>?  Are you interested in listening on an interface, or listening on an address?

Having one erbium process process per interface is a bit odd when I finish up the DNS support, as you'll end up with an unique DNS cache per interface.  Is this the right thing to do?

I still would like to make it that you can (although don't necessarily have to)  start erbium before an interface is available, and let erbium handle the interface coming and going.


Set empty string for leader_election_default_resource

What does this PR do?
Set empty string for leader_election_default_resource
Motivation
The cluster agent can detect it automatically.
Additional Notes

config.go is re-structured


Updated task variables to support dots

Same as #414, my fork got deleted though and this is easier.
Fixes #303

I'm going to just merge since I got an approval in #414


/description.xml returns the wrong webserver address, seems to be the ip of eth0 nic, but ha-bridge web server was bind to ip of eth1...?

/description.xml returns the wrong webserver address, seems to be the ip of eth0 nic, but ha-bridge web server was bind to ip of eth1...

...i use the IP 192.168.168 (which is shown in the XML http response) NOT for ha-bridge, but i use <IP_ADDRESS> as ha-bridge web server ip address instead of <IP_ADDRESS> or something like that...
but why the response will contain <IP_ADDRESS> instead of <IP_ADDRESS>??
You can clearly see, that the browsers url bar contains <IP_ADDRESS>...
Maybe the xml response will return ALWAYS the ip of the primary nic adapter, even if it not uses its IP address? That would be clearly a bug...
And i set all 3 things:

UPnp IP: <IP_ADDRESS>
Use UPNP Address Interface Only: TRUE
Web server IP: <IP_ADDRESS>

-> <IP_ADDRESS> is the ip of ethernet adapter 1, called "eth0" in Debian 9.11
-> <IP_ADDRESS> is the ip of etherner adapter 2 called "eth1" in Debian 9.11
(i use non-predictable network interface names for all devices with kernel paramter ifname=0..)
So why the response contains "<IP_ADDRESS>" and NOT "<IP_ADDRESS>" - that's the big question...
And: The JRE i use is the current OpenJDK for Debian 9, maybe that's relevant for a solution?
Thank you for your feedbacks.

same problem when i use -Dserver.ip=<IP_ADDRESS> parameter - the response still shows the IP <IP_ADDRESS>...

When i change the UPnp IP, then i will see the Echo device will do a request to that address:
http://<IP_ADDRESS>/description.xml
OR
http://<IP_ADDRESS>/description.xml
But the problems is, when i set it to
<IP_ADDRESS>: The XML http response text contains the wrong ip <IP_ADDRESS>
<IP_ADDRESS>: There is NO http service running on that address
(Webserver IP is set to <IP_ADDRESS> on both cases, but i can't run it on <IP_ADDRESS> because there is an apache2 service for our Web GUI..)
How to solve that problem? Maybe a fix on java code, but i also has some difficulties to use the ha-bridge code i cloned/pulled from the ha-bridge github url. Maven build with option ("goal") "deploy" give me an error message:
https://github.com/bwssytems/ha-bridge/issues/1136

-> With that wrong (buggy) configuration, the smart home device seach process will find all the devices (once - as normal, no duplicates), but it is not able to switch them, it says, "Device XXX does not answer"..

And when i do a reverse proxy as described on your manual (with an additional entry to /description.xml, not just /api*) from apache on <IP_ADDRESS> to the ha-bridge IP <IP_ADDRESS>, then

The Echo Gen. 2 device will find the devices twice (=duplicates), and after that it is able to switch them well

The Echo Gen. 3 device will find the devices once (=correctly!!), an after that it is able to switch them well too...

"with an additional entry to /description.xml, not just /api*"
-> Then it fits to the address given in its XML http response text, a request to http://<IP_ADDRESS>/description.xml returns me the same as on http://<IP_ADDRESS>/description.xml - an XML response which contains <IP_ADDRESS>..
Hmm.... that's interesting...;-)

-> Both Echo devices have the most current firmware (When i say "Alexa, do a software update" (in Germen), i get the message that all is up-to-date)

Same problem here!

When you have multiple interfaces and want to slave it to a specific network device, you have to select the Bridge Control attribute of "Use UPNP Address Interface Only" to be true.

When i set UPnP and Webserver IP the the 2nd NIC's IP address <IP_ADDRESS> AND set Use UPNP Address Interface Only to "true", then the http response of http://<IP_ADDRESS>/description.xml still returns an XML http response with the 1st (primary) NICs IP address <IP_ADDRESS>...
This makes no sense i.m.h.o!!
So same situation as described...

Well then we may have found a bug. I'll take a look.....

ok thx

Maybe the responses from http://<IP_ADDRESS>/api* will also return the wrong IP <IP_ADDRESS>...
...maybe, but currently i don't have a proof. I think you can appraise it better than me! ;-)

So, it looks like we need to set the "Web Server IP Address" to the same as the upnp config address when using "Use UPNP Address Interface Only"

Did you test that? I think i also have done this... (i tried almonst every thing! ;-)) all habridge services (web, upnp) on the 2nd NICs IP...
...AND Use UPNP Address Interface Only to true !!
It seems (when i remember right) a request on http://<IP_ADDRESS> (=2nd NICs IP) will still give me a XML response with http://<IP_ADDRESS> in its text...
I can also do a screen capture to show it to you. (Later, when i'm at home..)

So, please layout how your ip and interfaces are mapped including physical and virtual.

Windows 10 Pro x64 VirtualBox Virtualization Host System:
<IP_ADDRESS> on LAN Adapter #1
VirtualBox Debian Guest VM:
2 LAN Adapters as a bridge to LAN Adapter #1
Guest LAN Adapter 1 = eth0 = IP <IP_ADDRESS>
Guest LAN Adapter 2 = eth1 = IP <IP_ADDRESS>
...so BOTH VirtualBox LAN adapters are one one same "level" / "layer". They are just 2 "plain" VirtualBox NICs set up as bridge.

traceupnp output in can send you in 1-2 hours, when i'm at home.

Ahh, what are the network masks on the Guest LAN adapters? The eth0 would have to have <IP_ADDRESS> and eth1 would have to have the same at <IP_ADDRESS>. I do not know how well the multicast address handling would be on those.

I never heard about <IP_ADDRESS>, but i don't know what ha-bridge internally does..
My default subnet mask is <IP_ADDRESS>.
And no i can't change the adapters "default" subnet mask (respectively the DHCP server) to <IP_ADDRESS> - to less hosts, only 64 for a .26 subnet.

So, that is where the issue is coming in as there is no subnet differentiation, the ha-bridge uses the inbound messages path to pick the outbound interface and ip target for the description.xml.
Might have to force the address to the UPNP config address when using "Use UPNP Address Interface Only"

So there is no solution or workaround by configuration yet - just on Java code?

So, in the interim, please try this as it does the setting but may not be perfect: Turn on this flag in Bridge Control and see if it helps" UPNP Original (simple version)"

I also tried this, but i forgot in what combination.
Then i think the best scenario the bypass that problem is:
**UPnp IP:** <IP_ADDRESS>
**Web IP:** <IP_ADDRESS>
**Use UPNP Address Interface Only:** true
**Use UPNP Original (simple version):** true

Do you think this settings may be adequate?

So, I looked at the code and it will force the description.xml to be that IP but the upnp responses to get there will not be correct. I'll have to change the code to force it for use the upnp config address across he board.

@SchmuFoo Dual hosting to the same subnet can always lead to routing wierdness

To have the direction for a specific IP, you will need to have specific routes.

Yes, i'm at home soon.
And i will also try to use the same "route" linux command as we use on your Raspbian systems. (when i remember right we use one - firstly, i completely forgot that, i'm just a developer and not a network engineer..)

OK, i came home and did the test...
..and it seems UPNP Original (simple version): true is a workaround to solve the problem. A http request to the 2nd NICs IP to /description.xml show me the same URL in its XML response i used in the browser URL bar.
With that

Echo 3 smart home device search will find 5 devices (correct), but can't switch them. ("Light office does not anwser, please check network and power connection" on german..)

BUT: Where is the relation between UPNP Original (simple version): true and the method how your software handles multiple NICs (maybe on same subnet, maybe not..?) ??? I can't see any relation, and there should not be a relation in my opinion.
I asked in another thread to to compile habridge, my idea was to replace the MAC and IP data (in the XML response from /description.xml) by the MAC and IP used by NIC set for webserver in habridge GUI. Maybe that is an idea, or i'm wrong?* Maybe a lil bit, maybe completely...!? ;-)

So i already said, may be there are other URL with that issue, not just /description.xml... maybe, for example, /api*...? (You know that better!)

And now i will start Gen. 2 (turn off Gen. 3) for the same test!

OK...
Off-topic: The Gen 2. device made a lot of irritating problems, it was still showing the devices twice. After shutting down ha-bridge, doing power-off on Echo and manual deleting each device separately in alexa smart home devices list (and waiting for each one until the messsage "Deletion was successful" is gone!!)
Now it will find 0 devices with the configuration where all services (web, upnp) are running on the 2nd adapter's IP, UPNP Original (simple version): true and Use UPNP Address Interface Only: true
And now i will repeat the whole shutdown-habridge- / power-off- / manual-smart home-device delete-steps on Gen. 3 too...

_**"Off-topic: The Gen 2. device made a lot of irritating problems, it was still showing the devices twice. After shutting down ha-bridge, doing power-off on Echo and manual deleting each device separately in alexa smart home devices list (and waiting for each one until the messsage "Deletion was successful" is gone!!)
Now it will find 0 devices with the configuration where all services (web, upnp) are running on the 2nd adapter's IP, UPNP Original (simple version): true and Use UPNP Address Interface Only: true"**_
AND
**_"Now it will find 0 devices with the configuration where all services (web, upnp) are running on the 2nd adapter's IP, UPNP Original (simple version): true and Use UPNP Address Interface Only: true
And now i will repeat the whole shutdown-habridge- / power-off- / manual-smart home-device delete-steps on Gen. 3 too..."_**
SAME RESULT FOR GEN 3 AFTER DOING THAT RESET STEPS: Does not find the devices anymore. Sometimes it finds iself ("Echo Gen. III - Amazon Intelligent Device"), but not always.

Ok, here my routing table of my home pc, same kind of configuraion as on workplace. But the IPs are different, that's all:
IP on workplace <IP_ADDRESS> = prim. NIC IP = <IP_ADDRESS> at home
IP on workplace <IP_ADDRESS> = sec. NIC IP = <IP_ADDRESS> at home
Kernel-IP-Routentabelle
Ziel            Router          Genmask         Flags Metric Ref    Use Iface
default         OpenWrt1.lan    <IP_ADDRESS>         UG    202    0        0 eth0
default         OpenWrt1.lan    <IP_ADDRESS>         UG    203    0        0 eth1
<IP_ADDRESS>     <IP_ADDRESS>         <IP_ADDRESS>   U     202    0        0 eth0
<IP_ADDRESS>     <IP_ADDRESS>         <IP_ADDRESS>   U     203    0        0 eth1

On our Raspbian systems (2nd on virtual adapter type "macvlan"), we use that routing command for the 2nd NIC after setting IP configuration:
route add -net <IP_ADDRESS> netmask <IP_ADDRESS> gw <IP_ADDRESS> dev eth1 metric 205

After that, "route" gives me:
Kernel-IP-Routentabelle
Ziel            Router          Genmask         Flags Metric Ref    Use Iface
default         OpenWrt1.lan    <IP_ADDRESS>         UG    202    0        0 eth0
default         OpenWrt1.lan    <IP_ADDRESS>         UG    203    0        0 eth1
<IP_ADDRESS>     <IP_ADDRESS>         <IP_ADDRESS>   U     202    0        0 eth0
<IP_ADDRESS>     <IP_ADDRESS>         <IP_ADDRESS>   U     203    0        0 eth1
<IP_ADDRESS>     OpenWrt1.lan    <IP_ADDRESS>   UG    205    0        0 eth1

Well that routing table cannot be resolved to do anything with the ha-bridge properly as the route will be indifferent....

OK, thx.
"Well that routing table cannot be resolved to do anything with the ha-bridge properly as the route will be indifferent...."
After or before our "route add..."-command?

i do not really understand why gateways are relevant if all connections between echo and ha-bridge will be done on the local subnet, that is little bit difficult to understand for me...

Your routing table will always use eth0 for sending traffic out as the route table has duplicate entries for the same route. It will always pick the first explicit match.

So, I assume you have this complicated mess due to you want to run a webserver on port 80 and then run ha-bridge there as well. To make it work, you'll need to have 2 different subnets, one on eth0 and one on eth1, and that will make them separate.

Exactly...
A hardware-solution, or a pfsense router, maybe a new VM? ;-)
That was just a joke: To install a virtual NIC (e.g. macvlan or macvtap (?), then configure routing (not NAT, "real" routing) between macvlan and VirtualBox Adapter on Debian) does not work on Linux with VirtualBox, due to the Windows 10 host.
I was always prefering the 2nd IP solution, and not the reverse proxy one, because i was thinking it is more "clean" (no changing the apache server used for our web GUI) to have a dedicated IP...
But that seems to be not so easy...
But i also need to say that the solution on Raspbian (with macvlan, static ip, and command "route add -net <IP_ADDRESS> netmask <IP_ADDRESS> gw <IP_ADDRESS> dev habridge metric 205") was working BEFORE - at least with Gen. 2 devices. ha-bridge was never the problem - thank you for that great product!
(...but Amazon made a alot problems with "port 80-only", different firmware versions, different devices (their MAC is often completely different), different countries, smart-home-device-"caching" (they will be found sometime on smart home device search if ha-bridge is down, WTF is going on, amazon?))
I have the 2nd IP approch seen on Raspbian in a working condition, then i was thinking to do the same after we started a Debian 9/amd64-Version of our product. Then, the first problem was the "macvlan"-Adapter that can be used if it runs as a VM on a Win10 host. After that, i had the idea with creating a 2nd VirtualBox NIC.

You should be able to do this with the 2 interfaces with different subnets. You will have to understand the routing and how to run apache so it is only on the one device. Your current solution will not work due to the routing issues. I would suggest reading up networking and webserver configurations to get this to work. I'm available on a consulting basis if you need help as it looks as you are working on a commercial project.


Fixing object syntax in grid docs

Coverage remained the same at 100.0% when pulling 71faa61d76c8f4a3b3d911121d2081a416fc427a on all9lives:patch-1 into 0ab9c677c3ffe541d775f9ad60a6b1f86a6634fc on AlgusDark:master.


termonad: remove top-level termonad-with-packages alias

Description of changes

Removes the termonad-with-packages alias that is not used anymore.
Related to https://github.com/cdepillabout/termonad/issues/196.
Things done

Built on platform(s)

[X] x86_64-linux
[ ] aarch64-linux
[ ] x86_64-darwin
[ ] aarch64-darwin

[ ] For non-Linux: Is sandbox = true set in nix.conf? (See Nix manual)
[ ] Tested, as applicable:

NixOS test(s) (look inside nixos/tests)
and/or package tests
or, for functions and "core" functionality, tests in lib/tests or pkgs/test
made sure NixOS tests are linked to the relevant packages

[ ] Tested compilation of all packages that depend on this change using nix-shell -p nixpkgs-review --run "nixpkgs-review rev HEAD". Note: all changes have to be committed, also see nixpkgs-review usage
[ ] Tested basic functionality of all binary files (usually in ./result/bin/)
22.11 Release Notes (or backporting 22.05 Release notes)

[ ] (Package updates) Added a release notes entry if the change is major or breaking
[ ] (Module updates) Added a release notes entry if the change is significant
[ ] (Module addition) Added a release notes entry if adding a new NixOS module
[ ] (Release notes changes) Ran nixos/doc/manual/md-to-db.sh to update generated release notes

[X] Fits CONTRIBUTING.md.

I'll test eval in the haskell-updates branch, so I'll go ahead and merge in now.


Hero builds mercenary replacement

Hi,
Currently with the way hero build loading works, I have a singular hero team loadout for my melee classes but then need to have multiple per caster due to them having mercenary heroes made after them.
For example, my necro character is my mercenary BiP. This means that I need a specific set of hero team builds just for necro that take Master of Whispers instead of my mercenary. It would be great to be able to set default fallback heroes, assuming the one selected can't be loaded.
Hopefully that makes some sense.

You’ve got 2 options here without any code changes:

you could set up a team build for every iteration that you need, then add a hotkey for each one. Set the profession of the hotkey to match the build it’s loading and bind them all to the same key. If you press the key as a monk, it’ll load a different bar than if you were on a necro.
Don’t rely on mercenaries and instead take the time to unlock and use heroes instead. This way you won’t need to worry about this issue at all.

Fallback heroes have been mentioned before but it’s a lot of extra ifs and buts for something that you can already handle by other means

The chat command to load a hero team is ‘/heroteam [name of team build]’

There's a third and maybe most sensible option: create your mercenaries and then delete the character. That way you can use the same mercenaries on every character.


merge if statements with the enclosing one code smell

Breaking change

Proposed change

Type of change

[ ] Dependency upgrade
[ ] Bugfix (non-breaking change which fixes an issue)
[ ] New integration (thank you!)
[ ] New feature (which adds functionality to an existing integration)
[ ] Deprecation (breaking change to happen in the future)
[ ] Breaking change (fix/feature causing existing functionality to break)
[ ] Code quality improvements to existing code or addition of tests

Additional information

This PR fixes or closes issue: fixes #
This PR is related to issue:
Link to documentation pull request:

Checklist

[ ] The code change is tested and works locally.
[ ] Local tests pass. Your PR cannot be merged unless tests pass
[ ] There is no commented out code in this PR.
[ ] I have followed the development checklist
[ ] The code has been formatted using Black (black --fast homeassistant tests)
[ ] Tests have been added to verify that the new code works.

If user exposed functionality or configuration variables are added/changed:

[ ] Documentation added/updated for www.home-assistant.io

If the code communicates with devices, web services, or third-party tools:

[ ] The manifest file has all fields filled out correctly.
Updated and included derived files by running: python3 -m script.hassfest.
[ ] New or updated dependencies have been added to requirements_all.txt.
Updated by running python3 -m script.gen_requirements_all.
[ ] For the updated dependencies - a link to the changelog, or at minimum a diff between library versions is added to the PR description.
[ ] Untested files have been added to .coveragerc.

The integration reached or maintains the following Integration Quality Scale:

[ ] No score or internal
[ ] 🥈 Silver
[ ] 🥇 Gold
[ ] 🏆 Platinum

To help with the load of incoming pull requests:

[ ] I have reviewed two other open pull requests in this repository.

Motivation:
What is the issue/code smell?
Clumsy if statements
Why is this issue/ code smell relevant?
An if statement with a single nested "if" branch can be misleading to a developer, to increase the code readability this code smell should be fixed.
How is the issue resolved?
this issue can be resolved by merging the two if statements into one single if statement.

Ok motivation and implementation seems to be correct. However, there are CI test failures. I suspect these stem from some of the changes, i.e. the merging of if-statements leads to the errors found by the static code checker. Maybe this is the reason why these if-statements were formulated that clumsily in the first place? Anyway, this is not the students fault, hence the PR is acceptable.


src: move EEPROM methods from DuckNet to DuckUtils

Describe at a high level the solution you're providing

Move the functionality of saving the WiFi credentials to EEPROM to
the saveWifiCredentials function in DuckUtils
Move the functionality of loading the WiFi credentials from EEPROM to
the loadWifiSsid and loadWifiPassword functions in DuckUtils

Is this a patch, a minor version change, or a major version change
Patch
Is this related to an open issue?
https://github.com/Call-for-Code/ClusterDuck-Protocol/issues/231

Hmmm. For some reason the Travis didn't fire

@nfeuer Is there something I need to do to get Travis to run?

Yep travis error expected. It is fixed in another PR. Looks good!


Sourcemaps for CSS

Hello, i created my first Angular2 app and i would get sourcemaps for CSS. Here is an example of Component:
import {Component} from '@angular/core';

@Component({
    moduleId: module.id,
    selector: 'home',
    templateUrl: 'home.component.html',
    styleUrls: ['home.component.css']
})

export class HomeComponent {
}

As far as i know in Angular2 all component CSS code is injected as <style> tag and this prevents CSS to be mapped: in Chrome inspector i have no sourcemaps for style files.
So, any idea to map and then debug CSS files in Angular2?

It is duplication of https://github.com/mgechev/angular2-seed/issues/1141.


remote images is broken again

Remote images has wrong header set.

i assume this is related to this error
Loading... please wait, this can take some time Connection error. Could not retrieve data.
XMLHttpRequest cannot load https://images.linuxcontainers.org/1.0/images. No 'Access-Control-Allow-Origin' header is present on the requested resource. Origin 'https:///xxxxxxxxxxxxxxxx' is therefore not allowed access.


Add in example to the readme about using an external dependency

I was using an external dependency in one of my builds and it was clear exactly how to add it. I figured it'd be helpful to have a small example in the readme.

Thanks @ckipp01 !


HTTPS (443) not enabled

need to enable HTTPS (443) on the app

Generally for container based apps, the TLS termination is done with a different container. What is your exact need for having this capability on the app itself?
Have you considered for example Traefik? (https://docs.traefik.io/)

i will post the edits on nginx.conf which includes HTTP and HTTPS  and redirection from HTTP to HTTPS for anyone needs it.

user  www-data;
worker_processes auto;
events {
worker_connections  1024;
}
http {
include       mime.types;
default_type  application/octet-stream;
sendfile        on;
keepalive_timeout 2;
client_max_body_size 100m;

server {
    listen 80;
    server_name helpdesk.example.com;
return 301 https://helpdesk.example.com;

    add_header X-Content-Type-Options nosniff always;
    add_header X-XSS-Protection "1; mode=block" always;

    root /data/upload;
    index index.html index.htm index.php;

    access_log /var/log/nginx/osticket-access.log;
    error_log  /var/log/nginx/osticket-error.log error;

    charset utf-8;

    set $path_info "";

    location ~ /include {
        deny all;
        return 403;
    }

    if ($request_uri ~ "^/api(/[^\?]+)") {
        set $path_info $1;
    }

    location /api {
        try_files $uri $uri/ /api/http.php?$query_string;
    }

    if ($request_uri ~ "^/scp/.*\.php(/[^\?]+)") {
        set $path_info $1;
    }

    location ~ ^/scp/ajax.php/.*$ {
        try_files $uri $uri/ /scp/ajax.php?$query_string;
    }

    if ($request_uri ~ "^/ajax.php(/[^\?]+)") {
        set $path_info $1;
    }

    location ~ ^/ajax.php/.*$ {
        try_files $uri $uri/ /ajax.php?$query_string;
    }

    location / {
         try_files $uri $uri/ index.php;
    }

    location = /favicon.ico { log_not_found off; access_log off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    # Deny .htaccess file access
    location ~ /\.ht {
        deny all;
    }

    location ~ \.php$ {
         try_files      $uri = 404;
         fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
         include        fastcgi_params;
         fastcgi_index  index.php;
         fastcgi_param  LARA_ENV local; # Environment variable for Laravel
         fastcgi_param  PATH_INFO   $path_info;
         fastcgi_pass   <IP_ADDRESS>:9000;
    }
}
server {

listen   443;
server_name helpdesk.example.com;
ssl    on;
ssl_certificate    /data/upload/include/plugins/sum.crt;
ssl_certificate_key    /data/upload/include/plugins/sum.key;

root /data/upload;
index index.html index.htm index.php;

access_log /var/log/nginx/localhost_ssl.access.log;
error_log /var/log/nginx/localhost_ssl.error.log error;
    add_header X-Content-Type-Options nosniff always;
    add_header X-XSS-Protection "1; mode=block" always;

    charset utf-8;

    set $path_info "";

    location ~ /include {
        deny all;
        return 403;
    }

    if ($request_uri ~ "^/api(/[^\?]+)") {
        set $path_info $1;
    }

    location /api {
        try_files $uri $uri/ /api/http.php?$query_string;
    }

    if ($request_uri ~ "^/scp/.*\.php(/[^\?]+)") {
        set $path_info $1;
    }

    location ~ ^/scp/ajax.php/.*$ {
        try_files $uri $uri/ /scp/ajax.php?$query_string;
    }

    if ($request_uri ~ "^/ajax.php(/[^\?]+)") {
        set $path_info $1;
    }

    location ~ ^/ajax.php/.*$ {
        try_files $uri $uri/ /ajax.php?$query_string;
    }

    location / {
         try_files $uri $uri/ index.php;
    }

    location = /favicon.ico { log_not_found off; access_log off; }
    location = /robots.txt  { access_log off; log_not_found off; }

    # Deny .htaccess file access
    location ~ /\.ht {
        deny all;
    }

    location ~ \.php$ {
         try_files      $uri = 404;
         fastcgi_param  SCRIPT_FILENAME  $document_root$fastcgi_script_name;
         include        fastcgi_params;
         fastcgi_index  index.php;
         fastcgi_param  LARA_ENV local; # Environment variable for Laravel
         fastcgi_param  PATH_INFO   $path_info;
         fastcgi_pass   <IP_ADDRESS>:9000;
    }

}
}
daemon off;

Thanks for the contribution. I'm sure other will find the config useful.
However, one of the reasons that TLS is often left out of base images is that this can be configured in many different ways depending on clients you need to support etc. For example above, there is no OSCP stapling (ssl_stapling), no preferred protocol (ssl_protocols) & cipher (ssl_ciphers) lists, no Diffie-Heleman parameters (ssl_dhparam).
You can open yourself up to various attacks if your TLS configuration is not secure, ideally this should be tested with a tool - I find SSL Labs to be very useful.
As such, containers tend to be reverse proxied behind other containers designed for TLS termination. These can also offer useful extra functionality around monitoring, dynamic service switching etc.
As such, I'm not intending on adding TLS config to the nginx config as we already discussed this in #10. If there is a consensus that this would be useful then this could change in the future.


upd(nala-deb): 0.8.1 -> 0.8.2

Use libpython3-dev which after looking in end rely's on latest libpython version @volitank

Use libpython3-dev which after looking in end rely's on latest libpython version @volitank

Use libpython3-dev which after looking in end rely's on latest libpython version @volitank but it may be to much extra stuff though

Won't work on libpython3.10 I'm pretty sure. Either way doesn't really solve anything as on newer systems it should be installing Nala not Nala legacy.
I think the proper fix to this is flipping my if statement to check for which systems should run legacy instead of the way it is now

Well if your doing the if statement way, you could create a pacscript with a if statement on pacdeps, to install either nala-legacy-deb, or nala-new-deb and pacscript would be named nala-deb so a smooth transition if nala-deb ups it's python version for example then the user updates and it switches to nala-legacy-deb for example.


Feature request: Use the default vertex/fragment Shader on Shader Programs

I think it's quite common to want to use a custom fragment shader, but not needing any change in the vertex shader. For that use case, it would be nice if we could use the default vertex shader in and only add our fragment shader.
Right now this is not possible because the default shaders are defined in the version-specific headers and are not part of the "public API".

Would having the shader code available to your program resolve this?
Another option might be to expose the shader object handles so you can link them to your own shader programs.  The first option might be less backend-specific.

Also, since the code is liberally licensed, you can take and use that vertex shader code any way you want to.  It will cost your code space/maintenance.

Making the IDs of the compiled shaders available would be great! Much better than my original solution (making the code available and re-compiling the same shaders again).
The current alternative is to ship a copy of the bundled shaders again, which also implies reimplementing the logic to chose the right shader version depending on the OpenGL version. I think your solution would be a big improvement :D


Is mSIGNA still active?

It have been months since the last commit and was wondering is mSIGNA still good to use or should I move to using something else?

mSIGNA is still being supported.

Is this still the case? Is any future development planned?

Looks pretty DEAD to me.
Last commit Dec 2017.
Also the domain ciphrex.com is dead.


Add support for installing pipelines-agent binaries, but default to installing vsts-agent binaries

binaries come in vsts-agent and pipelines-agent flavors. Former has a dependency on Node6 while latter supports Node10 or later. For users of this module who want to switch to modern tasks that can run on Node10 or newer, they can set AgentType parameter to pipelines-agent and it will pick the matching resource in Find-VstsAgent.
Resolves #42

@tristanbarcelon - available on the PSGallery as 2.0.20-develop


homework_1.md

What changes are you trying to make? (e.g. Adding or removing code, refactoring existing code, adding reports)
What did you learn from the changes you have made?
Was there another approach you were thinking about making? If so, what approach(es) were you thinking of?
Were there any challenges? If so, what issue(s) did you face? How did you overcome it?
How were these changes tested?
A reference to a related issue in your repository (if applicable)
Checklist

[ ] I can confirm that my changes are working as intended

Good job, the relationships are good, and the choice of tables are good.


Update Xamarin.Android.Google.BillingClient bindings to v5.0.0

Google Play Billing Library version 5.0.0 has been released.
An update to the bindings would be much appreciated! :)

seconded

I managed to integrate Google.Play.Billing 5 into the xamarin.

yes please

@vladik1337228, can you please share your solution?

It's theeeere, thanks a lot!


Migrate alienc0der's v0.0.7 changes

This PR contains all the changes made by alienc0der between the release of v0.0.6 and v0.1.0.

@alienc0der the pending transactions list is not populated with pending transactions when the autoreceive is disabled.

@alienc0der the plasma and sync icons use different colors of green and the animating sync icon is distracting.


Suggestion: Have an explicit initial event?

While typing I was confused why and in what cases the event would be undefined. Only when I was rewriting I realized that the initial event is undefined, which is not that explicit at it's intent.
Libraries often have their initial event, like xstate has "xstate.init", redux has "@@INIT" afaik, storeon also has "@init". It's better to have event: { type: "FOO" } | { type: $$initial } rather than have event?: { type: "FOO" }. So I'd suggest there should be an explicit initial event, perhaps a symbol would be good.

Agreed. I will add it as an item on the devanshj:rewrite branch. We can than decide who will tackle it (I could probably give it a shot)


Add a section to the guide that introduces "how to read the guide"

short and poignant, but only introduces the SAFETAG framework, not the guide – would be great to add what to expect and not expect from the guide

Added "How to read this guide" to overview. Need to create one for each type of document.

There is also a guide version: https://github.com/OpenInternet/SAFETAG/blob/master/en/document_matter/how_to_read_this_guide.guide.md


How do i get credentials?

Hello,
I dont know how to get credentials to supply to the program. Can you please explain?

Did you read the readme?

First, determine the type of authentication you want to use for enumeration between a user account, service account, or unauthenticated. If you are using a service account, provide the file path to the private key via the -f/--service-account-credential-file-path argument. If you are using a user account, don't provide an authentication argument. You will then be prompted to enter the access token of your user account for accessing the GCP APIs. If you want to scan completely unauthenticated, pass the -u/--unauthenticated argument to hide authentication prompts.

I'm not a contributor, but according to the code, if you don't provide a key file or access unauthenticated, a browser window will open and you will be prompted to authentication with a Google account via OAuth.


Handle hex binary data

As encountered in a Glyphs 2.5 file.

did you check this?
https://github.com/googlei18n/glyphsLib/issues/119

Nope.

Basically we need to figure out from which Glyphs.app version the serialisation of the binary data changed from one format to the other and decode accordingly

Can you check how many file even have binary data? I suspect it to be none or only very few.

One turned up the other day, it may have come from on of our FontLab scripts.

The change was in the 2.5 branch around build 995, but the build number is not really helping here as there where similar numbers in the 2.4 branch ;(. I don’t have a list of all 2.5 versions and their numbers.

Hm. Merge PR as is then? Maybe not worth the effort to list all version numbers that may be affected?

maybe we should only support binary data encoded as hexadecimal string, and remove support for base64 encoded strings, now that Glyphs.app only writes it as hexadecimal.

I just tried to access the binary data we found in one file, hex format. Neither 939 nor 1103 could access the data, both just ignore it. I also couldn't make any binary data from the macro window -- what would produce binary?
So... Let's drop base64?

Let's drop base64?

yeah. We never released a glyphsLib version which included support for it anyway.

I'm gonna remove base64 support


⚠ SkipTheCommericals has degraded performance

In 10c585e, SkipTheCommericals ($STC) experienced degraded performance:

HTTP code: 200
Response time: 2958 ms

Resolved: SkipTheCommericals performance has improved in 1c7b795.


loadImageStack() doesn't exist

The function loadImageStack() in the example doesn't exist.

Thanks. I changed it to the proper function reference loadImageStackFromFile().


feature: Informer module

Fixes #346

The module is basically completed, but I'm converting the PR to draft until the integration of the informer is completed for whole kubernetes-module.

@rdesgroppes would you be interested in providing code review for this PR?


feat: convert to torch dtype for finfo

Before submitting

[ ] Was this discussed/approved via a Github issue? (no need for typos and docs improvements)
[ ] Did you read the contributor guideline, Pull Request section?
[ ] Did you make sure to update the docs?
[ ] Did you write any new necessary tests?

What does this PR do?
Fixes #457. The following code works as expected:
import torch, thunder

def fn(x):
    return torch.finfo(x.dtype).min

a = torch.randn(5, 5)

torch_output = fn(a)
print(torch_output) # -3.4028234663852886e+38

jfn = thunder.jit(fn)

thunder_output = jfn(a)
print(thunder_output) # -3.4028234663852886e+38

torch.testing.assert_close(torch_output, thunder_output)

Although, I am not sure how I can add a test case within tests for this. Any advice would be appreciated!
PR review
Anyone in the community is free to review the PR once the tests have passed.
If we didn't discuss your PR in Github issues there's a high chance it will not be merged.
Did you have fun?
Make sure you had fun coding 🙃

Hey Tom! Thanks for the detailed comments and feedback. I got to learn how lookaside works! 🚀


CAMEL-12665 - Apache Pulsar integration via Component

Contains new camel-pulsar component and example usage camel-example-spring-pulsar.
Looking forward to feedback on design/style code quality.

@davsclaus please have a look too :-)

What's the status of this one? Once we have this finished, we need a new PR for master

I'm going to spend some time doing the last changes today (against this branch), then open a new PR against master when this version is finished.

This is now ready for another review.

btw we have a camel-testcontainers and camel-testcontainers-spring, so you can use them instead of using the explicit dependency. There are examples, like camel-nats or camel-consul

But we can work on that later, maybe. I'll merge this this week. Please try to port the component on master: this will require some changes in import, because we moved a lot of stuff.

Here is the PR for the branch against master - https://github.com/apache/camel/pull/2866

Thanks

Pushed a load of checkstyle changes

We need to align the component code and example code in 2.x to what we have in master now.

We need to align the component code and example code in 2.x to what we have in master now.
Ok I can revert the checkstyle changes to make this closer to the version in master - obviously the changes to the package names due to the master changes will have to stay

Yes, but something is not like camel 3, for example the META-INF stuff for the component is still to be explicitly added when on 2.x, while on 3.x is just an annotation that will do the trick... So it's not an easy operation to backport from master to 2.x

Is the persistence and non-persistence part of Apache Pulsar topic? eg it looks like you pass on this to pulsar and it knows about it.
I am asking as the endpoint uri syntax is a bit wrong and we need to tidy this up a bit. For example we may want to have an enum with those 2 values so Camel knows what you can specify which also allows tooling to know that.
And do you need that double slash in the topic name?
eg can this
persistent://public/default/camel-concurrent-producers-topic

become
persistent:public/default/camel-concurrent-producers-topic

Is the persistence and non-persistence part of Apache Pulsar topic? eg it looks like you pass on this to pulsar and it knows about it.
I am asking as the endpoint uri syntax is a bit wrong and we need to tidy this up a bit. For example we may want to have an enum with those 2 values so Camel knows what you can specify which also allows tooling to know that.
And do you need that double slash in the topic name?
eg can this
persistent://public/default/camel-concurrent-producers-topic

become
persistent:public/default/camel-concurrent-producers-topic

We can improve it for sure. On master I had to change it to persistence in uri:syntax because it breaks the adoc rendering

Also we need to make the unit tests run when there is no docker environment, so you dont get failures.

Is the persistence and non-persistence part of Apache Pulsar topic? eg it looks like you pass on this to pulsar and it knows about it.
I am asking as the endpoint uri syntax is a bit wrong and we need to tidy this up a bit. For example we may want to have an enum with those 2 values so Camel knows what you can specify which also allows tooling to know that.
And do you need that double slash in the topic name?
eg can this
persistent://public/default/camel-concurrent-producers-topic

become
persistent:public/default/camel-concurrent-producers-topic

We can improve it for sure. On master I had to change it to persistence in uri:syntax because it breaks the adoc rendering

In Pulsar a topic is either persistent or non-persistent. It must include the double forward slashes after the colon when passed to pulsar i.e persistent://public/default/camel-concurrent-producers-topic

what's the status of this one?

We need to align the component code and example code in 2.x to what we have in master now.

Have aligned the changes done in master.

I'm working on the merge. @foamdino and @rshermanTHG can you please improve the documentation under src/main/docs on master?

The build is failing. Can you please check on 2.x?
[ERROR] Failed to execute goal org.apache.camel:camel-package-maven-plugin:2.24.0-SNAPSHOT:prepare-spring-boot-auto-configuration (validate) on project camel-pulsar: Execution validate of goal org.apache.camel:camel-package-maven-plugin:2.24.0-SNAPSHOT:prepare-spring-boot-auto-configuration failed: String index out of range: -1 -> [Help 1]
org.apache.maven.lifecycle.LifecycleExecutionException: Failed to execute goal org.apache.camel:camel-package-maven-plugin:2.24.0-SNAPSHOT:prepare-spring-boot-auto-configuration (validate) on project camel-pulsar: Execution validate of goal org.apache.camel:camel-package-maven-plugin:2.24.0-SNAPSHOT:prepare-spring-boot-auto-configuration failed: String index out of range: -1
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:215)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:956)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
    at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
Caused by: org.apache.maven.plugin.PluginExecutionException: Execution validate of goal org.apache.camel:camel-package-maven-plugin:2.24.0-SNAPSHOT:prepare-spring-boot-auto-configuration failed: String index out of range: -1
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:148)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:956)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
    at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)
Caused by: java.lang.StringIndexOutOfBoundsException: String index out of range: -1
    at java.lang.String.substring (String.java:1967)
    at org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo.executeComponent (SpringBootAutoConfigurationMojo.java:592)
    at org.apache.camel.maven.packaging.SpringBootAutoConfigurationMojo.execute (SpringBootAutoConfigurationMojo.java:196)
    at org.apache.maven.plugin.DefaultBuildPluginManager.executeMojo (DefaultBuildPluginManager.java:137)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:210)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:156)
    at org.apache.maven.lifecycle.internal.MojoExecutor.execute (MojoExecutor.java:148)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:117)
    at org.apache.maven.lifecycle.internal.LifecycleModuleBuilder.buildProject (LifecycleModuleBuilder.java:81)
    at org.apache.maven.lifecycle.internal.builder.singlethreaded.SingleThreadedBuilder.build (SingleThreadedBuilder.java:56)
    at org.apache.maven.lifecycle.internal.LifecycleStarter.execute (LifecycleStarter.java:128)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:305)
    at org.apache.maven.DefaultMaven.doExecute (DefaultMaven.java:192)
    at org.apache.maven.DefaultMaven.execute (DefaultMaven.java:105)
    at org.apache.maven.cli.MavenCli.execute (MavenCli.java:956)
    at org.apache.maven.cli.MavenCli.doMain (MavenCli.java:288)
    at org.apache.maven.cli.MavenCli.main (MavenCli.java:192)
    at sun.reflect.NativeMethodAccessorImpl.invoke0 (Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke (NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke (DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke (Method.java:498)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launchEnhanced (Launcher.java:289)
    at org.codehaus.plexus.classworlds.launcher.Launcher.launch (Launcher.java:229)
    at org.codehaus.plexus.classworlds.launcher.Launcher.mainWithExitCode (Launcher.java:415)
    at org.codehaus.plexus.classworlds.launcher.Launcher.main (Launcher.java:356)

@davsclaus can you take a look?

@oscerd I think I fixed something similar on master branch in that SB generator.

okay building 2.x now

Okay you need to be able to build the component without having docker running, so that should be fixed too.

Okay so the src/main/resources/META-INF/services/org/apache/camel/component/pulsar file has log4j settings, instead it should be
class=org.apache.camel.component.pulsar.PulsarComponent

@oscerd you can fix it as above ^^^

Thank you

I'll backport the Karaf feature and tests for Karaf and SB too

Backported. Thanks. Please @rshermanTHG and @foamdino take a look at the documentation under src/main/docs and improve it if you have time.


How to get the real client ip

Steps to reproduce the problem:
I use the redsocks as a transparent proxy and set the mitmproxy as a upstream-proxy.
In script, I use cli_ip = flow.client_conn.address,but the cli_ip is the redsocks's ip not the client ip.
I want to know how can I get the real client ip?
System information
Mitmproxy version: 2.0.2 (release version)
Ubuntu 3.19.0-25.26~14.04.1-generic 3.19.8-ckt2

I think you are looking for the Forwarded or one of the other headers that redsocks adds:
https://github.com/darkk/redsocks/blob/master/http-connect.c#L267-L282
mitmproxy only sees your redsocks IP - there is no other way to identify the actual client, unless redsocks adds one of these headers to preserve this information.


[wish] com.google.fonts/check/varfont/empty_gvar

I’d like to request a com.google.fonts/check/varfont/empty_gvar check. Some toolkit (I think fontmake) may build a single-master VF that has an empty gvar table.
Example font: NotoSansLycian-VF.ttf.zip from here
If the font has a glyf table and has a completely empty gvar table like this:
  <gvar>
    <version value="1"/>
    <reserved value="0"/>
  </gvar>

we should report this as a FAIL. This is a problem that does occur in real life.

It would be good if we could confirm which specific toolchain was used to build this example font.

What is the problem of an empty gvar table? Is it a matter of it making the filesize unnecessarily larger?
Or is it that the behavior of such a single-master VF different than an actually static font for some program or font renderer?
Does it cause the font to be broken in any manner, or is it just a minor detail?

In principle, almost any table can be empty. However, I can imagine scenarios where an engine checks for the presence of gvar and then e.g. switches to a slower line layout mode (without metrics caching). I had an implementation that made a simple gvar existence check and based some logic on it. I've now added more checks.
We still don't have a complete picture of OTVar implementations, but history tells me that software developers put various kinds of heuristics to probe font functionality. I don't think we should promote existence of font data creates ambiguity.

I understand your concern, but I'm still willing to have stronger justifications for the checks added to Font Bakery.
How would you propose wording the rationale metadata for this check? I tried to imagine how to write it but, inside my head, my inner voice still sounded too vague reading it to me.

I agree there is no good rationale for this, and in fact I can think of good reasons (color fonts) where something is a variable font but has no glyph variations. Adam, if you really want this, please feel to comment and we can reopen.


When in HTML file has Javascript variable same name as bootstrap keywords

In HTML there is a block

Sorry, not sure what you mean. Is something replaced that shouldn't or the other way around? Maybe you can add the problematic example file.

Example in HTML file has

Has what? Are you trolling?

I attach again.
Let's see if you understand what I meant (See the red block)

I see the problem, but there is not a lot I can do about this. See the following example, where it is desirable to replace content in HTML files:
<style>
.span-2 { color: red }
</style>

In this case you would want to replace it woth col-md-2. If you don't want to replace contents of HTML files, separate them from your CSS files and run the script in the CSS directory. This way the HTML files are kept. Thanks for clarifying the issue!


Commands like importprivkey and scanning for stealth transactions cause the wallet to hang until completion

Certain wallet actions like importing a private key or scanning the blockchain for stealth address transactions causes the wallet to become unresponsive whilst the scan takes place. To a user, it would seem like the wallet has crashed when in fact it's still just scanning the blockchain. These functions should be moved to a separate thread from the GUI and include a progress bar so it's obvious to the user what is happening.
Additionally, neither command adds the new address(s) to the address book until restart, so it can look as if the actions have failed when in fact their results are just hidden until restart.

Stealth transactions are likely to be deprecated in the next major wallet update.


shared-functions: Add BOSH_DEPLOY_ARGS to uptimer_config

What is this change about?
Describe the change and why it's needed.
This change makes the bosh_deploy function consistent when the DEPLOY_WITH_UPTIME_MEASUREMENTS  is used. Previously if you passed BOSH_DEPLOY_ARGS in your task configuration without using DEPLOY_WITH_UPTIME_MEASUREMENTS, bosh deploy would respect your BOSH_DEPLOY_ARGS. If DEPLOY_WITH_UPTIME_MEASUREMENTS is set to true, then BOSH_DEPLOY_ARGS would be silently ignored.
Please provide contextual information.
N/A, we found this issue in our internal concourse pipeline and thought that would be nice to make things consistent.
Please check all that apply for this PR:

[ ] introduces a new task
[X] changes an existing task
[ ] changes the Dockerfile
[ ] introduces a breaking change (other users will need to make manual changes when this is released)

Did you update the README as appropriate for this change?

[ ] YES
[x] N/A

How should this change be described in release notes?
Consistently pass BOSH_DEPLOY_ARGS to bosh_deploy() shared function.
What is the level of urgency for publishing this change?

[ ] Urgent - unblocks current or future work
[x] Slightly Less than Urgent

Tag your pair, your PM, and/or team!
It's helpful to tag a few other folks on your team or your team alias in case we need to follow up later.

Hi @diogomatsubara,
This looks like this change might not work if multiple args are specified. The BOSH_DEPLOY_ARGS parameter is handled differently by the bosh-deploy task in the case that uptimer is not being used. Have you tested this scenario? It looks like it might be possible to use the jq --args flag to separate out each flag when appending them to the command_args array in the uptimer config file, but we haven't fully explored this option yet. The other problem is that we aren't using this parameter in our own pipelines, so it's hard for us to have confidence in a change without a lot of manual testing.
Let us know how you want to proceed.
Regards,
Dave and @vitreuz

Hi @davewalter, thanks for the quick reply and the initial review!
IIUC, in case the uptimer tool is not being used, the $BOSH_DEPLOY_ARGS will expand (via ${@}) here:  https://github.com/cloudfoundry/cf-deployment-concourse-tasks/blob/master/shared-functions#L249 as individual arguments to the deploy action, while when the uptimer tools is being used, then all the extra args passed by in BOSH_DEPLOY_ARGS will be added to the command_args in the uptimer config as a single argument.
In our pipeline, where we use the uptimer tool, this patch correctly passed the arguments to bosh deploy as we expected but you're right that we treat that as single argument rather than as individual arguments passed to bosh deploy. So, to clarify and get this in shape to be merged, you want this to be changed so that individual arguments are treated as individual arguments for BOSH_DEPLOY_ARGS or would be ok to change ${@} expansion to use ${BOSH_DEPLOY_ARGS} instead?
I'm happy to test this and make sure my changes won't break existing behaviour. What would you like to see in terms of testing for this?


[Feature] To add Order form under forms section.

Description
Used to collect order details from customers.
Screenshots
No response
Checklist

[X] I have checked the existing issues.
[X] I follow Contributing Guidelines of this project.
[X] I am a GSSOC'24 contributor.
[ ] I am a IWOC'24 contributor.
[ ] I am a JWOC'24 contributor.
[ ] I am a SWOC'24 contributor.

Code of Conduct

[X] I agree to follow this project's "Code of Conduct".

@Rakesh9100 .. sir i want to work on this issue can you please assign this task to me i will solve it as soon as possible from me

You can create your own new issue if you want to contribute @Aradhyajha

Ok sir


Collect method inputs for each return value

We also want to collect method inputs that have lead to each return value.

I had a go at this issue. Turns out Method.arguments() is not sufficient. If the argument is modified in the body of the method, the modified argument shall be returned. However, we desire the original argument.


Demo 2477 add jq package

 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.


JEI but for pickaxe game

okay so this may be an insane feature request but
would it be possible to make JEI but for pickaxe game items?
like it shows you all the pickaxe game items and how to get them?

Not possible. Already tried

Okay thanks!


Enable-WriteCore-feature-for-mobilenetwork

Contributing to the Azure SDK
Please see our CONTRIBUTING.md if you are not familiar with contributing to this repository or have questions.
For specific information about pull request etiquette and best practices, see this section.

API change check
APIView has identified API level changes in this PR and created following API reviews.
Azure.ResourceManager.MobileNetwork


added content on firewall

Saw issue #57
Added content to firewall under the servers and changed the readme in servers to link to firewall
Hope this helps others.

@all-contributors please add @listout  for doc


StopAll() removes disabled from non-loading buttons

StopAll should only stop buttons that are loading.
Otherwise, buttons disabled for other reasons become enabled.

Good catch! This should be fixed now in v1.0.5.