mouse right click ACTION_UP is lost

[x] I have read the FAQ.
[x] I have searched in existing issues.

Existing issues:
#2711, similar to my experience with right-click
#3070, related, if this is implemented right, the hoover events can be delivered
Environment

OS: arch x86_64
scrcpy version: 1.24, rebuild server with extra event logging
installation method: pacman/yay
device model, os:
google pixel 6 pro, grapheneOS (android13)
asus nexus7, android 6
samsung SM-T510, android 11

Primary work on pixel, other devices used to make sure problem is not os/device specific
Describe the bug
scrcpy --max-fps=30  --forward-all-clicks --verbosity=verbose --display=2

When using scrcpy with aFreeRDP, the right and middle mouse button don't work as expected.
I don't use the hid (AOA). In case of pixel, mouse pointer appears on the primary display. In case of samsung tab, it shows up on the extra display. I have not found a way to control it.
Investigation
Initially I assumed that the problem is in the aFreeRDP and started by dumping all motion events delivered to dispatchTouchEvent and dispatchGenericMotionEvent.
The first impression: ACTION_UP is missing for right and middle click. The event is not delivered. But perhaps it is the app itself.
So, I took a physical mouse and captured events. Than captured events when delivered from scrcpy.
Right click events from physical mouse as seen by the application, the attributes which are always the same are in const section.
dispatchTouchEvent:         ACTION_DOWN,           actionButton=0, id[0]=0, x[0]=0.0, y[0]=2257.9397,                buttonState=BUTTON_SECONDARY, eventTime=11857929, ventId=507666466 }
dispatchGenericMotionEvent: ACTION_BUTTON_PRESS,   actionButton=BUTTON_SECONDARY, id[0]=0, x[0]=0.0, y[0]=2257.9397, buttonState=BUTTON_SECONDARY, eventTime=11857929, ventId=608438892 }
dispatchGenericMotionEvent: ACTION_BUTTON_RELEASE, actionButton=BUTTON_SECONDARY, id[0]=0, x[0]=0.0, y[0]=2257.9397, buttonState=0,                eventTime=11858273, ventId=612919901 }
dispatchTouchEvent:         ACTION_UP,             actionButton=0, id[0]=0, x[0]=0.0, y[0]=2257.9397,                buttonState=0,                eventTime=11858273, ventId=76737027 }
dispatchGenericMotionEvent: ACTION_HOVER_MOVE,     actionButton=0, id[0]=0, x[0]=0.0, y[0]=2257.9397,                buttonState=0,                eventTime=11858273, ventId=655777164 }

const:
toolType[0]=TOOL_TYPE_MOUSE,
classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0,
downTime=11857929, deviceId=6, source=0x2002, displayId=0,

Right click events when delivered from scrcpy, the attributes which are always the same are in const section.
In addition log contains scrcpy events just before injection point (Controller.java, injectTouch)
scrcpy  injectEvent: ACTION_DOWN, id[0]=0, x[0]=710.0, y[0]=1668.0, buttonState=BUTTON_SECONDARY, eventTime=14278106, deviceId=0,  source=0x2002, displayId=0, eventId=-1002372252 }
FreeRDP dispatchTou: ACTION_DOWN, id[0]=0, x[0]=710.0, y[0]=1668.0, buttonState=BUTTON_SECONDARY, eventTime=14278106, deviceId=-1, source=0x2002, displayId=0, eventId=-1002372252 }
scrcpy  injectEvent: ACTION_UP,   id[0]=0, x[0]=710.0, y[0]=1668.0, buttonState=0,                eventTime=14278149, deviceId=0,  source=0x1002, displayId=0, eventId=-687213207 }

const:
toolType[0]=TOOL_TYPE_FINGER,
actionButton=0,
classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0,
downTime=14278106,

The highlights are:

missing touch ACTION_UP in the aFreeRDP, but can see the injected touch event in server
missing motion events (generic motion events) which is probably not the real problem, but would be nice for consistency. Not sure about the performance, the hoover is send on each move.
inconsistent deviceId, probably not a problem
toolType is FINGER instead of MOUSE, again not a deal breaker
wrong source (FINGER instead of MOUSE) in ACTION_UP event injected by the scrcpy

When I hard-code source to 0x2002 in injectTouch, the ACTION_UP is delivered to the application.
But this is just to prove why android is swallowing the event.

Thank you for your detailed bug report.

wrong source (FINGER instead of MOUSE) in ACTION_UP event injected by the scrcpy

When I hard-code source to 0x2002 in injectTouch, the ACTION_UP is delivered to the application.

Then the problem is here: https://github.com/Genymobile/scrcpy/blob/48bb6f2ea858a02e05900d9828c0089166de17df/server/src/main/java/com/genymobile/scrcpy/Controller.java#L212-L214 (introduced by adc547fa6e8e6167cd9633a97d98de6665b8c23a).
The input source must be a touchscreen unless a non-primary button is pressed (see f70359f14fb13f277c65b96f43ec83aba4722457, unfortunately, poor commit messages with a typo and no details).
But your report adds an additional constraint: an action_up must be sent with the same source as the matching action_down (which makes sense).
However, the fix is not trivial. For example consider the following sequence of events:

action_down, buttons=left (left click) → touch screen
action_down, buttons=left+right (right click) → mouse
action_up, buttons=right (release left click) → mouse (issue: the source for releasing left click is not the same)
action_up, buttons=0 (release right click) → touch screen (issue: the source for releasing right click is not the same)

I will think about it. If you have any suggestion, don't hesitate :)

The input source must be a touchscreen unless a non-primary button is pressed (see https://github.com/Genymobile/scrcpy/commit/f70359f14fb13f277c65b96f43ec83aba4722457, unfortunately, poor commit messages with a typo and no details).

This looks like workaround for devices which have problem with a mouse in general.

However, the fix is not trivial.

I have checked events for a real finger touch with 2 fingers and compared to 2 button mouse (coincidentally exactly what your example is). I believe simulating touches with a mouse is compatible only for a single button/finger. It is broken when more keys/fingers are involved. For multi finger, events contain multiple touch points. For the mouse, events always contain single touch with multiple keys.
How about a verbatim mouse mode, where events injected by scrcpy are as close as possible to what can be observed with physical mouse?
This of course should be an option and not default, so for existing users/devices/application nothing changes.
For my use case, the zoom makes no sense. "pitch-to-zoom" emulation should be an option or simply disabled in verbatim mode.
How about I hack something together and do a PR for review?

This looks like workaround for devices which have problem with a mouse in general.

Maybe, but I would like not to break them again. It might also impact only some apps (I don't remember).

I believe simulating touches with a mouse is compatible only for a single button/finger. It is broken when more keys/fingers are involved.

(I would like to keep a common behavior between multi-touch and single click.)

How about a verbatim mouse mode, where events injected by scrcpy are as close as possible to what can be observed with physical mouse?

Here are the possible alternatives I considered since yesterday.

always use SOURCE_MOUSE: I don't like this solution, because this will break on some devices/apps, and semantically, we want to simulate touchscreen via the scrcpy window (even if we locally use a mouse)
split events into two sources: primary button → SOURCE_TOUCHSCREEN, other buttons → SOURCE_MOUSE, with correct handling of ACTION_DOWN/ACTION_UP; this adds complexity but would work for the example in my previous comment. However, on a click-and-move event with both left click and right click pressed, this would generate 2 events, one for each source, so it is inherently broken :x:
add an option to force ACTION_MOUSE (the verbatim mode you are suggesting): but when disabled, how to handle middle and right click correctly (when --forward-all-clicks is set)?
force ACTION_MOUSE when --forward-all-clicks is enabled: it would work correctly for your use case and the example above, the minor drawback is that enabling --forward-all-clicks would change the behavior of left click alone (using a SOURCE_MOUSE rather than a SOURCE_TOUCHSCREEN).

I think my current preference is 4. What do you think?

Option 4 makes sense. I was trying to be conservative and avoid changes in the way things work today.
However, I would like to go one step further and also add the ACTION_BUTTON_PRESS, ACTION_BUTTON_RELEASE and ACTION_HOOVER_MOVE.
 But for the hoover, I have seen code which disables the motion event injection without button pressed:
https://github.com/Genymobile/scrcpy/blob/72ba913324d65cded8672dca7a57415cb82da095/app/src/mouse_inject.c#L61-L64
Any particular reason?

However, I would like to go one step further and also add the ACTION_BUTTON_PRESS, ACTION_BUTTON_RELEASE

I don't know when it is necessary (when ACTION_UP/ACTION_DOWN is different), and we probably don't want to generate both. If there is a good reason, why not.

But for the hoover, I have seen code which disables the motion event injection without button pressed:
Any particular reason?

It represents maybe 99% of event generation (it floods the device), and hover alone typically does nothing. Also, I don't necessarily want to inject events on the device just because my mouse is over the scrcpy window on the computer.

This is the capture with a physical mouse for: left-down, right-down, left-up, right-up
There is no motion, the coordinates are constant.
dispatchGenericMotionEvent: MotionEvent { action=ACTION_HOVER_MOVE,     actionButton=0,                id[0]=0, x[0]=308.3386, y[0]=2135.5417, toolType[0]=TOOL_TYPE_MOUSE, buttonState=0,                               classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=39824687, downTime=0,        deviceId=5, source=0x2002, displayId=0, eventId=832795045 }
dispatchTouchEvent:         MotionEvent { action=ACTION_DOWN,           actionButton=0,                id[0]=0, x[0]=308.3386, y[0]=2135.5417, toolType[0]=TOOL_TYPE_MOUSE, buttonState=BUTTON_PRIMARY,                  classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=39826351, downTime=39826351, deviceId=5, source=0x2002, displayId=0, eventId=302901624 }
dispatchGenericMotionEvent: MotionEvent { action=ACTION_BUTTON_PRESS,   actionButton=BUTTON_PRIMARY,   id[0]=0, x[0]=308.3386, y[0]=2135.5417, toolType[0]=TOOL_TYPE_MOUSE, buttonState=BUTTON_PRIMARY,                  classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=39826351, downTime=39826351, deviceId=5, source=0x2002, displayId=0, eventId=926472458 }
dispatchTouchEvent:         MotionEvent { action=ACTION_MOVE,           actionButton=0,                id[0]=0, x[0]=308.3386, y[0]=2135.5417, toolType[0]=TOOL_TYPE_MOUSE, buttonState=BUTTON_PRIMARY|BUTTON_SECONDARY, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=39826647, downTime=39826351, deviceId=5, source=0x2002, displayId=0, eventId=212267199 }
dispatchGenericMotionEvent: MotionEvent { action=ACTION_BUTTON_PRESS,   actionButton=BUTTON_SECONDARY, id[0]=0, x[0]=308.3386, y[0]=2135.5417, toolType[0]=TOOL_TYPE_MOUSE, buttonState=BUTTON_PRIMARY|BUTTON_SECONDARY, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=39826647, downTime=39826351, deviceId=5, source=0x2002, displayId=0, eventId=685127339 }
dispatchGenericMotionEvent: MotionEvent { action=ACTION_BUTTON_RELEASE, actionButton=BUTTON_PRIMARY,   id[0]=0, x[0]=308.3386, y[0]=2135.5417, toolType[0]=TOOL_TYPE_MOUSE, buttonState=BUTTON_SECONDARY,                classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=39826887, downTime=39826351, deviceId=5, source=0x2002, displayId=0, eventId=274112588 }
dispatchTouchEvent:         MotionEvent { action=ACTION_MOVE,           actionButton=0,                id[0]=0, x[0]=308.3386, y[0]=2135.5417, toolType[0]=TOOL_TYPE_MOUSE, buttonState=BUTTON_SECONDARY,                classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=39826887, downTime=39826351, deviceId=5, source=0x2002, displayId=0, eventId=466066843 }
dispatchGenericMotionEvent: MotionEvent { action=ACTION_BUTTON_RELEASE, actionButton=BUTTON_SECONDARY, id[0]=0, x[0]=308.3386, y[0]=2135.5417, toolType[0]=TOOL_TYPE_MOUSE, buttonState=0,                               classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=39827175, downTime=39826351, deviceId=5, source=0x2002, displayId=0, eventId=579098142 }
dispatchTouchEvent:         MotionEvent { action=ACTION_UP,             actionButton=0,                id[0]=0, x[0]=308.3386, y[0]=2135.5417, toolType[0]=TOOL_TYPE_MOUSE, buttonState=0,                               classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=39827175, downTime=39826351, deviceId=5, source=0x2002, displayId=0, eventId=299287089 }
dispatchGenericMotionEvent: MotionEvent { action=ACTION_HOVER_MOVE,     actionButton=0,                id[0]=0, x[0]=308.3386, y[0]=2135.5417, toolType[0]=TOOL_TYPE_MOUSE, buttonState=0,                               classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=39827175, downTime=39826351, deviceId=5, source=0x2002, displayId=0, eventId=330091271 }

The first and last hoover is to show there was no motion before and after. You are absolutely right, there is no reason to implement them.
The touchEvents are as follows:
ACTION_DOWN (left down),
ACTION_MOVE (right down)
ACTION_MOVE (left up)
ACTION_UP (right up)

and the genericMotionEvents:
ACTION_BUTTON_PRESS (left down)
ACTION_BUTTON_PRESS (right down)
ACTION_BUTTON_RELEASE (left up)
ACTION_BUTTON_RELEASE (right up)

As far as I can tell, aFreeRDP is not using the genericMotionEvents at the moment neither handle properly touchEvents sequence as above.
At the same time, if I had to fix it, the genericMotionEvents are way easier to interpret.

Thank you for the details.
So IIUC, there is currently no practical reason to implement ACTION_BUTTON_PRESS/ACTION_BUTTON_RELEASE, is it correct?

How about I hack something together and do a PR for review?
Option 4 makes sense.

Would you like to implement option 4 and submit a PR?
Thank you

So IIUC, there is currently no practical reason to implement ACTION_BUTTON_PRESS/ACTION_BUTTON_RELEASE, is it correct?
yes, but ... I will create a separate issue for it when it comes

Would you like to implement option 4 and submit a PR?
yes

How important is simulated zoom (ctrl-click) when in forward-all-clicks mode?

Good question, ideally it should still work, but I understand this is a problem with solution (4) :disappointed:

I implemented it trying to mimic hardware mouse, so the events have source set to SOURCE_MOUSE and tool type set to TOOL_TYPE_MOUSE. In this configuration I have not found a way to simulate pinch. Tried 2 virtual fingers. But I have to cancel mouse events.
I will go back to original hack and check it again. The tool type was TOOL_TYPE_FINGER and source was SOURCE_MOUSE.

So, if I mix  TOOL_TYPE_FINGER and source SOURCE_MOUSE which was the original hack, the results are application dependent. This combination is not a valid combination observed on the device, so it is a best effort.
I have another idea, what if modify pinch-to-zoom emulator logic.
In case of mouse, ctrl-click would not trigger simulation. Only after ctrl-click-move the 2 fingers are placed down and mouse event gets canceled.
What do you think?

Hi,
Thank you for your work.
I reviewed your 2 proposals:

https://github.com/paweljasinski/scrcpy/commit/4b77fe25867583130dea026d1cbadb139baf56b5
https://github.com/paweljasinski/scrcpy/commit/14d7351e0309e85ad0a82570d53eefdcb5af149f

(2) is the most straightforward, but --forward-all-clicks is really a client-side option, I prefer that it does not "leak" to the server side.
(1) LGTM. I made minor changes, in particular I moved the simulate_touch flag from the events structs to the sc_mouse_inject struct (the sc_mouse_*_events represent how the events are received from SDL by scrcpy, and simulate_touch is specific to the sc_mouse_inject mouse processor).
I opened a PR: https://github.com/Genymobile/scrcpy/pull/3579 Please review and test :wink:

Only after ctrl-click-move the 2 fingers are placed down and mouse event gets canceled.
What do you think?

How does the "mouse event get canceled"? If this implies to inject an ACTION_UP, the app will believe that a click pressed+released occurred. A priori, I don't like the fact that a mouse event is injected if in the end it should not.

I opened a PR: https://github.com/Genymobile/scrcpy/pull/3579 Please review and test
testing right now

How does the "mouse event get canceled"? If this implies to inject an ACTION_UP, the app will believe that a click pressed+released occurred. A priori, I don't like the fact that a mouse event is injected if in the end it should not.

I am guilty of doing experiments with physical mouse and not documenting. Let's fix it. The experiment:

press the left mouse button
pinch screen with 2 fingers (2 fingers down, move, 2 fingers up)
release left button mouse button

And here are the events captured by the app, the finger motion events and generic motion events removed.
dispatchTouchEvent: MotionEvent         { action=ACTION_DOWN,            actionButton=0,              id[0]=0, x[0]=486.5354, y[0]=2306.577,  toolType[0]=TOOL_TYPE_MOUSE,  buttonState=BUTTON_PRIMARY, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=1033584, downTime=1033584, deviceId=5, source=0x2002, displayId=0, eventId=837052436 }
dispatchGenericMotionEvent: MotionEvent { action=ACTION_BUTTON_PRESS,    actionButton=BUTTON_PRIMARY, id[0]=0, x[0]=486.5354, y[0]=2306.577,  toolType[0]=TOOL_TYPE_MOUSE,  buttonState=BUTTON_PRIMARY, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=1033584, downTime=1033584, deviceId=5, source=0x2002, displayId=0, eventId=473921841 }
dispatchGenericMotionEvent: MotionEvent { action=ACTION_HOVER_EXIT,      actionButton=0,              id[0]=0, x[0]=486.5354, y[0]=2306.577,  toolType[0]=TOOL_TYPE_MOUSE,  buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=1034829, downTime=1019240, deviceId=5, source=0x2002, displayId=0, eventId=1282497342 }
dispatchTouchEvent: MotionEvent         { action=ACTION_CANCEL,          actionButton=0,              id[0]=0, x[0]=486.5354, y[0]=2306.577,  toolType[0]=TOOL_TYPE_MOUSE,  buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=1034829, downTime=1033584, deviceId=5, source=0x2002, displayId=0, eventId=1801081690 }
dispatchTouchEvent: MotionEvent         { action=ACTION_DOWN,            actionButton=0,              id[0]=0, x[0]=383.0, y[0]=2564.0,       toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=1034815, downTime=1034815, deviceId=4, source=0x1002, displayId=0, eventId=801332124 }
dispatchTouchEvent: MotionEvent         { action=ACTION_POINTER_DOWN(1), actionButton=0,              id[0]=0, x[0]=383.0, y[0]=2564.0,       toolType[0]=TOOL_TYPE_FINGER, id[1]=1, x[1]=747.0, y[1]=2199.0, toolType[1]=TOOL_TYPE_FINGER, buttonState=0, classification=AMBIGUOUS_GESTURE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=2, historySize=0, eventTime=1034832, downTime=1034815, deviceId=4, source=0x1002, displayId=0, eventId=199526300 }
dispatchTouchEvent: MotionEvent         { action=ACTION_POINTER_UP(1),   actionButton=0,              id[0]=0, x[0]=411.0, y[0]=2633.0,       toolType[0]=TOOL_TYPE_FINGER, id[1]=1, x[1]=920.0, y[1]=1938.0, toolType[1]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=2, historySize=0, eventTime=1035306, downTime=1034815, deviceId=4, source=0x1002, displayId=0, eventId=16401284 }
dispatchTouchEvent: MotionEvent         { action=ACTION_UP,              actionButton=0,              id[0]=0, x[0]=408.0, y[0]=2629.0,       toolType[0]=TOOL_TYPE_FINGER, buttonState=0, classification=NONE, metaState=0, flags=0x0, edgeFlags=0x0, pointerCount=1, historySize=0, eventTime=1035335, downTime=1034815, deviceId=4, source=0x1002, displayId=0, eventId=995215654 }

The interesting part, when finger touches, the old mouse click event get ACTION_CANCEL even when the mouse has its button down.
Assuming most of the mouse click events are interpreted on ACTION_UP, the mouse click never triggers application.

I don't like the fact that a mouse event is injected if in the end it should not.
Based on the above logic, it will not have mouse click effect.
But, this can be done better.
Scrcpy could hold back ACTION_DOWN from mouse until there is either key up or motion.
On key up, scrcpy sends ACTION_DOWN followed by ACTION_UP.
On motion, there is only finger pinch emulation and final mouse key up is discarded. Not sure what to do about the Ctrl up.
If the control key is released before emulation start, send ACTION_DOWN and continue as usually.
If the control key is released in pinch emulation, continue pinch.

I will try it when I have a moment.

I implemented it trying to mimic hardware mouse, so the events have source set to SOURCE_MOUSE and tool type set to TOOL_TYPE_MOUSE. In this configuration I have not found a way to simulate pinch. Tried 2 virtual fingers. But I have to cancel mouse events.

In fact, the virtual finger may also be a mouse. Here is a diff to test against current dev branch, which forces all events (mouse or touch or virtual finger) to be a mouse, and pinch-to-zoom still works:
diff --git a/server/src/main/java/com/genymobile/scrcpy/Controller.java b/server/src/main/java/com/genymobile/scrcpy/Controller.java
index 95b64711..b9f193c1 100644
--- a/server/src/main/java/com/genymobile/scrcpy/Controller.java
+++ b/server/src/main/java/com/genymobile/scrcpy/Controller.java
@@ -45,7 +45,7 @@ public class Controller {
     private void initPointers() {
         for (int i = 0; i < PointersState.MAX_POINTERS; ++i) {
             MotionEvent.PointerProperties props = new MotionEvent.PointerProperties();
-            props.toolType = MotionEvent.TOOL_TYPE_FINGER;
+            props.toolType = MotionEvent.TOOL_TYPE_MOUSE;

             MotionEvent.PointerCoords coords = new MotionEvent.PointerCoords();
             coords.orientation = 0;
@@ -210,12 +210,7 @@ public class Controller {
         }

         // Right-click and middle-click only work if the source is a mouse
-        boolean nonPrimaryButtonPressed = (buttons & ~MotionEvent.BUTTON_PRIMARY) != 0;
-        int source = nonPrimaryButtonPressed ? InputDevice.SOURCE_MOUSE : InputDevice.SOURCE_TOUCHSCREEN;
-        if (source != InputDevice.SOURCE_MOUSE) {
-            // Buttons must not be set for touch events
-            buttons = 0;
-        }
+        int source = InputDevice.SOURCE_MOUSE;

         MotionEvent event = MotionEvent
                 .obtain(lastTouchDown, now, action, pointerCount, pointerProperties, pointerCoords, 0, buttons, 1f, 1f, DEFAULT_DEVICE_ID, 0, source,

I recall inconsistent behavior. Not all applications worked.

With which commit?

With which commit? With 2 "virtual" mice?
yes, but I didn't use your code, it was one of the experiments I did on my own.

OK. When you have some time, could you please review and test this new version? (#3579)


Antenna fee is not 0

IIRC antenna fee is $0.55
Acceptance Criteria

Show appropriate antenna update fee

@Andrewsopoku can you add a screenshot for @Louisreed to make some adjustments to?

@Andrewsopoku can you open a PR for a new release and push to Test Flight?

@marvinmarnold unexpectedly, i am able to still reproduce the issue when i open antenna update for the first time but the correct fee gets set on subsequent opening. I moved the ticket to in-progress because i am still figuring out what is causing the issue. The easiest fix would be hardcoding the fee since we already know and opening a follow up ticket for a proper fix.
Thoughts?

That sounds good to me. @KevinWassermann94?

Published v1.0.5 to both stores. Waiting on approval.


Handle child refs

ref https://github.com/Yomguithereal/baobab-react/pull/104
Thanks base PR @matthewkturner
I can't wait for releasing that feature so I wrote test.

Thanks @airtoxin!

fixed!

Thanks @airtoxin. Merging right now. I don't have time right now but if you want to add some documentation about this in a PR, I'll gladly merge it too. Thanks!

Just published a 2.1.0 with your additions.


Add helpwanted part

I added help wanted part!
Happy "Hacktoberfest"!

@microsoft-github-policy-service agree

@microsoft-github-policy-service agree

Hey bot! Don't close this PR. Thank you!

Hey bot! Don't close this PR. Thank you!


shared singleton thread

This for the enhancement for #15. Feedback appreciated.

Note: should not be merged if #25 is accepted

Any update on whether this or #25 will be accepted?

@jtreanor we ran into some snags with some reference problems using the queue based API in #25 (Since that seems to be the better way to go) and haven't gotten a chance since to look at it again. It is definitely something we would like to finish, as if it works well it would be a win for Starscream as well.

Cool, thanks @acmacalister
We are considering moving back to jetfire from SocketRocket (we switched after encountering #9 and #13). It looks like Jetfire has gotten even better since the :smile:

@jtreanor cool. If you end up switching back, let us know if you run into anything. :smile:


GEODE-5055: Handle index creation in progress.

* If all the servers are above the 1.6.0 version then the LuceneIndexCreationInProgressException will be propogated up to the servers
* If there are servers which are lower than 1.6.0 then get repository will be re-executed but it will wait till the indexes are available.

Thank you for submitting a contribution to Apache Geode.
In order to streamline the review of the contribution we ask you
to ensure the following steps have been taken:
For all changes:

[ ] Is there a JIRA ticket associated with this PR? Is it referenced in the commit message?

[ ] Has your PR been rebased against the latest commit within the target branch (typically develop)?

[ ] Is your initial contribution a single, squashed commit?

[ ] Does gradlew build run cleanly?

[ ] Have you written or updated unit tests to verify your changes?

[ ] If adding new dependencies to the code, are these dependencies licensed in a way that is compatible for inclusion under ASF 2.0?

Note:
Please ensure that once the PR is submitted, you check travis-ci for build issues and
submit an update to your PR as soon as possible. If you need help, please send an
email to<EMAIL_ADDRESS>

All tests passed


Global buffer variable for VAT entries in Codeunit 12

Codeunit 12 already has several buffer variables like TempGLEntryBuf,CVLedgEntryBuf, DtldCVLedgEntryBuf to pass instances of temporary records throughout the application but currently none for the VAT entries (Table 254).
Would it be possible to introduce such a temporary record variable (in global scope) so that it may be used in planned new publishers and evaluated in likewise subscribers? Naturally, to avoid conflicts between other 3rd party extensions possibly using the same variable you would need to add some means of identification like a new field in a table extension for the VAT entries to ensure you only process your own records in the subscriber.
Otherwise the normal instance of the VAT entries would have used as a parameter in the publishers which would make further processing much more challenging because temporary instances of VAT entries would have to be fully maintained outside of Codeunit 12.

Hi Kowa63. You ask for very significant change. It's not on our radar now. If it is so important for you, can you describe a business case where you strongly required to work with global temporary VAT Entry? Just to understand the context.

Hi Kowa63.
I plan to close this issue. Do you have any objections?

Currently we use this to enable unapplying a particular entry when one payment was used to settle several invoices. In the standard you can only unapply all of them ( i.e. all those which were posted in one transaction) but cannot select a specific one. That is an enhancement we introduced almost a decade ago.
That is a common requirement in the health insurance industry when invoices sent in by doctors and hospitals are all approved at first , but after closer examination of the treatments that were given it may be decided some days later that the cost of one which was included in the bunch is not covered by the regulations, so this particular one must be unapplied. In this situation is essential to evaluate the correct inverted VAT amounts
We have recently introduced our own transaction no. to work our way around the limitations of using publishers and subcribers in situations like these. Not sure if this is going to work though.

So requesting for implementation of temporary vat entry (by the way isn't it used in PostUnapply function) and requesting for events/global functions are different things. If you lack of some events or functions let us know, will see what can be done there.

Actually, Event Request/Function Expose were not the point of my question. We created several such issues in the last weeks as you see here (and there will be more to come) and luckily most were accepted ;-).
https://github.com/microsoft/ALAppExtensions/issues?utf8=✓&q=is%3Aissue+author%3AKowa63+
TempVatEntry is used a parameter in PostUnapply. We do not want to intervene into handling these records in any way. The point was to have a global buffer that can be filled in any function and evaluated in any function whenever it may be necessary to determine how further processing will take place under certain conditions.

Ok, I see. So as I mentioned above this is not extensibility task. Please put your suggestion on the https://aka.ms/bcideas to have a discussion on it with others or PMs.

Hi Kai. Let's close this issue for now and please log your suggestion at the ideas.

Apparently there is something similar cooking here: #2557


[Impeller] libImpeller: Publish impeller library artifacts.

Similar to the Flutter Embedder API, publish to artifacts to the flutter_infra_release bucket.

It might be easiest to package along with the embedder .so.
Tracing back from that archive starting here:
https://github.com/flutter/engine/blob/db0c0b7ca42899aaf43fa5ca28f76e92030a305c/ci/builders/linux_host_engine.json#L19C67-L19C85
That file is generated by the rule here:
https://github.com/flutter/engine/blob/db0c0b7ca42899aaf43fa5ca28f76e92030a305c/shell/platform/embedder/BUILD.gn#L583.
So you can either add a file to that archive, or create a new path in parallel from a new zip_bundle target to a new file listed in the archives section of the .json file.


Fix README link

Previous link to Replicate web demo in README.md file had a typo; fixed. And please claim the model here: https://replicate.com/mchong6/gans-n-roses to make it public! Thanks!

Thanks! Remember to click the black "Claim this model" button on the top of the web demo page!


Constraint not re-validated when dependent field changes

Describe the bug
It appears that a constraint on a field is only validated when that field is updated even if the constraint expression also depends on the value of another field.  If the other field changes, the constraint on the first field is not re-validated.
To Reproduce
Given a form like this:

type
name
label::en
appearance
constraint

begin_group
account_info
Account Info
field-list

string
acct_nbr
Account Number

. = ${confirm}

string
confirm
Confirm Account Number

end_group

Enter 123 in the "Account Number"
See the "Value not allowed" error for the field (because the constraint is violated)
Enter 123 in the "Confirm Account Number"
See that the "Value not allowed" error is still displayed for the "Account Number"

Expected behavior
I would expect the constraint for acct_nbr to be re-validated when confirm changes since the xPath expression for the constraint depends on the value from confirm.  That being said, I do not really see anything mentioned in the ODK Spec or the xPath Spec that indicates if that is the proper behavior or not (maybe I am missing something?)....
It is worth noting that when validation is triggered for the whole page (e.g. like when advancing to the next page) then the constraint is validated properly and the error is no longer displayed.
Browser and OS (please complete the following information):

OS: Linux Mint 20.3
Browser: Chromium 102.0.5005.61
enketo-core: 5.18.1 (but can also re-create the behavior on https://getodk.org/xlsform/)

when validation is triggered for the whole page (e.g. like when advancing to the next page)

And also when you submit, right? It lets you?
I'm not surprised by this. I think it has to do with how relationships between expressions and the nodes in them are determined (there's no unified dependency graph). @eyelidlessness and I are poking around in this area but don't have a clear plan yet.
In the mean time, I believe putting the constraint on confirm would usually give the expected behavior, right?

And also when you submit, right? It lets you?

Correct. I can submit the form without issue even if the error message is being improperly displayed.

putting the constraint on confirm would usually give the expected behavior, right?

Yes, this is true. Not ideal, since the user could go back and change the value of acct_nbr and it would not cause any constraint to fail (right away).  But, it would fail when trying to go to the next page or submit the form, which is seems sufficient.
Of course, my actual use case where I am seeing this issue is not so simple (seems like it never is... :laughing: ).  One of our custom widgets will auto-populate other fields on the form based on the value selected for the widget's field. But that population happens async and a constraint on the widget field would get calculated as soon as its value is set and will not be re-validated when the other fields are set (even though the constraint depends on the values in the other fields).  I think I will be able to work around this, though by just having the widget trigger a re-validation of the current page once it is finished loading the fields....


SN48 Scoring

Circom implementation of SN48's iterative scoring mechanism (not directly PoW)

Closing in favor of EZKL implementation


backend: Gitlab URL Reader to throw error when apiBaseUrl is missing

Lesson after spending quite some time on Hosted GitLab issue https://github.com/backstage/backstage/issues/4303

Tugboat has finished building the preview for this pull request!
Link:

https://pr4308-euy2ocvwmizloisivyoivcqefk6q9gjb.tugboat.qa

Dashboard:

https://dashboard.tugboat.qa/601433ae14dc5817e3be8797

Tugboat has finished building the preview for this pull request!
Link:

https://pr4308-euy2ocvwmizloisivyoivcqefk6q9gjb.tugboat.qa

Dashboard:

https://dashboard.tugboat.qa/601433ae14dc5817e3be8797

I think we should have some form of documentation here for each provider to find out how to get the apiBaseUrl for each provider

I think we should have some form of documentation here to follow to find out how to get the apiBaseUrl for each provider

Indeed. Shall we tackle this as part of https://github.com/backstage/backstage/issues/4310 ?

I think if we're going to make this a breaking change that this is now required, we should document this sooner than that issue. Also wondering if we need to make config.d.ts reflect this required url now?

We are already throwing the error in other providers e.g. GitHub
https://github.com/backstage/backstage/blob/435972704c9acf85fda79e28c9556482780c801d/packages/backend-common/src/reading/GithubUrlReader.ts#L62-L66
This PR improves the error in GitLab and adds tests.
The config update and docs can be addressed separately, IMHO. 🙇

aha - sorry, I thought I also so saw the throw code for bitbucket too but just realised it was tests too.

it can't be required in the config.d.ts as long as we have the feature to deduce it automatically for github.com

i see there was a message apiBaseUrl and rawBaseUrl - that's not really true is it? at least in terms of url reader needs, it should be enough to configure ONE of them and it'll try to use either method

it can't be required in the config.d.ts as long as we have the feature to deduce it automatically for github.com

Yes, good point!

i see there was a message apiBaseUrl and rawBaseUrl - that's not really true is it? at least in terms of url reader needs, it should be enough to configure ONE of them and it'll try to use either method

I guess you are right. Looking at
https://github.com/backstage/backstage/blob/fc3e09e1bba9221be2e843ea797c3671f11b0f4c/packages/integration/src/github/core.ts#L77-L82
If apiBaseUrl is present, the raw base URL should not be required.

Merging this but happy to continue our discussion on existing implementations.

@OrkoHunter Yeah this is an improvement either way. But I'm thinking that when loading the config, there should be actual validation here. Like actually checking that it us URL parseable.

Right, agreed. apiBaseUrl should not be undefined when being returned from readGitLabIntegrationConfig.


Add InfoSource    CR 10-15

Description of the change: (free-text)
In NewsML-G2, an infosource is defined as
"A party (person or organisation) which originated, modified, enhanced, distributed, aggregated or supplied the content or provided some information used to create or enhance the content."
We should be able to convey the list of infosources within ninjs. Specifically, we should indicate the name, the inforsource code and, optionally, scheme, together with the relationship between the content and this infosource.
Rationale for the change:
Reference to related IPTC discussion(s) (on Yahoo groups etc):
Formalised change request: (spec table etc.)
"infosource" : {
	"description" : "A party (person or organisation) which originated, modified, enhanced, distributed, aggregated or supplied the content or provided some information used to create or enhance the content.",
	"type" : "array",
	"items" : {
		"type" : "object",
		"additionalProperties" : false,
		"properties" : {
			"name" : {
				"description" : "The name of the infosource",
				"type" : "string"
			},
			"rel" : {
				"description" : "The relationship of the content of the news object to the infosource",
				"type" : "string"
			},
			"scheme" : {
				"description" : "The identifier of a scheme (= controlled vocabulary) which includes a code for the infosource",
				"type" : "string",
				"format" : "uri"
			},
			"code" : {
				"description": "The code for the infosource in a scheme (= controlled vocabulary) which is identified by the scheme property",
				"type" : "string"
			}
		}
	}
},

JAYSON:
Hmmm, I do not think we will use this but I can totally see how others will be able to use it. Looks a bit complex, but as long as it is all optional, I am okay with this.

Voted into 1.2 on oct 16 2019


Update to 0.0.9-SNAPSHOT

I just released 0.0.8-SNAPSHOT and 0.0.8, so development should happen on 0.0.9-SNAPSHOT.

PTAL

Maybe do a 0.0.8 commit first so that you can tag it for release notes?

https://github.com/googleapis/api-compiler/pull/33 for 0.0.8 release.

idk how this got submitted...


feat: allow global host commands to be run from anywhere, for #4416

The Issue
Custom global host commands currently only be run inside a project directory - even if they don't need a project in order to do their stuff.
A great example of this is ddev self-upgrade which should be able to run from anywhere - but currently it has to be run from inside a project directory.
How This PR Solves The Issue
This PR adds a new RunsWithoutProject annotation. If custom global host commands set this annotation to true, they will be added to the cobra command set, and can be run from anywhere, even outside project directories.
Manual Testing Instructions

Run ddev help - you should see the self-upgrade command there.
Run ddev self-upgrade - it should work from anywhere, even outside a project directory.
Add ## RunsWithoutProject: true to a custom global host command, then perform the first two steps again, but with your custom command rather than self-upgrade.

Automated Testing Overview

I've added checks for the following the following:

Check a global host command with RunsWithoutProject: true shows and can be run from arbitrary working directories
Check a global host command with RunsWithoutProject: true still shows and can be run from inside a project directory
Check commands without RunsWithoutProject: true do not show from arbitrary working directories

This is my first time really looking at how to add tests and I've gone in with a fairly light touch - if you want more test coverage I'll be happy to add it.
Related Issue Link(s)

https://github.com/ddev/ddev/issues/4416

NOTE: This PR will be one of several iterative features that together will fulfil the requirements set forth in that issue. The issue should not be closed until all of its requirements are fulfilled.
Release/Deployment Notes

Anyone who maintains a DDEV extension or who has some custom commands in projects they manage should review their custom global host commands, and add the new RunsWithoutProject annotation to any commands that should be allowed to run even outside of project directories.

Wow!

The rules for PR titles say that I must use fixes #4416 in the PR title because an issue exists

You can use for #4416 instead of fixes #4416 .

Docs CI failure seems to be for an unrelated broken link

Restarted failed jobs.

I've added some tests and updated the "Automated Testing Overview" section of the PR description.
Let me know if you want anything changed, more test coverage, etc.

I tried to test this on gitpod using https://gitpod.io/#https://github.com/ddev/ddev/pulls/5702 but when I ran ddev -v it showed that it was actually running on commit 9bd9054 (i.e. the latest commit on the master branch)... so I'm not sure if I was doing something wrong there, or if something is misconfigured, or something?
Anyway, that was more trying that out for fun - I did run this locally and it worked as expected.

I just opened on gitpod and got
$ ddev --version
ddev version feaedb50

which is correct. I used the "open" button provided by the gitpod app,

It links to https://gitpod.io/?autostart=true#https://github.com/ddev/ddev/pull/5702 which should be the same as your result.
Would be interested to know what might have gone wrong for you. Gitpod is a great resource for these things.
I am interested to note that gitpod no longer adds a comment with the link. That was a nice feature.
I tried it with your link, https://gitpod.io/#https://github.com/ddev/ddev/pulls/5702 and sure enough, the code in /workspace/ddev was upstream/master instead of the PR.
Mine https://gitpod.io/?autostart=true#https://github.com/ddev/ddev/pull/5702 checks out the branch properly:
gitpod /workspace/ddev (20240116_GuySartorelli_truly-global-commands) $ git status
On branch 20240116_GuySartorelli_truly-global-commands
Your branch is up to date with 'origin/20240116_GuySartorelli_truly-global-commands'.

Yours,  https://gitpod.io/#https://github.com/ddev/ddev/pulls/5702,
gitpod /workspace/ddev (master) $ git status
On branch master
Your branch is up to date with 'origin/master'.

I have to assume this is a new bug in gitpod? Or perhaps it's just

https://github.com/gitpod-io/gitpod/issues/13991

which never actually got fixed?

Ah, the problem is your URL had pulls in it, not pull.  (And that's because the doc says pulls). (It works fine with pull). I'll do docs PR.

I've renamed the RunsWithoutProject annotation to CanRunGlobally.
This is a more immediately clear and better descriptive name for what this annotation does, and leaves its usage open to the behaviour described in https://github.com/ddev/ddev/issues/4416#issuecomment-1901847995 in the future.

Build kits ci failure looks unrelated

I invited you to buildkite so you can restart tests (and more easily examine them), also to ddev team on GitHub. I think that lets you restart GitHub tests.

Awesome, thank you! 💙

This should be good to go

I will review this later this week.


The compressed image exceeds the original image size

I encountered the following problem during the process of compressing images: the original image width is 1080, and I specified the compressed width as 2000, which will cause the image to increase. I think this is a bug.

And the compressed image will have a serious jagged feeling.

@Dec-QXY which platform?

My device is android 10

Try v0.10.0 and make sure keepAspectRatio is true, it won't upscale images.


Marker Cluster :options property not working

I cant figure out a way to implement custom marker clusters or somehow design these marker clusters. I have tried to pass the styles through the :options like the code below but to no success. Is there a way to tackle this?
<Script setup>

import { SuperClusterAlgorithm } from "@googlemaps/markerclusterer";

const algorithm = new SuperClusterAlgorithm({
  radius: 120,
  maxZoom: 14,
  log: true,
  generateId: false,
  minPoints: 20,
});

const renderer = ref({
  render: ({ count, position, bounds }, stats, map) => {
    return new google.maps.Marker({
      position,
      icon: {
        url: `https://cdn-icons-png.flaticon.com/512/10875/10875954.png`,
        scaledSize: new google.maps.Size(53, 53),
      },
      label: {
        text: String(count),
        color: "red",

        fontSize: "14px",
      },
      zIndex: Number(google.maps.Marker.MAX_ZINDEX) + count,
    });
  },
});

<script>

<MarkerCluster  :options="{renderer, algorithm}">
      <Marker
        v-for="(markerItem, markerIndex) in mapObj.markers"
        :options="markerItem?.options"
        :key="`mapMarkerId-${markerItem.id}.${markerIndex}`"
        @click="showUnitDetails(markerItem, markerIndex)"
        ref="markerRefArr"
      >
</MarkerCluster>

Hey guys i got it to work was using the wrong minPoints since it was set to 20 there had to be 20 markers for it to become a cluster change that to minPoints : 2, and the above code should work perfectly fine.


[release/1.3] Fix filter errors

Prevent error messages from being output to stderr.
Return illegal token when a quoted string is invalid and capture the error.
This issue occurs on the daemon and a good candidate to backport.

Codecov Report

Merging #3953 into release/1.3 will increase coverage by 0.24%.
The diff coverage is 81.08%.

@@               Coverage Diff               @@
##           release/1.3    #3953      +/-   ##
===============================================
+ Coverage        42.07%   42.31%   +0.24%
===============================================
  Files              129      129
  Lines            14321    14341      +20
===============================================
+ Hits              6026     6069      +43
+ Misses            7394     7373      -21
+ Partials           901      899       -2

Flag
Coverage Δ

#linux
45.83% <79.41%> (+0.24%)
:arrow_up:

#windows
37.31% <81.08%> (+0.29%)
:arrow_up:

Impacted Files
Coverage Δ

filters/parser.go
81.65% <66.66%> (+1.28%)
:arrow_up:

filters/scanner.go
82.19% <83.87%> (+13.83%)
:arrow_up:

Continue to review full report at Codecov.

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


Trouble setting up PyOD together with Keras and Tensorflow

Hello,
I am very keen to use the PyOD models including the AutoEncoders. For this, I created a new conda environment with Python 3.7 and used the newest pip version to install pyod. This gives me a working environment. However, I am also interested in the AutoEncoders models, so used conda to install keras and tensorflow. After running the commands, as stated in the installation guide, it messes up the environment. Importing the pyod package then throws me the following error:

import pyod
Traceback (most recent call last):
File "", line 1, in
File "C:\Users\rsmits004\Anaconda3\envs\anomaly_test\lib\site-packages\pyod_init_.py", line 4, in
from . import utils
File "C:\Users\rsmits004\Anaconda3\envs\anomaly_test\lib\site-packages\pyod\utils_init_.py", line 2, in
from .utility import check_parameter
File "C:\Users\rsmits004\Anaconda3\envs\anomaly_test\lib\site-packages\pyod\utils\utility.py", line 14, in
import sklearn
File "C:\Users\rsmits004\Anaconda3\envs\anomaly_test\lib\site-packages\sklearn_init_.py", line 80, in
from .base import clone
File "C:\Users\rsmits004\Anaconda3\envs\anomaly_test\lib\site-packages\sklearn\base.py", line 21, in
from .utils import IS_32BIT
File "C:\Users\rsmits004\Anaconda3\envs\anomaly_test\lib\site-packages\sklearn\utils_init.py", line 23, in
from .class_weight import compute_class_weight, compute_sample_weight
File "C:\Users\rsmits004\Anaconda3\envs\anomaly_test\lib\site-packages\sklearn\utils\class_weight.py", line 7, in
from .validation import deprecate_positional_args
File "C:\Users\rsmits004\Anaconda3\envs\anomaly_test\lib\site-packages\sklearn\utils\validation.py", line 25, in
from .fixes import object_dtype_isnan, parse_version
File "C:\Users\rsmits004\Anaconda3\envs\anomaly_test\lib\site-packages\sklearn\utils\fixes.py", line 18, in
import scipy.stats
File "C:\Users\rsmits004\Anaconda3\envs\anomaly_test\lib\site-packages\scipy\stats_init.py", line 388, in
from .stats import *
File "C:\Users\rsmits004\Anaconda3\envs\anomaly_test\lib\site-packages\scipy\stats\stats.py", line 180, in
from . import distributions
File "C:\Users\rsmits004\Anaconda3\envs\anomaly_test\lib\site-packages\scipy\stats\distributions.py", line 8, in
from .distn_infrastructure import (entropy, rv_discrete, rv_continuous,
File "C:\Users\rsmits004\Anaconda3\envs\anomaly_test\lib\site-packages\scipy\stats_distn_infrastructure.py", line 23, in
from scipy import optimize
File "C:\Users\rsmits004\Anaconda3\envs\anomaly_test\lib\site-packages\scipy\optimize_init.py", line 387, in
from .optimize import *
File "C:\Users\rsmits004\Anaconda3\envs\anomaly_test\lib\site-packages\scipy\optimize\optimize.py", line 36, in
from .numdiff import approx_derivative
File "C:\Users\rsmits004\Anaconda3\envs\anomaly_test\lib\site-packages\scipy\optimize_numdiff.py", line 6, in
from scipy.sparse.linalg import LinearOperator
File "C:\Users\rsmits004\Anaconda3\envs\anomaly_test\lib\site-packages\scipy\sparse\linalg_init.py", line 114, in
from .eigen import *
File "C:\Users\rsmits004\Anaconda3\envs\anomaly_test\lib\site-packages\scipy\sparse\linalg\eigen_init.py", line 9, in
from .arpack import *
File "C:\Users\rsmits004\Anaconda3\envs\anomaly_test\lib\site-packages\scipy\sparse\linalg\eigen\arpack_init_.py", line 20, in
from .arpack import *
File "C:\Users\rsmits004\Anaconda3\envs\anomaly_test\lib\site-packages\scipy\sparse\linalg\eigen\arpack\arpack.py", line 43, in
from . import _arpack
ImportError: DLL load failed: The specified procedure could not be found.

I found that conda downgrades my scipy from 1.5.2. (pre-installation keras and tensorflow) to 1.5.0. (post-installation). I included the list of packages pre and post installation.
Packages before and after conda install keras tensorflow.docx
Uninstalling and installing the scipy package to 1.5.2. again seems to get importing pyod and tensorflow working again, but the follow message in the Anaconda Prompt makes me a bit nervous:

ERROR: After October 2020 you may experience errors when installing or updating packages. This is because pip will change the way that it resolves dependency conflicts.
We recommend you use --use-feature=2020-resolver to test your packages with the new resolver before it becomes the default.
tensorflow 2.3.0 requires numpy<1.19.0,>=1.16.0, but you'll have numpy 1.19.1 which is incompatible.
tensorflow 2.3.0 requires scipy==1.4.1, but you'll have scipy 1.5.2 which is incompatible.

Any recommendations on setting up the environment appropriately?

iirc i got it working with
Keras==2.3.1
tensorflow==1.14.0

Yeah. We are leaving the setup of keras to the user.
I think the latest keras+TF works with my clound env.
My local env works with tf=1.14.0 and keras==2.2.4


Resolve Automation Failures

Update test imports and workflows to resolve failures
Failures noted in https://github.com/OpenVoiceOS/skill-ovos-wikipedia/pull/37

@JarbasAl it looks like you added these unit tests. I'm not sure what changed since they were added; can you look at this?

seems like just a bad copy paste of automations that dragged extra files, just remove those :+1:


Exome seq data demo

Requesting review of exomeSeq datademo file from @sgosline and @allaway
Rendered output html file is here: https://www.synapse.org/#!Synapse:syn19964265

Also, it looks like there is a conflict in one of the files compared to master ("data_demos/rnaseq-data-introduction.Rmd")

Thanks for the helpful suggestions. Will incorporate the suggested edits and start a new pull request.


Read config from a config file

I would like to add a way to read config using a config file instead of command line arguments. Very similar to what karma uses.
Note: the current command line arguments would NOT be replaced with a config file
Proposal:

When you call stryker you can supply a config file with --configFile (or -c?). If you don't supply one it will use stryker.conf.js as a default.
the config file should look like this:

module.exports = function(config) {
    config.set({
      files: [
           'lib/**/*.js',
           'src/**/*.js',
           'test/**/*.js'
       ],
       mutate: [
            'src/**/*.js'
       ],

        // additional optional options with default values:
         testFramework: 'jasmine',
         testRunner: 'karma',
         timeoutMs: 2000,
         timeoutFactor: 1.5,
         plugins: ['stryker-*'],
         port: 9234
    });
};

By default: any plugin is loaded from the node_modules folder starting with the name stryker-.
A plugin will also have the possibility to register a ConfigWriter to the ConfigWriterFactory.

Config writers will be applied after the reading of the normal stryker.conf.js file. Indeed it has to, because that file defines the plugins to be loaded in the first place.
For example: a plugin with the name stryker-karma-runner could register an additional ConfigWriter with the name 'karma' to the ConfigWriterFactory. That KarmaConfigWriter can look for a property with the name karmaConfigFile in the existing config. It can read that karma.conf.js file and than choose to override some of the settings in the stryker.conf.js file. For example override the files based on the karma.conf.js's files key.
This way, plugin implementers can have maximum flexibility in adding config based on config settings that live outside the stryker process.

Does everybody agree with this proposal?

Note: I just changed some parts. This will not replace the command line arguments, just add a new one. I would like to maybe add a stryker-cli in the future where you would only accept a config file.*

I added a proposal for the api in the new feature-read-config branch: https://github.com/stryker-mutator/stryker/tree/feature-read-config/src/api

I like the idea! I can't find the files and mutate properties in the API. Is there a reason why they aren't there?


Forum version 4.1.15

Plugin may not work on forum version 4.1.15. User tried to sign into forum via plugin and received error: Not Acceptable

received error: Not Acceptable

Can you provide a screenshot or logs of some kind. I have never seen that error with this plugin or natively in IPS related to login.
One thing I would check for is proper rewrite, and make sure you have the login fully setup (API key, upload folder uploaded correctly, using latest Steam Login, plugin enabled)

This plugin worked before I upgraded. Just to make sure, I reinstalled the plugin before recording the below video: https://youtu.be/ms-oW8lGjNE

Can you post your nginx vhost?

Actually, you're using Litespeed and on review, I don't see any part of this plugin that would ever issue a 406 Not Acceptable request back. Add that to the fact that only 'Not Acceptable' is in the body of the response leads me to believe you've got a misconfigured server.
I won't be able to help you with this, something on your web server must have changed at the same time as your upgrade.

Ok, so I discussed the issue with my host and you guys were right, hopefully the below information will help out other users having the same issue as me:
A 'Not Acceptable' error usually means you're triggering a mod_security rule we have in place. Considering this is doing an authentication through a third party URL/resource I wouldn't be surprised that were the case. Please add the following to your forum installation directories .htaccess file and then try to replicate this again:

SecFilterEngine Off
SecFilterScanPOST Off

🎉


boards: arm: Enable mcuboot on mimxrt1064_evk

Reworks device tree bindings for the NXP FlexSPI controller to allow defining both the chip select and the memory-mapped address for each device on the bus. This allows us to convert i.MX RT boards to use a zephyr,flash chosen node and to use west to sign images for mcuboot.
mcuboot can now boot a zephyr application from the internal QSPI flash on the mimxrt1064_evk board. The slot sizes are large, so we need to modify the build instructions in doc/guides/west/sign.rst to increase CONFIG_BOOT_MAX_IMG_SECTORS:
$ west build -b mimxrt1064_evk -s bootloader/mcuboot/boot/zephyr -d build-mcuboot -- -DCONFIG_BOOT_MAX_IMG_SECTORS=512
$ west build -b mimxrt1064_evk -s zephyr/samples/hello_world -d build-hello-signed -- -DCONFIG_BOOTLOADER_MCUBOOT=y -DCONFIG_MCUBOOT_SIGNATURE_KEY_FILE=\"bootloader/mcuboot/root-rsa-2048.pem\"

$ west flash -d build-mcuboot
$ west flash -d build-hello-signed

*** Booting Zephyr OS build zephyr-v2.5.0-2422-g8c0a1a67565c  ***
I: Starting bootloader
I: Primary image: magic=unset, swap_type=0x1, copy_done=0x3, image_ok=0x3
I: Scratch: magic=unset, swap_type=0x1, copy_done=0x3, image_ok=0x3
I: Boot source: primary slot
I: Swap type: none
I: Bootloader chainload address offset: 0x10000
I: Jumping to the first image slot
*** Booting Zephyr OS build zephyr-v2.5.0-2422-g8c0a1a67565c  ***
Hello World! mimxrt1064_evk

This is an alternative to #30065
I have not yet tested swapping images
I confirmed that Device Firmware Upgrade works over the shell transport.

The DTS change to reg violates the register definition of a spi controller. Why do we need to move the reg down into at25sf128a@0 node?

The controller can support up to 4 devices on the bus, so we could have something like this:
&flexspi {
        flash_0: flash@0 {
                compatible = "nxp,imx-flexspi-nor";
                reg = <0 0x1000>, <0x60000000 DT_SIZE_M(32)>;
        };
        flash_1: flash@1 {
                compatible = "nxp,imx-flexspi-nor";
                reg = <1 0x1000>, <0x62000000 DT_SIZE_M(16)>;
        };
        flash_2: flash@2 {
                compatible = "nxp,imx-flexspi-nor";
                reg = <2 0x1000>, <0x63000000 DT_SIZE_M(8)>;
        };
        flash_3: flash@3 {
                compatible = "nxp,imx-flexspi-nor";
                reg = <3 0x1000>, <0x63800000 DT_SIZE_M(4)>;
        };
};

I want i.MX RT boards to use zephyr,flash chosen nodes to be consistent with other boards in Zephyr, and to use west sign to sign images for mcuboot.
https://github.com/zephyrproject-rtos/zephyr/blob/be226ca55a6a90486c0e190600857538722fdd89/scripts/west_commands/sign.py#L332-L337
I don't see how to make this work if the memory-mapped regions are defined outside the flash nodes.

Superseded by #34845


GUI: RBF: automated labelling?

Should we set a label for RBF'd transactions such as:

If the transaction has a label, prepend it with "RBF of " or "Cancel of "
If it doesn't use the txid in place of the og label

Should it be set as a transaction label? I'd say yes. But in most cases it's payments which'd have labels.

@edouardparis says we should also transfer the payment labels from the bumped transaction.


Is there any 'Tile' component/control?

I want to know if there is anything such as a 'Tile' component/control. If no, how can have a tile like component in my UI

<ListView.ItemsPanel>     <ItemsPanelTemplate>         <StackPanel Orientation="Horizontal"></StackPanel>     </ItemsPanelTemplate> </ListView.ItemsPanel>
OR
<ListView.ItemsPanel>

</ListView.ItemsPanel>


Support changes to the input sources (i.e. CRDs) in Galley

Add a dynamic CRD detection mode to Galley, so that Galley can start without waiting for CRDs to appear. It should also be able to handle the case of CRDs disappearing.
This work includes:

[x] Add a CRD listener that listens to changes in the CRDs.
[x] Start/Stop listeners based on the changes to the CRDs.
[x] Create a new event type for the runtime for the removal of all resources, when a CRD disappears.
[ ] Expose a new collection (i.e. galley/sources), to capture the currently available sources, so that downstream components can perform meta operations and discovery.
[x] Update wait-for-CRDs mechanism in Galley to wait for the complete set it expects, but not to fail if some of the CRDs are not found.

This is mostly done at this point, with the new config code.
https://github.com/istio/istio/pull/17121
The only missing thing is a new collection that can publish the set of available collections for discovery purposes (which is not critical to current deliverables).


WordsPlusPunc, GetWordsAndEmoticons,... : Might be replaced with Regex

I'm still pondering, however, it might be replaced with a regex. You want to check if your list contains this word + punctuation?

Hey bud, cheers for the idea but it seems that regex is actually significantly slower for this situation. Can you check out the comments on the pull req?
Changes to SentimentUtils are good though if you want to submit them separately


Bug: Attempt to perform arithmetic on a nil value while editing a Markdown file

I was editing a markdown file when I started getting the following error from ultimate-autopair while I was typing:
...e-autopair.nvim/lua/ultimate-autopair/extension/utf8.lua:89: attempt to perform arithmetic on a nil value
stack traceback:
	...y/ultimate-autopair.nvim/lua/ultimate-autopair/debug.lua:77: in function '__sub'
	...e-autopair.nvim/lua/ultimate-autopair/extension/utf8.lua:89: in function '_decoloffset'
	...y/ultimate-autopair.nvim/lua/ultimate-autopair/utils.lua:127: in function 'gettsnodepos'
	...autopair.nvim/lua/ultimate-autopair/extension/tsnode.lua:71: in function 'set_in_node'
	...autopair.nvim/lua/ultimate-autopair/extension/tsnode.lua:109: in function <...autopair.nvim/lua/ultimate-autopair/extension/tsnode.lua:107>
	[C]: in function 'xpcall'
	...y/ultimate-autopair.nvim/lua/ultimate-autopair/debug.lua:97: in function 'run'
	...zy/ultimate-autopair.nvim/lua/ultimate-autopair/core.lua:96: in function <...zy/ultimate-autopair.nvim/lua/ultimate-autopair/core.lua:87>
(Ingore the line bellow) press y to start debugger (or c to copy traceback):

It traces the error back to this line:
https://github.com/altermo/ultimate-autopair.nvim/blob/0f8b4da87f56667e138adb3a259ecc18ef1b9785/lua/ultimate-autopair/extension/utf8.lua#L89
I was editing a 600+ line README file which I managed to trim down to the following 8 lines:

Write here

 ⬆

## Authors 🧑💻

By writing in the "Write here" part, or inserting a carriage return, the same error appears and typing becomes slow and laggy.
I have the latest version (v0.6) and reproduced with a minimal config consisting of just this plugin.

fixed

Awesome. Thanks for the fast fix!


Black window on Debian-based GNU/Linux

Hi!
I've tried to run it on a Debian-based GNU/Linux system (PureOS, to be specific), and it seems that the rendering doesn't work:

The REPL is started, and no exception is printed:
$ ./script/run.py
nREPL server started on port 36783 on host localhost - nrepl://localhost:36783
nREPL 0.9.0
Clojure 1.11.0-rc1
OpenJDK 64-Bit Server VM 11.0.13+8-post-Debian-1deb11u1
Interrupt: Control+C
Exit:      Control+D or (exit) or (quit)
user=>

Extra system info:
$ uname -a
Linux puffy 5.10.0-11-amd64 #1 SMP Debian 5.10.92-1 (2022-01-18) x86_64 GNU/Linux

$ lsb_release -a
No LSB modules are available.
Distributor ID:	PureOS
Description:	PureOS
Release:	10.0
Codename:	byzantium

$ echo $XDG_SESSION_TYPE
wayland

Any debugging suggestions?

Same thing happens on my Ubuntu Budgie 21.10 system.
The workaround seems to be simple: resize the window. After explicit resize, the window content gets rendered correctly and app starts to behave as expected. Resizing of the window is a bit choppy compared to what I've seen in one of Nikita's videos - but hey, it's a start.
$ uname -a
Linux brdloush-nb 5.13.0-28-generic #31-Ubuntu SMP Thu Jan 13 17:41:06 UTC 2022 x86_64 x86_64 x86_64 GNU/Linux

$ lsb_release -a
No LSB modules are available.
Distributor ID:	Ubuntu
Description:	Ubuntu 21.10
Release:	21.10
Codename:	impish

$ echo $XDG_SESSION_TYPE
x11

Basically an additional call to something like...
(window/set-window-size 640 400)

.. in user/make-window is what's needed to fix the app startup on my linux distro.

@brdloush ah, thanks — that helps on my system as well :)
PS: the floating window flag doesn't work either, the window doesn't stay on top.  Where to report it best — create a new issue?

Thanks, I’ve seen that behaviour on Linux, I will take a look soon.

the floating window flag doesn't work either, the window doesn't stay on top. Where to report it best — create a new issue?

There’s an issue for that https://github.com/HumbleUI/JWM/issues/166, looking for the contributor :)


minor: remove the unnecessary cast

What changes were proposed in this pull request?
Remove the unnecessary cast
How was this patch tested?
existing tests

Please rebase on the latest gluten code. We have some new changes in the repo, necessary for functionality tests & UT.

Please rebase on the latest gluten code. We have some new changes in the repo, necessary for functionality tests & UT.

Updated. But I can not figure out why the CI failed

It looks the order matters in handling HashJoinLikeExecTransformer's streamedPlan & buildPlan. Please revert the change for HashJoinLikeExecTransformer and let' try again.
       // according to the substrait plan order
        plan match {
          case shj: HashJoinLikeExecTransformer =>
            transformChildren(shj.streamedPlan, basicScanExecTransformers)
            transformChildren(shj.buildPlan, basicScanExecTransformers)
          case t: TransformSupport =>
            t.children
              .foreach(transformChildren(_, basicScanExecTransformers))
        }


Add correct auro3 d sound modes

Cleaned up the incorrect modes. Sorry for that.
Added the correct ones:
~/Dev/denonavr (master) $ python3
Python 3.8.5 (default, Jul 21 2020, 10:48:26)
[Clang 11.0.3 (clang-1<IP_ADDRESS>)] on darwin
Type "help", "copyright", "credits" or "license" for more information.
>>> import denonavr
>>> d = denonavr.DenonAVR("<IP_ADDRESS>", "Denon1")
>>> d.set_sound_mode('AURO3D')
True

After the last call mode is changed to AURO-3D on the receiver.

No worries and thank you 😃


use identity.main()

to get the current id instead of
https://github.com/evbogue/minbay/blob/master/index.js#L3
should just use identity.main() as this how we will support multiple ids

@dominictarr Done. 69d160c248b3a09b387a73692ae0ee854339a0c6


[#2962] feat(catalog-lakehouse-iceberg): Add reserved properties to Iceberg Table Properties in Gravitino

What changes were proposed in this pull request?
Add reserved properties to Table properties when load an Iceberg table, such as:
provider,
format,
current-snapshot-id,
location,
format-version,
sort-order,
identifier-fields

Why are the changes needed?
for example, when execute desc extended IcebergTableName，it will get some information from the result properties of this Iceberg table, so it should contain the above properties.
Fix: https://github.com/datastrato/gravitino/issues/2962
Does this PR introduce any user-facing change?
No.
How was this patch tested?
New UTs and ITs.

Hi @FANNG1 could you please help review this PR when you are free? Thanks!

Hi @FANNG1 could you please help review this PR when you are free? Thanks!

ok

LGTM, except 2 comments, @caican00 could you fix it?

LGTM, except 2 comments, @caican00 could you fix it?

@FANNG1 all comments have been addressed.

@caican00 merged to main, thanks for you contribution!


docs: search guides by content instead of tags

This will replace the guides filter by tag for a content based search.
This makes it easier for the user to find what it's looking for, improving UX.
@vikram-dagger from the presentation side, I don't see a clash between the docs search and the guides search.
The only downside of having two searchbars in the same page, is that CTRL+K may have an odd behavior.
I don't think it's a blocker though, we can merge this IMO. I'll follow up with a fix for that.
Closes #4701

@shykes it would be great to have your feedback on this one

Sorry for missing. Sounds good in theory, any way we can preview the result? Also, should we consider both? Searching by content makes sense (assuming no confusion from double-search-above as discussed above). But perhaps sometimes filtering by tag is useful too? I've definitely used it a few times, and even shared a resulting link to a user on twitter.

Here's the preview URL

perhaps sometimes filtering by tag is useful too

I agree it's a good feature, mostly because of the shareable URLs.
In case we want to have both, I think the best way would be by integrating the tags inside DocSearch, I have no implementation for it at the top of my head, but I know Algolia supports filtering and the crawler can be configured to handle tags.
LMK if I should look into it and come back with an update!


id_modifier error

I'm trying to use id_modifier to add transaction ID to header, and configured KrakenD like this.
"extra_config": {
  "github.com/devopsfaith/krakend-martian": {
    "header.Id": {
      "scope": ["request"]
    }
  }
}

But KrakenD is giving me error like,
2021/09/01 09:09:37 [Recovery] 2021/09/01 - 09:09:37 panic recovered:
runtime error: invalid memory address or nil pointer dereference
/usr/local/go/src/runtime/panic.go:212 (0xd4e35a)
/usr/local/go/src/runtime/signal_unix.go:734 (0xd67512)
/go/pkg/mod/github.com/google/martian@v2.1.1-0.20190517191504-25dcb96d9e51+incompatible/context.go:185 (0x1790d38)
/go/pkg/mod/github.com/google/martian@v2.1.1-0.20190517191504-25dcb96d9e51+incompatible/header/id_modifier.go:53 (0x1790d2a)
/go/pkg/mod/github.com/devopsfaith/krakend-martian@v1.4.0/martian.go:102 (0x179b2f8)
/go/pkg/mod/github.com/devopsfaith/krakend-martian@v1.4.0/martian.go:63 (0x179c1a4)
/go/pkg/mod/github.com/luraproject/lura@v1.4.1/proxy/http.go:68 (0x10ed22f)
/go/pkg/mod/github.com/luraproject/lura@v1.4.1/proxy/balancing.go:76 (0x10ebfb6)
/go/pkg/mod/github.com/luraproject/lura@v1.4.1/proxy/http.go:109 (0x10ed950)
/go/pkg/mod/github.com/luraproject/lura@v1.4.1/router/gin/endpoint.go:40 (0x191d611)
/go/pkg/mod/github.com/gin-gonic/gin@v1.7.2/context.go:165 (0x1917a79)
/go/pkg/mod/github.com/gin-gonic/gin@v1.7.2/recovery.go:99 (0x1917a60)
/go/pkg/mod/github.com/gin-gonic/gin@v1.7.2/context.go:165 (0x1916b53)
/go/pkg/mod/github.com/gin-gonic/gin@v1.7.2/logger.go:241 (0x1916b12)
/go/pkg/mod/github.com/gin-gonic/gin@v1.7.2/context.go:165 (0x190cd09)
/go/pkg/mod/github.com/gin-gonic/gin@v1.7.2/gin.go:489 (0x190ccef)
/go/pkg/mod/github.com/gin-gonic/gin@v1.7.2/gin.go:445 (0x190c7db)
/go/pkg/mod/github.com/rs/cors@v1.6.0/cors.go:207 (0x1e2d910)
/usr/local/go/src/net/http/server.go:2069 (0x10acc43)
/go/pkg/mod/github.com/rs/cors@v1.6.0/cors.go:207 (0x1e2d910)
/usr/local/go/src/net/http/server.go:2069 (0x10acc43)
/usr/local/go/src/net/http/server.go:2887 (0x10b0302)
/usr/local/go/src/net/http/server.go:1952 (0x10ab72c)
/usr/local/go/src/runtime/asm_amd64.s:1371 (0xd88e40)

Is my configuration wrong? or is it a bug?

Hey, have you found the solution? Facing the same issue..

we'll create a replacement for the modifier in the next minor release (v2.1.0)

Hey! We just deployed v2.1.0 and Martian configurations don't work anymore. Not sure why but this seems related. Did something happen? I have a hard time finding the culprit code 😄

Hi @mzanibelli
If your issue is not related to the id_modifier, can you open a new issue an share all the details you can? Example configuration, requests, response, etc
Thank you!

Follow up here. Sorry for the noise.


Namespace selector closes when you select an option

Previously, the namespace selector allows you to select multiple - clicking an option keeps the dropdown open.
This behvaiour no longer works and clicking a namespace/project closes the dropdown rather than keeping it open

On 2.5.8-rc1
Reproduced the issue

In the namespace dropdown, select a namespace, dropdown closes

On 2.5-head commit id: 9b0058c

In the namespace dropdown, select a namespace, user is able to select multiple namespaces without the dropdown getting closed.


refactor!: Reimplement stream without split

Pull Request Test Coverage Report for Build<PHONE_NUMBER>9
Details

36 of 43 (83.72%)  changed or added relevant lines in 2 files are covered.
3 unchanged lines in 1 file lost coverage.
Overall coverage increased (+7.4%) to 88.412%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/stream.rs
34
41
82.93%

Files with Coverage Reduction
New Missed Lines
%

src/stream.rs
3
78.72%

Totals

Change from base Build<PHONE_NUMBER>3:
7.4%

Covered Lines:
1030

Relevant Lines:
1165

💛  - Coveralls

Any news about this refactor? I may need sth similar for time-lib, where a TcpStream is used for both reading and writing, and compatible with tokio or async-std.

If it's blocking you, then I'll continue to work on this.
How do think compatibility with async-std can be achieved? Currently this PR proposed to depend on tokio::io::AsyncRead and tokio::io::AsyncWrite. So I think it's not compatible with async-std.

If it's blocking you, then I'll continue to work on this.

No don't worry, it's not blocking me. Yet it could be a great addition for few libs of mine, including imap-client.

How do think compatibility with async-std can be achieved? Currently this PR proposed to depend on tokio::io::AsyncRead and tokio::io::AsyncWrite. So I think it's not compatible with async-std.

In time-lib I used futures::Async{Read,Write}. I just needed to write some compatibility layer between tokio and async-std.
I liked your Sans IO approach, I don't know if it could be applicable here, for stream. By default only the stream is exposed, then every feature could expose an IO implementation like tokio-native-tls, or async-std-rustls etc.

Did you initiate a dedicated repo for the stream, as you discussed one? If not then I can definitely start it and invite you guys.

I created the repo tokio-maybe-tls. I'll invite you once the CI is ready.

TIL https://docs.rs/tokio-util/latest/tokio_util/compat exists


Publish to crates.io

Would love to be able to do cargo install ytop!

Which dependencies are you waiting on?

Just tui, and actually it's blocked on me fixing the pull request. I'll try to get to that when I have some time or just pull the code back into ytop for the time being so we can publish it to crates.io.

I pulled my changes back into ytop, but now we need to upgrade tui and there were some breaking changes in the latest release, so it's going to take some work to upgrade. See #69 for an issue relating to upgrading tui.

ytop is now published on crates.io!


A tiny puppet change

The puppet challenge expects the attackers balance to be greater than the initial pool balance.
https://github.com/tinchoabbate/damn-vulnerable-defi/blob/82b6049452c387235ee0b452b0de9f3dca88c072/test/puppet/puppet.challenge.js#L117
This is unlike puppet-v2 where the correct test is made.
https://github.com/tinchoabbate/damn-vulnerable-defi/blob/82b6049452c387235ee0b452b0de9f3dca88c072/test/puppet-v2/puppet-v2.challenge.js#L97
This leads to a more convoluted solution requiring either the attacker swap tokens more than once or only sell some of his tokens.

Thanks for the suggestion! I incorporated this in v3.


Upgrade xdotool's delay parameter

I had an issue with the -t feature, it was working in some applications like the terminal or pcmanfm but not in Firefox.
I found an issue about that at xdotool and noted that it's related to performance or/and the rate/dealy setting in x (xset r rate [dealy] [rate]).
The solution for my setup was to upgrade the delay in bemoji's code to 450.
diff --git a/bemoji b/bemoji
index a472e0e..ca6af2c 100755
--- a/bemoji
+++ b/bemoji
@@ -253,7 +253,7 @@ _typer() {
     if [ -n "$WAYLAND_DISPLAY" ] && command -v wtype >/dev/null 2>&1; then
         wtype -s 30 "$totype"
     elif [ -n "$DISPLAY" ] && command -v xdotool >/dev/null 2>&1; then
-        xdotool type --delay 30 "$totype"
+        xdotool type --delay 450 "$totype"
     else
         msg "No suitable typing tool found."
         exit 1

It may be useful to start with a higher delay per default and let the user change it with something like a new env BEMOJI_TYPE_ARGS.

Hi @tkapias , thanks for the issue!
I believe the input delay depends a little on the PC specs as you mentioned, though I didn't know that it is also dependent on repeat rate settings.
I remember putting it low originally because I believe a high delay also means fairly slow input of the individual characters, no (As in, it waits half a second per letter with 450)? Unfortunately don't have access to an X11 desktop right now to check.
However, I think whatever we ultimately decide for the default delay settings, I think your suggestion of a new env var to control it in general is a good one. If possible it would probably be best to create something like a BEMOJI_TYPE_DELAY which encompasses both xdotool and wtype to generalize a bit for both X and wayland.
I will probably not have that much time to implement it in the next couple weeks but if you want to give it a try for a PR I could review it in the near future. Otherwise I'll have it on my radar for future implementation as well.

I will do some tests on a low-end and a more recent hardware, with both delay and rate, to give you more feedback.


View stays black when using multiple DecoratedBarcodeViews

When i try to use more than one Fragment with DecoratedBarcodeView the SurfaceView on the first tab stays black.
After changing orientation or switching tabs everything works fine.
I could also reproduce the issue with a slightly modified version of your sample project.
Just use two ScanFragments in the SectionsPagerAdapter in TabbedScanning.java.
@Override
        public android.support.v4.app.Fragment getItem(int position) {
            if(position == 0) {
                return ScanFragment.newInstance();
            } else {
                return ScanFragment.newInstance();
            }

        }

When this happens I also get the following error:

02-22 09:37:42.164 20935-20974/example.zxing E/CameraInstance: Failed to configure camera
java.lang.RuntimeException: getParameters failed (empty parameters)
at android.hardware.Camera.native_getParameters(Native Method)
at android.hardware.Camera.getParameters(Camera.java:3099)
at com.journeyapps.barcodescanner.camera.CameraManager.setParameters(CameraManager.java:379)
at com.journeyapps.barcodescanner.camera.CameraManager.configure(CameraManager.java:159)
at com.journeyapps.barcodescanner.camera.CameraInstance$4.run(CameraInstance.java:203)
at android.os.Handler.handleCallback(Handler.java:836)
at android.os.Handler.dispatchMessage(Handler.java:103)
at android.os.Looper.loop(Looper.java:203)
at android.os.HandlerThread.run(HandlerThread.java:61)

Would be glad if you can resolve this issue.
Best regards
woodii
Which library version are you using? 3.5.0
Which phone/tablet are you using, and which Android version does it run? (e.g. Samsung Galaxy S5,
Android 5.0)
Gigaset S270 plus (Android 7.0)
Emulator Nexus 6P (Android 8.0)
Does the same happen on other devices or an emulator?
both
Can you reproduce the issue in the sample project included with the library? If not, can you
provide your own sample project or sample code that produces this error?
yes with a slightly modified version of your sample
In the case of an error do you have a stack trace or adb logs?
https://pastebin.com/q6V75kcn

In general, you'll get that issue when the app tries to open a second camera instance while another one is still in use.
Since this library does camera operations in a background thread, instead of the main thread, this can sometimes be tricky for cases like this. That's why the tabbed example in this project calls barcodeView.pauseAndWait() instead of barcodeView.pause().
I can see from your logs that there are two calls to CameraPreview#resume() happening shortly after each other. This is not supposed to happen if the tab is not visible. If you can figure out why that is happening, it may help to debug this issue.

Thank you for your fast reply.
yeah i had similar ugly issues with the google vision api (which I tried to use before)
Even with mViewPager.setOffscreenPageLimit(0); both Fragments are being crated when you open the TabbedScanning activity.
The following methods are being called during that:
3x setUserVisibleHint (2x first fragment, 1x second fragment)
2x onCreateView
2x onResume of each fragment which calls barcodeView.resume().

I guess a have found a workaround for that problem:
in setUserVisibleHint you have to assign a local field.
private boolean isVisibleToUser = false;

public void setUserVisibleHint(boolean isVisibleToUser) {
    super.setUserVisibleHint(isVisibleToUser);
    this.isVisibleToUser = isVisibleToUser;
    ...

and check this value in onResume
@Override
public void onResume() {
    super.onResume();
    if (isVisibleToUser)
        barcodeView.resume();
}

I have tested this now on 2 different devices and haven't encountered any other problem after changing the screen orientation or minimizing the app.
Thank you for your tip with resume ;)

@woodii Sorry to bother you, but I have the same problem and can't figure out how to solve it, Do you maybe have a working example to share?

The current Tabs example is working, use that as an example to start with.


Force exact size for hex decoding

This removes an issue where you'd accidentally not specify enough
characters and get zeros filled in at the end. This only affects MBR
bootstrap binaries.

Coverage increased (+0.02%) to 86.147% when pulling 7be7307391b2e6898ecc163c74b2e85626972cb1 on hex-exact into aee4cda71a78b3d7cbb497bff4664d30e89c2db0 on master.


GitHub Actions

We already have sync logic.
Run this sync logic via GitHub Actions.

CORN
manual trigger

disabled state under the GitHub's state
https://docs.github.com/en/free-pro-team@latest/actions/managing-workflow-runs/disabling-and-enabling-a-workflow

cron-sync-cr.yml


Page load functions should return props via derived stores

Describe the problem
Having a single load function which loads all of the data for a page means that you cannot reload part of the pages contents. If the user performs an action that invalidates part but not all of the page one has to reload the route which will fetch all of the data for the page. This means that the app will make more database and storage calls than necessary. If the props returned by the load function are not primitive values svelte will also re-render pretty much the entire page even if only a single only component needs updating. Because even if the returned props have equal values svelte is only able to check equality for primitive values.
This means that to get partial updates in pages we have to duplicate the load logic in event handlers in the page. The partial updates however will not be available to users with no Javascript so the developer is forced to handle that case separately. It would be much better if load only made the fetches that it needed to based on its inputs.
Describe the proposed solution
Instead of the load function returning a props object with a value specified for each component prop the load function should instead return a props object with a store specified for each component prop. This would also require that objects passed into the load function are stores.
Consider the following example load function in my proposed 'store style' for a hypothetical (and somewhat contrived) social network example where the user navigates between posts but and the user's profile information is displayed in the top corner of each page.
export const load = ({ request, stuff, url, session, status, error, params, fetch }) => {
  const post = derived([params], async ([$params], set) => {
    const postResponse = await fetch(`posts/${params.postId}.json`);
    const postData = await postResponse.json();
    set(postData);
  });
  const userProfile = derived([session], async ([$session], set) => {
    const userProfileResponse = await fetch(`userProfile.json?sessionId${$session.sessionId}`);
    const userProfileData = await userProfileResponse.json();
    set(postData);
  });
  return {
    props: { post, userProfile }
  }
}

Every time the user navigates to a different post the params store is updated causing the new post data to be fetched using the new postId. Any components that depend on the post prop will then be updated. However because the session has not changed the user profile does not need to be refetched. And since the userProfile store does not get updated any components that only depend on the userProfile prop don't need to be updated.
Alternatives considered
No response
Importance
would make my life easier
Additional Information
No response
Edit: Fixed some errors in my writing. I was a bit tired when I wrote this.

Note that once https://github.com/sveltejs/kit/pull/5778 (which implements https://github.com/sveltejs/kit/discussions/5748) is merged, the return values of load functions are going to change dramatically. Instead of returning a props object, load functions will be simply returning the data values that the page will need. There's also a plan to remove the stuff argument entirely so that load functions can be parallelized: the load for the layout will run at the same time as the load for the page, (You can opt back into getting values passed down from parent components by using await parent() instead of the stuff parameter, so if you need that it's still there).
Most importantly, there's also a feature where if the data used in the layout's load function changes, it won't re-run the load function for the page. Which means that you should be able to get what you want by careful splitting of your design between different layouts, which could then "depend" on each other via the named-layout feature. I.e., +layout-userprofile.svelte could return just the props needed for the user profile, and<EMAIL_ADDRESS>could load the data for the post the user navigates to. Because it "inherits" from the userprofile layout, its HTML will be placed inside the HTML for the user profile (so the user profile div will be the outer div, and the post will be the inner div, which is how I expect this would be laid out). But because load() functions will run indepedently from each other (and in parallel), you won't need to reload the user's profile when the navigate to a different post.
Note that this is all theoretical at the moment, and the design might go in a different direction by the time it's done. You can watch https://github.com/sveltejs/kit/pull/5778 to see how the implementation of #5748 is progressing. But once that change goes in, I think you'll be able to achieve the result you want just by having different parts of your site load only the data that they themselves need.

For my hypothetical example indeed splitting things into nested layouts would indeed work. However note that there will be many cases where the page itself has multiple different fetches some of which may need be updated and others not.
Consider the example of a dashboard where the user has multiple configurable widgets. The user may want to change one of the widgets without changing the others. All of those widgets operate a the same level in the data model so implementing  them via nested layouts would be a strange and confusing way to organise the code.
Relying on nesting is limiting and will not fit some large number of use cases.

This API would force everyone to do the complex case for simple cases. I hear you though, it would be nice if there was some way to have this more fine-grained. It would probably only apply to the browser though, since with serverless environments you start fresh often, and with a node server you could overflow your cache fast.
When we say "this is a browser only feature", then it could be possible to solve the "avoid refetch" use case in userland:
import { browser } from '$app/env';

let lastParams;
let cached;
async function refetchIfParamsChanged(fetch, newParams) {
  if (!browser) {
    return fetch();
  }
  if (!equals(lastParams, newParams) {
    cached = await fetch();
    lastParams = newParams;
  }
  return cached;
}

export async function load({ params, fetch }) {
  const data = await refetchIfParamsChanged(() => fetch('/some-api-call'), params);
  return data;
}

Unfortunately the proposed API is a non-starter due to its complexity, and because it would cause 'tearing' (post and userProfile would update separately, even if they're invalidated at the same time).
The per-load invalidation is good enough for the vast majority of apps, and allows us to have a super-simple API. It's possible to solve this in userland in a variety of ways, as demonstrated above, so on the basis that 'simple things easy, hard things possible' is better than 'simple things hard, hard things hard' I'm going to close this as wontfix.


Prefill on edit doesn't work

Description
When opening the edit measurement dialoge through the edit button a normal add measurement dialoge is opened.
Android version
Android 9, 14
Reproduction steps
1. Add measurement
2. tap edit button in list

App debug info
v1.6.0

thx for adding the bug to the buglist.
...and sorry, i`ve forgot something: great app!
Greetz Tom


[Feat] - Hello how I set to different request codes on same activity and on results after that???

I want to add two different request codes to the same activity but it is only giving one
public static final int PICK_IMAGE_CHOOSER_REQUEST_CODE = 200;
I cannot use the same CHOOSER on both image pickers.

Hey @fivedofficial  thanks for the question.
I will move this under Discussion - Q&A
if in the end of the discussion we realize we need a new feature or bug fix we can open an issue for this =).
====
Now, about your question, can you show the code you are calling?
The code related to PICK_IMAGE_CHOOSER_REQUEST_CODE is to be sure you get the answer from our activity.
The idea about activities is that you call the activity with the request code and get the value back based on the request code, I don't see the need for having two request code on the same time. But what could be possible is to give the user a choice of override the default request code. Would not be hard to do this!
Just need to understand better what this is about =)
Thanks!


Bug Fix on Windows changing /USER~1/ to /User Name/

🌈
This is to fix a bug that I (and others, see rspec#1555, rspec#1577, rspec#1747 and rails#27129) have experienced when running rails generate rspec:install on a windows machine.
Ruby creates a tmpdir with /USER~1/ and then thor uses another method, files(lookup), that converts it to /User Name/ and tries to compare the two and gsub it out when it assigns it to file_destination. My fix, though a little hacky (I'm new to Ruby and don't really know of a better way in all honesty) works and shouldn't create problems elsewhere as far as I can see.

Hey, great that you have looked into this. I'm a bit concerned about the fix because the regex assumes ~1 to proceed username but what about legitimate file paths that contain such characters? Also I would encourage you to write a test that demonstrates this problem/fix.

Hey Piotr, thanks for your feedback. I have a different approach to this now - replacing the file path that is created by Dir.glob with it's original stored in lookup. I also have it only performing the replacement when it sees a windows environment variable for username (which I can imagine is the only use case for this). I'll write a test before pushing it up, but that will be after work 😞 !

I'm questioning myself right now as to whether this is the right fix!! It is essentially a work around rather than a fix. For example, this issue could be remedied in this part on thor, or on rspec which is creating the tmpdir file path before it is sent to thor.
It is essentially Dir.glob(lookup, File::FNM_DOTMATCH) that is making the change from USER~1 to User Name, so is there another method that could replace this that doesn't make that change??

Ok, digging more unearths that this is something that has arisen since Ruby 2.3. See Ruby Issue #10819 referenced from Puppet pull-request #5156.
Also struggling to figure out what exactly I need to test for with this (I'm new to writing tests and all that!).

Any uodate in this

Any update on this? still can't run rspec:install on windows machine


feature: added rpc for estimateSmartFee

What kind of PR is this?:

/kind feature
What this PR does / why we need it:
Implemented RPC for #48

mining.estimatesmartfee

Which issue(s) does this PR fixes?:

Fixes #
Additional comments?:

don't use semantic convention either, just stick to PR purpose


Updade jest to 24, and update tests

Hi, i'd like to use jest 24 with my serverless projet, here is a PR, i updated the test, everything is green :)

Up @artoliukkonen :)

If you'd like to get to Jest v24 and the latest Serverless, you could try out https://github.com/fireeye/jest-environment-serverless - it's actually able to execute the tests quite a bit faster as well since it's not rerunning Jest separately.

This is blocking me from using this project. I need to use Jest 24 because I'm depending on Babel 7.
Here's the error I get:
Requires Babel "^7.0.0-0", but was loaded with "6.26.3". If you are sure you have a compatible version of @babel/core, it is likely that something in your build process is loading the wrong version. Inspect the stack trace of this error to look for the first entry that doesn't mention "@babel/core" or "babel-core" to see what is calling Babel

If I hack the package.json to bump the Jest version, it fixes it.

@polem Were there any reasons why this PR was not merged?

@aaronmcadam no news from the maintener sorry

Thanks @polem. That's a shame. Looks like we'll have to use https://www.npmjs.com/package/patch-package

I wonder if these plugin repos should be moved to the serverless organisation anyway

cough cough wink wink https://github.com/fireeye/jest-environment-serverless

#30


Reduce the environment load time

The current environment load time is about 20 mins. Would like to see if we can run in less time. If we can run two environment at the same time, this becomes a lower priority.
Priority for demo: Medium or Low if ability to run dual environments.

this probably takes a while unnecessarily
$ nl  ../../nando_automation_demo/cloudformation.json |grep "yum -y update"
   573	                "command": "yum -y update"

depends on: https://github.com/stelligent/nando_automation_demo/issues/2

This is good to go. A full stack is 30 minutes. Consecutive stacks will re use vpc/sg/rds and will take 15 minutes to build.


Skip redshift test cases in CI

There is an upstream issue for redshift cluster type - dc2
Error:
`UnicodeDecodeError: 'utf-8' codec can't decode byte 0xf0 in position 122: unexpected end of data` Can you please explain why is that the case?

ref - https://github.com/astronomer/astro-sdk/actions/runs/5355001227/jobs/9712737921?pr=1974
Case created with AWS: https://support.console.aws.amazon.com/support/home?region=us-east-2#/case/?displayId=12988936661&language=en
Awaiting response till then we are skipping the tests

Thank you very much, @utkarsharma2 , for looking into this!

There you go -  https://github.com/astronomer/astro-sdk/issues/1976


Add build instructions to readme

This seems useful to know. 😛

Thanks for this tip! +1 on this, although even better might be to integrate it into package.json as a script.

Fixed in edb7774cf2cd2ba646d63459aaa8fffab0b7dc86.


⚠ Bofrost.be has degraded performance

In 1eca79d, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 1402 ms

Resolved: Bofrost.be performance has improved in fde1c2d.


Contributed Clev Calc project basically in short it as a scintific calculator based project but it not just calculates but has lot many other applicationsThank you.

…lculator based project but it not just calculates but has lot many other applications, Thank you.
Description
Please provide a summary of your project or the changes related to the issue. Include relevant motivation and context to help us understand the purpose and impact of your work.
List your tech stack and any dependencies that are required for this change. This information will help us review and integrate your contributions effectively.
Type of change

[ ] New Project
[ ] Issue fix

Checklist:

[ ] I have included a README.md file for my project clearly explaining its purpose, functionality, and usage instructions (applicable for new projects, not bug fixes).
[ ] My code adheres to the style guidelines outlined by this project.
[ ] I have thoroughly reviewed my code to identify and address any potential errors or inconsistencies.
[ ] I have added clear and concise comments to my code, especially in sections that might be challenging to understand at first glance.
[ ] I have reviewed and followed the project's Contributing Guidelines to ensure my contribution aligns with the project's requirements.

@ashish5kmax You are not following the repo guidelines and also violating the PR request format ⚠.
You are advised to follow the guidelines strictly and we will definitely accept your PR. Thank You 🤝