Forward LCtrl and Shift to the device

This is a follow up of #1446.
To improve usability, the goal of these changes is to forward Ctrl and Shift keys to the device.
This allows for example to press Ctrl+t in Firefox to open a new tab or to press Ctrl+c or Ctrl+d in Termux. This also allows to select text using the keyboard (Shift+arrows, Ctrl+a…), and simplify copy-paste (Ctrl+c, Ctrl+v) and cut-paste (Ctrl+x, Ctrl+v).
Here is the list of the changes:

all shortcuts now use the RCtrl (right Ctrl) key instead of any Ctrl key, on all platforms
in addition, on macOS, Cmd can be used (for shortcuts which are not already captured by the system) as before
LCtrl (left Ctrl) and Shift(both left and right) are forwarded to the device
to copy a text, Ctrl+c works, because it is forwarded to the device, which, in a text field, copy the text into the clipboard… and the clipboard is now automatically (since v1.13) synchronized with the computer keyboard.
for convenience, and as special cases, RCtrl+c (Cmd+c) and RCtrl+x (Cmd+x) are forwarded to the device as Ctrl+c and Ctrl+x
pressing LCtrl+v synchronizes the computer clipboard to the device before sending the key event, therefore pasting works seamlessly (and the old Ctrl+Shift+v shortcut has been removed)
RCtrl+v injects the computer clipboard content as a sequence of text events (this is still useful sometimes)
to support "cut" RCtrl+x, I changed the "resize to fit" (the shortcut which removes the black borders) from RCtrl+x (oldly Ctrl+x) to RCtrl+w
seamless copy-paste now also works before Android 7

This fixes #555 and #942.
Feedbacks welcome :)
Binaries
For windows users, take both scrcpy.exe and scrcpy-server, and replace them in your scrcpy v1.14 release.
For other platforms, take scrcpy-server and build only the client.

scrcpy.exe
SHA256: a22661070827d47a08618bcaf8550688aa2c56b0053251ba45cebee5b9b45850
scrcpy-server
SHA256: 62f3cb793c8398e0f55f5e98be438be0c238ddb94efbdbbf0f76b7522ee51264

This works great! Any way to get ALT key forwarded as well?

Any way to get ALT key forwarded as well?

I tested it, but when I press Alt+tab on my computer, it presses it both on the device and the computer, which is unexpected (Debian with XFCE on X11).
AltGr+tab works on the device though… (but it seems weird to forward AltGr only to avoid conflicts, and it would be inconsistent with forwarding left control).
You could test on your computer, and share your feedback:
diff --git a/app/src/event_converter.c b/app/src/event_converter.c
index 82b0501..94b5966 100644
--- a/app/src/event_converter.c
+++ b/app/src/event_converter.c
@@ -95,6 +95,8 @@ convert_keycode(SDL_Keycode from, enum android_keycode *to, uint16_t mod,
         MAP(SDLK_LCTRL,        AKEYCODE_CTRL_LEFT);
         MAP(SDLK_LSHIFT,       AKEYCODE_SHIFT_LEFT);
         MAP(SDLK_RSHIFT,       AKEYCODE_SHIFT_RIGHT);
+        MAP(SDLK_LALT,         AKEYCODE_ALT_LEFT);
+        MAP(SDLK_RALT,         AKEYCODE_ALT_RIGHT);
     }

     if (!(mod & (KMOD_NUM | KMOD_SHIFT))) {
diff --git a/app/src/input_manager.c b/app/src/input_manager.c
index 3e932a5..cbfaa74 100644
--- a/app/src/input_manager.c
+++ b/app/src/input_manager.c
@@ -270,7 +270,6 @@ input_manager_process_key(struct input_manager *im,

     bool lctrl = event->keysym.mod & KMOD_LCTRL;
     bool rctrl = event->keysym.mod & KMOD_RCTRL;
-    bool alt = event->keysym.mod & (KMOD_LALT | KMOD_RALT);
     bool meta = event->keysym.mod & (KMOD_LGUI | KMOD_RGUI);
     bool shift = event->keysym.mod & (KMOD_LSHIFT | KMOD_RSHIFT);

@@ -284,11 +283,6 @@ input_manager_process_key(struct input_manager *im,
     }
 #endif

-    if (alt) {
-        // No shortcuts involve Alt, and it is not forwarded to the device
-        return;
-    }
-
     struct controller *controller = im->controller;

     SDL_Keycode keycode = event->keysym.sym;

I use editors on Android and they use alt key combos for switching tabs, etc.
I would be happy to try out the above code but I don't have any tooling on my win10 machine to build project. Can you post binaries like above possibly?

Here are binaries with Alt and AltGr forwarding enabled:

scrcpy.exe
SHA256: 1d56fcf25658574ec84dbbd4ff26b1e03a9309e36b8f33d4627ff14f6514f67e
scrcpy-server
SHA256: 62f3cb793c8398e0f55f5e98be438be0c238ddb94efbdbbf0f76b7522ee51264

The behavior depends on the device ROM. For example, on OxygenOS, pressing/releasing Alt opens the emoji keyboard and AltGr the normal keyboard. Long-pressing Alt then pressing tab triggers app switching on the device (in addition to app switching on the computer, which is annoying). AltGr+tab triggers app switching on the device only.
A compromise could be to forward keys when the Alt modifier is set, without sending the Alt events themselves (but it would be inconsistent with Ctrl and Shift):

scrcpy.exe
SHA256: 9c69941eb692aeb3977e7b79e6180d0f1691f1a8123e1baa94f063ad6e3ac667
scrcpy-server (it's the same)
SHA256: 62f3cb793c8398e0f55f5e98be438be0c238ddb94efbdbbf0f76b7522ee51264

The first binary above is sending alt to device, but it wont let me send a key combo (eg. alt+t) it sees the alt button being pressed but doesnt see the 't' while holding down alt.
The second binary doesnt seem to register any alt keys at all.

Probably because your system/window manager captures and prevents it to be passed to SDL/scrcpy.
What about AltGr+t? (or AltGr+tab)

it sees the alt button being pressed

(What do you use to see that?)

I use a combo of micro editors raw input mode (to look at keystrokes) or online keyboard testers

So it confirms that Alt should not be forwarded IMO.

I wonder if they're is a way to do it like virtual machine software does (eg. Vmware), where you press a key combo (eg. Ctrl+Alt+h) and all keys are sent to device until that combo is pressed again?

It works nice for me, except for one small case:
I can't paste from computer clipboard to Android termux app. Ctrl-v syncs the clipboard but it doesn't paste text in a terminal. So could you add a shortcut that only syncs the clipboard to Android? There are also apps that act against clipboard content on open too.

I can't paste from computer clipboard to Android termux app. Ctrl-v syncs the clipboard but it does other things than paste text in a terminal. So could you add a shortcut that only syncs the clipboard to Android?

Indeed, Termux does not support pasting. But there is always the shortcut to inject the clipboard content as a sequence of text events, which is now RCtrl+v.

There are also apps that act against clipboard content on open too.

What do you mean?

Indeed, Termux does not support pasting.

It does support pasting, by using long-press menus.

But there still is the shortcut to inject the clipboard content as a sequence of text events, which is now RCtrl+v. Could you confirm it works for you?

This only works with ASCII. If my text has Chinese characters I get this:
[server] WARN: Could not inject char u+5220

There are also apps that act against clipboard content on open too.

What do you mean?

Some apps will analyze the clipboard content on open, and if it's some predefined pattern, the app acts accordingly. E.g. The popular shopping app Taobao will check the clipboard for some kind of goods id and open the page for it. So if you get such text (e.g. from a chat app) you'll need to put it into the clipboard and then open Taobao. There is no place for the user to paste.

Thank you for the feedback.

It does support pasting, by using long-press menus.

Does this version breaks something compared to v1.14 related to copy-paste?
IIUC, I should keep a shortcut to synchronize clipboard without pasting?

Some apps will analyze the clipboard content on open, and if it's some predefined pattern, the app acts accordingly. E.g. The popular shopping Chinese app Taobao will check the clipboard for some kind of goods id and open the page for it. So if you get such text (e.g. from a chat app) you'll need to put it into the clipboard and then open Taobao. There is no place for the user to paste.

Wow, it opens without any action from the user?
How did you paste in such case in v1.14? Does this PR breaks something regarding this behavior?

IIUC, I should keep a shortcut to synchronize clipboard without pasting?

Yes, so the steps will be "sync, long press and click", instead of "ctrl-v, ctrl-v, backspace, long press and click". But anyway, I'll just ssh into termux when my computer is near and functional. I don't have an actual need for this.

Wow, it opens without any action from the user?

The user opens the app. That's it.

How did you paste in such case in v1.14? Does this PR breaks something regarding this behavior?

I didn't test. It's a possible use case. I didn't use keyboard input before this patch because I didn't feel like previous key handling and attached the keyboard directly to my phone when needed.
This patch works pretty well for me. I'd use scrcpy more because of this.

IIUC, I should keep a shortcut to synchronize clipboard without pasting?
Yes, so the steps will be "sync, long press and click", instead of "ctrl-v, ctrl-v, backspace, long press and click".

I restored RCtrl+Shift+v to just synchronize the computer clipboard to the device clipboard (branch clipboard.3).
If there is no major problem on this branch, I will merge it into dev (and probably publish a new release after that).
Here are binaries:

scrcpy.exe
SHA256: cabfc66d9d13690bb22be0ea6d0fa9d090aa6460a45f53c01de2e61f6943d8a4
scrcpy-server
SHA256: 15533c3d4a4a12a20e2afe9cd7dfb8efecd3f990227ac8262bb79998c1fc3af5

This branch works well for me, thanks!

Thank you :)
Could someone test on macOS and provide feedback, please?

Hello！Not very friendly for windows notebooks without Rctl.

Hello！Not very friendly for windows notebooks without Rctrl.

您好！对于没有Rctrl的Windows笔记本不是很友好。

I hope you can change the Rctrl key and use Alt or other keys instead of Rctrl!

This branch is not very friendly to me, Several of my laptops do not have Rctrl, I hope you can use Alt or other keys instead of Rctrl.

@lsdy0806 Yes, thank you for your feedback, it's like some apple keyboard.
I will propose something else when I have time.

@ lsdy0806是的，谢谢您的反馈，就像一些苹果键盘一样。
有空的时候我会提出其他建议。

Thank you very much for your reply, Scrcpy has brought great convenience to my work and life. If the future version uses the combination of Rctrl+keys, you will not be able to use these key combination functions on my computer, because my windows computer lacks the Rctrl key. I hope you can use the Alt key instead of the Rctrl key.

pressing LCtrl+v synchronizes the computer clipboard to the device before sending the key event, therefore pasting works seamlessly

In fact, there is a problem here: copying a password on the computer and pasting it to the device puts the password in the device clipboard (which any app can read/listen). 😱

This is not a problem, Many projection software already supports clipboard bidirectional synchronization.

The difference is that when you paste from computer to device , the content of the paste is copied into the device clipboard. That may be unexpected. (This does not happen when injecting the content char by char as a sequence of key events.)
Maybe I will just warn in the README.

I think we could try solving this problem by looking at what others do.
The most popular remote desktop and remote control tools I see, handle this problem by using some sort of toggle system.
Most popular methods:

Toggle options (with configurable shortcut press)
1.1 E.g. TeamViewer uses (or used to use) Scroll lock as shortcut.
1.2. E.g. AnyDesk uses a manual toggle option with a shortcut key combo
Full screen
2.1 E.g. Reminna & windows remote desktop only send dubious target shortcuts to target machine if the target machine is in full screen, otherwise, they are sent to the top machine.
2-step key combination
3.1 E.g. VirtualBox defaults to the VM and uses a configurable key to press so that the next key combo applies outside the VM.

I think we should discuss which one to use for scrcpy. I do think the option 2 is the worst of all because the format of the phone image is a lot different from the format of a PC screen leaving huge black bezels and a huge feel of wasted space.
What do you think?

I plan to forward Ctrl and Shift, and use a configurable key for scrcpy shortcuts (probably Alt by default).
It could be changed:
# use RCtrl for shortcuts
scrcpy --shortcut-mod=rctrl
# use either Alt or RCtrl
scrcpy --shortcut-mod=lalt,rctrl
# use LCtrl+Alt
scrcpy --shortcut-mod=lctrl+lalt
# use LCtrl+Alt or Cmd
scrcpy --shortcut-mod=lctrl+lalt,lcmd,rcmd

I started to work on that locally, but I didn't have much time recently.

I plan to forward Ctrl and Shift, and use a configurable key for scrcpy shortcuts (probably Alt by default).
It could be changed:
# use RCtrl for shortcuts
scrcpy --shortcut-mod=rctrl
# use either Alt or RCtrl
scrcpy --shortcut-mod=lalt,rctrl
# use LCtrl+Alt
scrcpy --shortcut-mod=lctrl+lalt
# use LCtrl+Alt or Cmd
scrcpy --shortcut-mod=lctrl+lalt,lcmd,rcmd

I started to work on that locally, but I didn't have much time recently.

This is really good, solves the problem of no Rctrl, and can configure shortcut key combinations according to personal habits, thank you very much for your work!

I plan to forward Ctrl and Shift, and use a configurable key for scrcpy shortcuts (probably Alt by default).

That sound good to me. In my case, as an FXCE desktop user, Alt is the default key to use to manipulate windows for all kinds and purposes. With configuration, it can be the default (majority uses windows+mac) and then I can just reassign it to something else thanks to that feature.
Thank you very much.
Maybe the --shortcut-mod could be quickly pressed to toggle whether the next key combinations go to scrcpy/host or go to the phone. In my case, I use both Ctrl, both Alt, menu, etc... considerably so in VirtualBox I use Insert as the "host key" (Although it required editing XML files). I think I would do the same in scrcpy.
Thank you!

That sound good to me. In my case, as an Xfce desktop user, Alt is the default key to use to manipulate windows for all kinds and purposes.

I am also a Xfce user, I use Alt+clicks for moving or resizing windows, I don't see any problems with using Alt for scrcpy shortcuts.
What Xfce shortcuts involving Alt do you use?

I went to check the config files myself and I actually set all shortcuts myself to make use of the alt, I don't use the default ones (unlike what I though I was doing... It's been years.)
But still:
Alt+↑: Restore/Maximize (just like Windows has it, but with Alt)
Alt+↓: Restore/Minimize (just like Windows has it, but with Alt)
Alt+M: Minimize all windows
Alt+D: Peek at desktop (just like Windows has it, but with Alt)
Alt+Ctrl+Tab: Cycle windows of the same program group
Alt+A: Toggles window in all workspaces
Alt+Ctrl+Arrow: Switch to workspace in that virtual direction
Alt+F{1..9}: Switch to workspace of number and take the selected window with you
Alt+{1..9}: Switch to workspace of number and don't take the selected window with you
Alt+Insert: Insert adjacent workspace
Alt+Del: Delete workspace and go to previous workspace
However, I'm working on moving many of these shortcuts to Super because the window icon on the key (as usual, this was manufactured to be a windows PC) makes more sense to me than an Alt and too many programs are starting to include Alt-based shortcuts in their defaults.  I'm still convincing myself to relearn and transition.
If you're curious, in keyboard shortcuts, I moved all default shortcuts to start apps to Alt+Ctrl+Shift+F{1..9} although I'm deprecating them for myself and just use something like the wisker-menu instead.

Here is a new proposal: #1598


'cirq.sim.simulator'

'cirq.sim.simulator' has no attribute 'SimulatesExpectationValues'.
How to solve this problem?

Hey @sassan72, please paste a snippet of the program that throws this error so that we may reproduce it.

example of page 7 of Quantum TensorFlow paper: https://arxiv.org/pdf/2003.02989.pdf.

qubit = cirq . GridQubit (0 , 0)
theta = sympy . Symbol (’theta ’)
c = cirq . Circuit ( cirq .X ( qubit ) ** theta )
c_tensor = tfq . convert_to_tensor ([ c] * 3)
theta_values = tf . constant ([[0] ,[1] ,[2]])
m = cirq . Z( qubit )
paulis = tfq . convert_to_tensor ([ m ] * 3)
expectation_op = tfq . get_expectation_op ()
output = expectation_op (
c_tensor , [’theta ’], theta_values , paulis )
abs_output = tf . math . abs ( output )

I don't get your error. I don't get a different error: tensorflow.python.framework.errors_impl.InvalidArgumentError: pauli_sums must be rank 2. Got rank 1. [Op:TfqSimulateExpectation]
import cirq
import sympy
import tensorflow as tf
import tensorflow_quantum as tfq

qubit = cirq.GridQubit(0 , 0)
theta = sympy.Symbol('theta')
c = cirq.Circuit(cirq.X(qubit) ** theta)
c_tensor = tfq.convert_to_tensor ([c] * 3)
theta_values = tf.constant ([[0] ,[1] ,[2]])
m = cirq.Z(qubit)
paulis = tfq.convert_to_tensor ([m] * 3)
expectation_op = tfq.get_expectation_op ()
output = expectation_op (c_tensor , ['theta'], theta_values , paulis )
abs_output = tf.math.abs(output)

Traceback (most recent call last):
  File "test.py", line 65, in <module>
    output = expectation_op (c_tensor , ['theta'], theta_values , paulis )
  File "/home/vtomole/venv/lib/python3.8/site-packages/tensorflow_quantum/core/ops/circuit_execution_ops.py", line 135, in <lambda>
    op(programs, symbol_names, symbol_values, pauli_sums)
  File "/home/vtomole/venv/lib/python3.8/site-packages/tensorflow_quantum/core/ops/tfq_simulate_ops.py", line 44, in tfq_simulate_expectation
    return SIM_OP_MODULE.tfq_simulate_expectation(
  File "<string>", line 51, in tfq_simulate_expectation
  File "<string>", line 103, in tfq_simulate_expectation_eager_fallback
  File "/home/vtomole/venv/lib/python3.8/site-packages/tensorflow/python/eager/execute.py", line 59, in quick_execute
    tensors = pywrap_tfe.TFE_Py_Execute(ctx._handle, device_name, op_name,
tensorflow.python.framework.errors_impl.InvalidArgumentError: pauli_sums must be rank 2. Got rank 1. [Op:TfqSimulateExpectation]

cirq version: 0.11.0
tensorflow version: 2.4.1
tensorflow-quantum version: 0.5.1

Thanks @vtomole . The error you are getting is what should be happening in your snippet. This is a mistake in the whitepaper that we will fix in the v2 which should be coming in the next few months. The fix is to ensure the the paulis tensor is rank 2 instead of rank1. You could do this by adding another list dimension to it before converting it to a tensor.
I'm going to go ahead and close this for now since this isn't a problem with Cirq it's a problem with TFQ. @sassan72 would you mind re-opening this issue on the TFQ github with a small snippet of code that can reproduce the error you are seeing (if it is different from the one Victory got) along with the version of Cirq + TFQ you are using ?


Project activity

will this project continue as open source? I am curious since in README is mentioned the team is focused on Snorkel Flow and I don't see much activity during the last months. Thanks.

My understanding is that while they are focused on the business of getting Flow out, they fully intend to continue to contribute as a vibrant open source Snorkel ecosystem is essential to Snorkel AI's strategy.

My understanding is that while they are focused on the business of getting Flow out, they fully intend to continue to contribute as a vibrant open source Snorkel ecosystem is essential to Snorkel AI's strategy.

I was wondering the same. Awesome project, but it looks like the core team has moved on to the SaaS product.
There is a PR open and waiting for review since October ,2020.

I was wondering the same. Awesome project, but it looks like the core team has moved on to the SaaS product.
There is a PR open and waiting for review since October ,2020.

Hi all, thanks for the discussion here. Would encourage you to take a look at the discussion on Spectrum as well. We'll be updating the language on the README clarifying how we'll be maintaining the repo going forward.
In general, we intend to be responsive to issues and PRs. It looks like #1616 fell off of our radar, and we'll get to it ASAP.

Hi all, thanks for the discussion here. Would encourage you to take a look at the discussion on Spectrum as well. We'll be updating the language on the README clarifying how we'll be maintaining the repo going forward.
In general, we intend to be responsive to issues and PRs. It looks like #1616 fell off of our radar, and we'll get to it ASAP.


How to migrate from gqless to gqty

I migrated and reported an error, so I'm going to keep gqless for now


feat: Add /assetTypes/{assetType}/assetViews/{assetViewId}/json endpoint

fixes fds-766

@GiaJordan This PR is ready for review


I have added other modules in the yolov8 framework, can I generate heat maps with your repository code?

You can give it a try. It basically should just convert the matrix output from the layer and generate it as a heatmap.

You can give it a try. It basically should give an output considering it will just resize the output matrix of activations from the layer into the image size, and generate the heatmap from it.


Add version: Microsoft.VC++2013Redist-x64 version 12.0.40660.0

[X] Have you signed the Contributor License Agreement?
[X] Have you checked that there aren't other open pull requests for the same manifest update/change?
[ ] Have you validated your manifest locally with winget validate --manifest <path>?
[ ] Have you tested your manifest locally with winget install --manifest <path>?
[X] Does your manifest conform to the 1.0 schema?

Microsoft Reviewers: Open in CodeFlow

Is it intentional behavior that redistributables versions install side by side? When I use winget upgrade to update Microsoft.VC++2013Redist-x64, it just installs that in addition to version 12.0.30501.0. I only ask because I'm not really familiar with the VC++ redistributables and don't know if individual versions can be essential to running some programs, or if the latest version of the 2013s is sufficient.

I actually noticed that after it got merged, but hoped for another user to create a issue so we could ask someone >.<
Since i also have no clue how VC++ works i did not dare to correct the package, all i know is SOME 2013 packages can be installed side by side, hopefully not supposed to be like that
However VC++2015-2019 seems to uninstall the previous version correctly, so maybe this is a issue with VC++2013 and down


Add event metadata field to HelmRelease spec

Fixes https://github.com/fluxcd/helm-controller/issues/680

This has overlap with #514, and is in general quite the change to accept without more discussion among maintainers.
I suggest you join one of our project meetings to further discuss your proposal.

Closing this in favour of https://github.com/fluxcd/notification-controller/pull/519

Can we re-open this one? Yes, there is an overlap with #514, but this one here tackles a different issue.
My use-case:
I have an app which creates deployments via the GitHub API. Then in the same step, it writes a HelmRelease manifest to a repository which is reconciled via FluxCD. After the reconciliation, I want to use the notification-controller to call my app again, which then calls the deployments API again to show the deployment as done.
To be able to match the created HelmRelease with the deployment though, I would want to add some identifying data to the HelmRelease manifest and then return this as metadata via the notification-controller.

@matheuscscp Any chance you joined a meeting and brought this up already?

@matheuscscp And more on-topic, would it be enough to just include the manifest's .metadata.labels and/or .metadata.annotations?

@matheuscscp Any chance you joined a meeting and brought this up already?

I can do it this week 👌

@moritzschmitz-oviva One question: how would you identify the GitHub deployment?

@moritzschmitz-oviva One question: how would you identify the GitHub deployment?

The API returns an ID when creating a deployment: https://docs.github.com/en/rest/deployments/deployments?apiVersion=2022-11-28#create-a-deployment.
We have a GitHub app which creates a deployment via above API and then modifies files inside the FluxCD repository. When we create the files, we already have the ID and can set it as a metadata field. Now when the notification-controller reports the successful installation of the HelmRelease we call the GitHub app again and pass the metadata. It then knows which deployment to 'proceed'. Does that make sense?

Hey @moritzschmitz-oviva I just wanted to let you know that we are gonna support sending object annotation keys prefixed with a to-be-defined API Group, e.g. something like events.toolkit.fluxcd.io/myCustomMetadataKey. This will be supported across all Flux controllers in a uniform way, not just for HelmRelease. I will open an RFC in the flux2 repo for this.

@moritzschmitz-oviva Feel free to comment: https://github.com/fluxcd/flux2/pull/4809/files


Implement divergence statistics

[ ]  FST, computed with the formula from Hudson et al. 1992. We should also include the hierarchical F-statistics FRT and FSR.
[ ] Dxy (Nei 1972)

For the hierarchical  FST, the theory behind can be found in Wright 1943 and calculation examples here


Link to Sprint from Calendar

Would be great if clicking the shown sprint from within the calendar linked you to the sprint board in question.

We're closing old issues so we can get back to actively maintaining the extension. Feel free to reopen if this is still an issue for you.


Update link for mobile width

Previously the link overflowed the page width on iPhones, so I updated the link text in an attempt to fix this. Let me know if you'd prefer it to be done another way!


Use signed 64-bit int for jlong with printf & _proxy_cache

This fixes one bug: We were storing incorrect values in instance within the Java class PythonInstance.jlong is 64-bits, but we were truncating jlong to 32-bits on 32-bit platforms.
To help future debugging, we now use a 64-bit signed int value within both Python's _proxy_cache and the Java PythonInstance.instance. Note that this doesn't truncate id(self); it re-interprets numbers > 2**63 as negative numbers, which is fine with me.

Hey @freakboy3742 ! I'm going to close this for now, and re-open it tomorrow when I have a test for it. I'll also probably have more comments for you then. Thanks!


libnvidia-container1 is not installing

Hi, I'm trying to install libnvidia-container1 package on CentOS 7.8 x86_64. But when I start, is unable to install:

Command
=> yum install libnvidia-container1
Resolving Dependencies
--> Running transaction check
---> Package libnvidia-container1.x86_64 0:1.2.0-1 will be installed
--> Finished Dependency Resolution

Dependencies Resolved
===========================================================================================================================================================================
Package                                         Arch                              Version                            Repository                                      Size
===========================================================================================================================================================================
Installing:
libnvidia-container1                            x86_64                            1.2.0-1                            libnvidia-container                             83 k

Transaction Summary
===========================================================================================================================================================================
Install  1 Package

Total size: 83 k
Installed size: 225 k
Is this ok [y/d/N]: y
Downloading packages:
warning: /var/cache/yum/x86_64/7/libnvidia-container/packages/libnvidia-container1-1.2.0-1.x86_64.rpm: Header V4 RSA/SHA512 Signature, key ID ac1160cd: NOKEY
Retrieving key from https://nvidia.github.io/libnvidia-container/gpgkey
The GPG keys listed for the "libnvidia-container" repository are already installed but they are not correct for this package.
Check that the correct key URLs are configured for this repository.
Failing package is: libnvidia-container1-1.2.0-1.x86_64
GPG Keys are configured as: https://nvidia.github.io/libnvidia-container/gpgkey

Config (/etc/yum.repos.d/nvidia.repo)
[libnvidia-container]
name=libnvidia-container
#baseurl=https://nvidia.github.io/libnvidia-container/stable/centos7/$basearch
baseurl=https://nvidia.github.io/libnvidia-container/stable/centos7/x86_64
repo_gpgcheck=1
gpgcheck=1
enabled=1
gpgkey=https://nvidia.github.io/libnvidia-container/gpgkey
sslverify=1
sslcacert=/etc/pki/tls/certs/ca-bundle.crt

gpg-pubkey-f796ecb0-59cd5831 >>> Packager    : NVIDIA CORPORATION (Open Source Projects<EMAIL_ADDRESS>

I tried to install by Spacewalk respository too, but I get the same error.
What I'm doing wrong, May you help me?

Looks like you need to update your keys. Follow the instructions for updating your keys at the bottom of this:
https://nvidia.github.io/libnvidia-container/

@ktsantana is this still an issue? Since the keys have since been rotated, I'm closing this. Please reopen if this is still a problem.


LocalOnly sharding strategy for dyno queues

Allow no distribution of workload in dyno queues.
By default tasks are distributed across all conductor instances using
dyno queue shards.
Now it is possible to only queue workfload for conductor-server that
started the workflow.
More in docs.

A little background:
We are developing a simple active-standby model for conductor, where only active conductor will run workflows and we also wanted only active conductor and attached workers to be able to run tasks.

Pull Request Test Coverage Report for Build 4204

11 of 19 (57.89%)  changed or added relevant lines in 3 files are covered.
18 unchanged lines in 2 files lost coverage.
Overall coverage decreased (-0.1%) to 69.432%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

redis-persistence/src/main/java/com/netflix/conductor/dyno/RedisQueuesShardingStrategyProvider.java
9
17
52.94%

Files with Coverage Reduction
New Missed Lines
%

cassandra-persistence/src/main/java/com/netflix/conductor/dao/cassandra/CassandraEventHandlerDAO.java
8
68.42%

cassandra-persistence/src/main/java/com/netflix/conductor/dao/cassandra/CassandraMetadataDAO.java
10
55.44%

Totals

Change from base Build 4202:
-0.1%

Covered Lines:
12411

Relevant Lines:
17875

💛  - Coveralls

@marosmars Copying over my comment from Gitter for context:

Thanks for the great notes @marosmars . However, concurrent decide can still happen in same node. From your example, if both the Http task and Sweeper were to run on same instance at about same time (assuming both the queues are in shard ".c"), we'd still run into inconsistencies with concurrent decides. LMK if you have any questions or comments.

@kishorebanala  thx, copying my reply

Hey @kishorebanala , thx for the review. The reason for the above is that there is only a NoopLocking strategy utilized by default (in ExecutionLockService). Correct ?
Which means that the solution I proposed still requires a real locking strategy. However it would be sufficient to have a localOnly locking strategy (something based on pure Java semaphore) that does not require persistence... As long as I use the localOnly distribution strategy with it.
What I will do is:

Add a localOnly locking provider (that can handle locking inside a single node)
Update the docs

What do you think ?

I didn't realize the default locking is implemented by NoopLock...

Hey @marosmars,  Looks good to me. Please address the minor comments, and we should be good to merge this PR.

@kishorebanala rebased and fixed the comments.
One additional question: Should we want make the LocalOnlyLock default ? Instead of Noop ?

@kishorebanala rebased and fixed the comments.
One additional question: Should we want make the LocalOnlyLock default ? Instead of Noop ?

@marosmars Thank you! Actually, let's keep the Noop lock default, as locking is opt-in.


Feature request: home screen widget

Recently switched from over from Materialism after being wowed by Glider Ui/Ux and one thing I miss is the home screen widget. I find widgets are excellent for feeds I passively consume. Can you please make this happen dev?

Non-trivial for Flutter apps because native code is required to display widgets on the home screen, while accessing data from the Flutter side. home_widget can assist with this. A bit messy, but might look into this in the future.

Commenting here to get notifications and show my support. Really wish i could replace materialistic widget with something from Glider ❤


[PACKS] #8 New / Edit Distribution for the banks shows custom request units, if applicable

Summary
Add custom request units to new distribution.
Why
This is step #8 of adding the ability to specify "packs" versus "individual" for requests
Details
If the distribution is from a request, add a"Requested" column beside the current item fields
The # of requested items and the requested units will be shown beside the corresponding item in the distribution entry.
If the request is using a custom request unit (not the default units), the quantity for the distribution of the item will not be initially filled in.  The purpose of this is to reduce the likelihood of errors of the "leaving the number that was there because we fulfilled what they wanted"  type.   If the item doesn't have custom request units, or the item request uses the default units,  the quantity for the distribution will be filled in.
Visual Aid

Identified rules
In all cases:
May put 0 as a quantity
Saving with blank quantities will give an error
May remove any item
May add more items. This functionality will work as it does currently, except for the 0/blank behavior as noted above
On new or edit,  not-from-request:
Do not show the requested column
On new, from request
Show the requested column, including units if any
Quantities for items requested with custom units are initially blanks
Quantities from items requested without a custom unit are initialized to the amount requested
Items that were NOT from the request show "n/a" in the requested column
On edit, from request
Quantities for items requested, that are not included in the current distribution, are initialized to 0.
Show the requested column, including units if any.  (even for the items that are not included in the current distribution)
Item selection for requested items is frozen (i.e. only display the item name)
Item selection for not-requested items is not frozen (should be like the current distribution, barcodes and all)
may remove
N.B.
All of the changes for PACKS  must  be implemented behind a flipper flag "enable_packs"
1/ Flipper works by enabling or disabling a tag (for the PACKS issues, that is enable_packs)
2/ Here is a code snippet illustrating how to use it in your code, with enable_packs as the example tag:
if Flipper.enabled?(:enable_packs)
// do the thing we are guarding with the tag
end
3/ How to check out if it works manually (with the example tag: enable_packs ):
You have to enable the flipper tag on your localhost (note - the tag is stored in your db, so if you reset your db you have to do it again)
localhost:3000/flipper
userid:  admin
password:  password
Sign In
Click: Add feature
enable_packs
Click: Add feature
Click:  Fully enable
To set it back (to check that your nifty changes haven’t broken anything when the flag is off)
Sign in as above:
click on “enable_packs”
click “Delete”
type      enable_packs     in the “Are you sure” dialog and click ok
Criteria for completion

[ ] functionality as described above
[ ] tests that support the functionality as described above

Background
The following sections have been identified as required for the PACKS implementation.  These should be implemented in numerical order.

@cielf two questions:

Item selection for requested items is frozen (i.e. only display the item name)

This is only in the "edit" section - but this should be true for "new" as well, no? They can always remove the item if they don't want to fulfill it.

If the item doesn't have custom request units, or the item request uses the default units

To clarify - we removed the concept of a "default unit", correct? So if the item has any unit that isn't blank, we should follow the logic (e.g. blank out the quantity) - correct?

1/  That sounds right.
2/ If they pick "units" (instead of any custom unit) when requesting, we don't save the unit,  right?    If that's the case, then if the item request (not the item, per se) has any unit that isn't blank, we should blank out the quantity.


More examples  comparison with sql

[ ] closes #xxxx
[ ] tests added / passed
[x] passes git diff upstream/master | flake8 --diff
[x] whatsnew entry

added the following examples:

Top N rows with offset
Top N rows per group
ROW_NUMBER() OVER(PARTITION BY day ORDER BY total_bill DESC)
UPDATE
DELETE

pls don't close original PR's and open new ones, just push to the SAME one.

http://pandas.pydata.org/pandas-docs/stable/contributing.html

sorry, i'm new to GitHub stuff - have to learn how to deal with that

@jreback, how can i remove it?

just rebase on master
git rebase -i origin/master

i either have this error message:
[pandas_dev] C:\Users\Max\Anaconda3\envs\pandas-maxu777\doc>git rebase -i origin/master
It seems that there is already a rebase-merge directory, and
I wonder if you are in the middle of another rebase.  If that is the
case, please try
git rebase (--continue | --abort | --skip)
If that is not the case, please
rm -fr "C:/Users/Max/Anaconda3/envs/pandas-maxu777/.git/rebase-merge"
and run me again.  I am stopping in case you still have something
valuable there.
or that:
[pandas_dev] C:\Users\Max\Anaconda3\envs\pandas-maxu777\doc>git commit -m "restored original CONTRIBUTING.md"
interactive rebase in progress; onto 2267bd3
fatal: Could not open file .git/rebase-merge/done for reading: No such file or directory
i'm giving up - unfortunately i don't have that much time to play with git
:(

git rebase --abort
then try again

http://stackoverflow.com/questions/2047465/how-can-i-delete-a-file-from-git-repo
you can also do (you need to do the abort though)
git rm contributing.MD --cached

[pandas_dev] C:\Users\Max\Anaconda3\envs\pandas-maxu777\doc>git push origin more_examples__comparison_with_sql -f
Warning: Permanently added the RSA host key for IP address '<IP_ADDRESS>' to the list of known hosts.
Everything up-to-date

@jreback, i've pushed it now - is it OK now?

not sure what you have pushed here, but doesn't look like its updated according to my comments.

@jreback, is it OK now?

any comments from those SQL inclined

[Current coverage][cc-pull] is 83.77%

Merging [#12932][cc-pull] into [master][cc-base-branch] will decrease coverage by -0.00%

@@           master   #12932   diff @@
======================================
  Files         135      135
  Lines       49664    49657     -7
  Methods         0        0
  Branches        0        0
======================================
- Hits        41610    41602     -8
- Misses       8054     8055     +1
  Partials        0        0

File ...ndas/sparse/array.py (not in diff) was modified. more

Misses +1
Partials 0
Hits -8

[][cc-pull]

Powered by Codecov. Last updated by 2cfd5d4
[cc-base-branch]: https://codecov.io/gh/pydata/pandas/branch/master?src=pr
[cc-pull]: https://codecov.io/gh/pydata/pandas/pull/12932?src=pr

+1 on the SQL docs.

@jreback, thanks for the hint: assign().query() - i wasn't aware of assign() function

thanks!
FYI, I think somehow the CONTRIBUTING.md file got moved to .github/CONTRIBUTING.md; that's why it showed up. I removed that change.


OrderOfBattleTest

id:22f07b41f21f4bda873a87d99d8b3d52
ERROR: URL issue - code: 500;
The test folder has been deleted. Please delete or update this web map.

I deleted this item on 06/15/2016


解决了Python3下代码拉取bug

Pull Request Test Coverage Report for Build 402

4 of 35 (11.43%) changed or added relevant lines in 3 files are covered.
17 unchanged lines in 6 files lost coverage.
Overall coverage decreased (-0.3%) to 42.239%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

cobra/send_mail.py
0
8
0.0%

cobra/pickup.py
0
10
0.0%

cobra/export.py
4
17
23.53%

Files with Coverage Reduction
New Missed Lines
%

cobra/export.py
2
60.0%

cobra/cve.py
2
81.61%

cobra/init.py
2
31.43%

cobra/log.py
2
44.93%

cobra/utils.py
3
35.77%

cobra/pickup.py
6
33.06%

Totals

Change from base Build 401:
-0.3%

Covered Lines:
1551

Relevant Lines:
3672

💛  - Coveralls

Pull Request Test Coverage Report for Build 402

4 of 35 (11.43%) changed or added relevant lines in 3 files are covered.
17 unchanged lines in 6 files lost coverage.
Overall coverage decreased (-0.3%) to 42.239%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

cobra/send_mail.py
0
8
0.0%

cobra/pickup.py
0
10
0.0%

cobra/export.py
4
17
23.53%

Files with Coverage Reduction
New Missed Lines
%

cobra/export.py
2
60.0%

cobra/cve.py
2
81.61%

cobra/init.py
2
31.43%

cobra/log.py
2
44.93%

cobra/utils.py
3
35.77%

cobra/pickup.py
6
33.06%

Totals

Change from base Build 401:
-0.3%

Covered Lines:
1551

Relevant Lines:
3672

💛  - Coveralls


Problem with SPARK_LINE when adding same value many times sequentially

Hello,
I've noticed a strange behavior in case we add the same value to SPARK_LINE tile. Here is how this can be reproduced:
Tile sparkLineTile = TileBuilder.create()
.skinType(SkinType.SPARK_LINE)
.title("SparkLine Tile")
.unit("mb")
.strokeWithGradient(true)
.build();
Then if we add same value lets say 5, once it will be displayed correctly, the next time the line will disappear, then it will be displayed ok...
sparkLineTile.setValue(5); //OK
sparkLineTile.setValue(5); //problem - line is hidden
sparkLineTile.setValue(5); //OK
sparkLineTile.setValue(5); //problem - line is hidden
sparkLineTile.setValue(5); //OK
sparkLineTile.setValue(5);//problem - line is hidden
sparkLineTile.setValue(5); //OK
...
I've tested tilesfx ver17.1.17 and ver16.0.0 and they have the same problem.
Ver11.1 seems to be OK.
I am working with JDK 17 with integrated FX from Zulu
What could be the problem?
Thanks

Thx for the heads-up, will take a look at it 👍🏻

I figured out that after setting fixedYScale on, this fix the problem.
Thanks


Highlight cursor color is very similar

When a variable is not used and the cursor is on top, it is basically unreadable.
I have tried to change the colors but I can't find the correct property to change that specific color.

check your terminal cursor color settings


Consider using Hugo Pipes for the CSS and adding functionality for custom CSS overrides

Hello,
Since this theme is used for the Hugo Quick Start Guide please do consider updating the theme to use current Hugo features like Hugo Pipes for the CSS and not the output of a Webpack workflow. ref: https://github.com/theNewDynamic/gohugo-theme-ananke/blob/master/layouts/_default/baseof.html#L18-L21
Also please consider adding the ability for newbies to easily add Custom CSS .
Currently it is very difficult for new users to override the theme CSS with the present setup, as shown in this forum topic.

Thank you, @onedrawingperday We'll be making some improvements in January.

@budparr I want remove webpack altogether. Currently the script is an empty shell that can be overwritten by users. We'll leave it as an empty shell, and users will only have to overwrite it inside assets/ananke/js/main.js in order for it to be processed by js.Build.
Won't it be a problem for users relying on webpack? I think those are fairly advanced since they must compile the theme's assets already but who knows...

@budparr I want remove webpack altogether. Currently the script is an empty shell that can be overwritten by users. We'll leave it as an empty shell, and users will only have to overwrite it inside assets/ananke/js/main.js in order for it to be processed by js.Build.
Won't it be a problem for users relying on webpack? I think those are fairly advanced since they must compile the theme's assets already but who knows...

FYI #387 completely removes the CSS on my site, without changing my site config. As the commit message says "optional", I think that's a new bug?
If you need more info I can provide them.

@z3ntu can you share your repo?
Thanks!

@z3ntu when you share your repo can you please just start a new issue?

False alarm it seems. It's just a problem when hugo server is running and you switch from the theme before this commit to this commit. Apparently hugo gets confused and doesn't serve css anymore. Restarting hugo server fixes it.
Log from checking out a newer version of ananke - for reference:
Change of Static files detected, rebuilding site.
2021-03-16 14:15:48.268 +0100
File no longer exists in static dir, removing /dist/css/app.1cb140d8ba31d5b2f1114537dd04802a.css
File no longer exists in static dir, removing /dist/css/app.4fc0b62e4b82c997bb0041217cd6b979.css
File no longer exists in static dir, removing /dist/css/app.7e7787cc1402d7de28bc90f7e65adf96.css
File no longer exists in static dir, removing /dist/css/app.e6e75cdafe2e909dacfabeb26857f994.css
File no longer exists in static dir, removing /dist/js/app.3fc0f988d21662902933.js
File no longer exists in static dir, removing /dist/css
File no longer exists in static dir, removing /dist/js
File no longer exists in static dir, removing /dist

Change detected, rebuilding site.
2021-03-16 14:15:48.269 +0100
Data changed "/my/site/themes/ananke/data/webpack_assets.json": REMOVE
Template changed "/my/site/themes/ananke/layouts/partials/site-scripts.html": REMOVE
i18n changed "/my/site/themes/ananke/i18n/hu.toml": WRITE
i18n changed "/my/site/themes/ananke/i18n/tr.toml": WRITE
i18n changed "/my/site/themes/ananke/i18n/zh-tw.toml": WRITE
Template changed "/my/site/themes/ananke/layouts/_default/baseof.html": WRITE
Template changed "/my/site/themes/ananke/layouts/index.html": WRITE
Template added "/my/site/themes/ananke/layouts/partials/site-style.html": WRITE
Template added "/my/site/themes/ananke/layouts/robots.txt": WRITE
Total in 44 ms


[Draft] Use a threading model for the key manager smoke test.

This is a draft PR. Please don't review.
Motivation
This PR updates the key manager smoke test to use a thread instead of spawning a new process.
Have you read the Contributing Guidelines on pull requests?
(Write your answer here.)
Test Plan
(Share your test plan here. If you changed code, please provide us with clear instructions for verifying that your changes work.)
Related PRs
(If this PR adds or changes functionality, please take some time to update the docs at https://github.com/libra/libra/developers.libra.org, and link to your PR here.)

Feel free to re-open if you'd like to resume.


update ts md5Sign

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.wy01186504 seems not to be a GitHub user. You need a GitHub account to be able to sign the CLA. If you have already a GitHub account, please add the email address used for this commit to your account.You have signed the CLA already but the status is still pending? Let us recheck it.


app/publish: support resumable file upload

This adds new handler that implements TUS POST, PATCH, and
HEAD handler.

TUS handlers does not create new context based on the on-going
request context. Any procedures that should runs on before or
after middleware should be implemented on TUS pre-create and
pre-finish hook event.

Currently the pre-create hook responsible to validate user access
request to the new publish handler, and the pre-finish hook is
responsible to send json rpc call to lbrynet server.

updated, PTAL @andybeletsky :)

@andybeletsky the last commit fix authorization issue that i mentioned on friday, ptal :)


Fix attaching invalid service to http:Listener

Purpose

Fix attaching invalid service to http:Listener

Fixes #
Approach

Checks if the service is a WebSocket client service or a totally different service and handles appropriately.

Samples

N/A

Remarks

N/A

Check List

[ ] Read the Contributing Guide
[ ] Required Balo version update
[ ] Updated Change Log
[ ] Checked Tooling Support (#)
[ ] Added necessary tests

[ ] Unit Tests
[ ] Spec Conformance Tests
[x] Integration Tests
[ ] Ballerina By Example Tests

[ ] Increased Test Coverage
[ ] Added necessary documentation

[ ] API documentation
[ ] Module documentation in Module.md files
[ ] Ballerina By Examples

Codecov Report

Merging #19402 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master   #19402   +/-   ##
=======================================
  Coverage   15.71%   15.71%
=======================================
  Files          47       47
  Lines        1266     1266
  Branches      197      197
=======================================
  Hits          199      199
  Misses       1054     1054
  Partials       13       13

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 2a65a5e...381dc6c. Read the comment docs.


Refactor: use page.setContent instead of page.goto with page.evaluate

https://github.com/AwesomeHamster/koishi-plugin-ffxiv-macrodict/blob/91c5470e3e06ffaafd99795e6bff3c6f8062d28e/src/search.ts#L125-L159
Currently, we called page.goto with the html file built-in, and then invoke page.evaluate twice to set the content and page width.
Since page.setContent method could do the such things in just one call, so it is better to switch to this method.

Workaround:
As we have Renderer class already:
https://github.com/AwesomeHamster/koishi-plugin-ffxiv-macrodict/blob/91c5470e3e06ffaafd99795e6bff3c6f8062d28e/src/parser.ts#L75-L97

Extract HTML / CSS from src/views/ to just plain strings.
Make Renderer class as a string builder, to append DOM elements independently.
Make parseMacroDescription as renderText or renderHtml that outputs HTML string.
Use page.setContent(html) after ctx.puppeteer.page() immediately.

Implemented in #40


Account Settings - When legal name change there is not reflect in other device

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

Version Number: v1.4.59-0
Reproducible in staging?: Y
Reproducible in production?: Y
Email or phone of affected tester (no customers<EMAIL_ADDRESS>Logs: https://stackoverflow.com/c/expensify/questions/4856
Issue reported by: Applause-Internal team
Action Performed:

On deviceA go to settings > profile > personal details > legal first name
Enter a name that's 100+ characters long i.e gfkfkfkfkfkfkkfkfkfkfkfkfkfkfkfkffkkfkgkgkgkkgkgkgkgkgkgkgkgkgkgkgkgkgkgkgkgkgkgkgkgkkgkgkgkgkgkkggkk
Observe the error that the 100 character field length is exceeded
Now enter a name that's 10 characters long i.e gkgkgkgkgk
Switch to deviceB, observe that the legal first name updates
On deviceA, enter a name that's 41 characters long i.e gfkfkfkfkfkfkkfkfkfkfkfkfkfkfkfkffkkfkfka
Switch to device B, observe that the legal first name doesn't update
On deviceA, enter a name that's 40 characters long. i.e gfkfkfkfkfkfkkfkfkfkfkfkfkfkfkfkffkkfkfk
On deviceB, observe that the legal first name does update.

Expected Result:
The frontend and backend character limit for the legal name field should be the same. Let's update the character limit on the front-end to 40 to match the backend.
Actual Result:
The frontend character field limit is 100, but the backend character limit is 40 characters. As a result, there's no error being displayed on the front-end when someone enters a value of 40+ characters and it doesn't get saved either.
Workaround:
Unknown
Platforms:

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

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

Screenshots/Videos
https://github.com/Expensify/App/assets/115492554/a0e95ad1-fe85-418f-b2d9-fb4a12674d13

View all open jobs on GitHub

@izarutskaya the video uploaded just shows a tester opening the legal name field and circling it with a cursor then closing it again. Then there's two pictures showing a truncated long legal name entered which seems correct. It took me a while to piece this together. I've updated it quite a bit, but can we be vigilant about making it clear what's going on here. Thanks!
I can reproduce it. There's a mismatch between the 100 character limit for the field on the front-end and the limit on the backend -- which appears to be 40. So we are saving it on the front-end, but not the backend.
https://github.com/Expensify/App/assets/16232057/d52920b6-4565-4e55-877d-6ab917a23e3f
I think the right course of action here is to update the character limit to 40 for this field to match the backend. CC: @joekaufmanexpensify

Proposal
Please re-state the problem that we are trying to solve in this issue.
Legal name max length mismatch on FE and BE
What is the root cause of that problem?
Current limit is being set to 100
https://github.com/Expensify/App/blob/0b2f55fefa8519b86f58730a85e851409f631524/src/CONST.ts#L1786C1-L1786C32
What changes do you think we should make in order to solve the problem?

Use the existing Legal Names Max Length Limit Const:
https://github.com/Expensify/App/blob/ce003b2ac3d0f5c407c6da38ec673011032e8395/src/CONST.ts#L133C1-L135C7

Update the max length validation for legal first name and legal last name.
https://github.com/Expensify/App/blob/ce003b2ac3d0f5c407c6da38ec673011032e8395/src/pages/settings/Profile/PersonalDetails/LegalNamePage.tsx#L52C1-L57C14

to
else if (values.legalFirstName.length > CONST.LEGAL_NAME.MAX_LENGTH) {
                ErrorUtils.addErrorMessage(errors, 'legalFirstName', [
                    'common.error.characterLimitExceedCounter',
                    {length: values.legalFirstName.length, limit: CONST.LEGAL_NAME.MAX_LENGTH},
                ]);
            }

https://github.com/Expensify/App/blob/ce003b2ac3d0f5c407c6da38ec673011032e8395/src/pages/settings/Profile/PersonalDetails/LegalNamePage.tsx#L68C1-L70C14
to
else if (values.legalLastName.length > CONST.LEGAL_NAME.MAX_LENGTH) {
ErrorUtils.addErrorMessage(errors, 'legalLastName', ['common.error.characterLimitExceedCounter', {length: values.legalLastName.length, limit: CONST.LEGAL_NAME.MAX_LENGTH}]);
}

Remove the unnecessary Const
https://github.com/Expensify/App/blob/ce003b2ac3d0f5c407c6da38ec673011032e8395/src/CONST.ts#L1780C1-L1780C38

What alternative solutions did you explore? (Optional)
N/A

Proposal
Please re-state the problem that we are trying to solve in this issue.
Legal name max length mismatch on FE and BE
What is the root cause of that problem?
Current limit is being set to 100
https://github.com/Expensify/App/blob/ce003b2ac3d0f5c407c6da38ec673011032e8395/src/CONST.ts#L1786
What changes do you think we should make in order to solve the problem?

Use the existing Legal Names Max Length Limit Const:
https://github.com/Expensify/App/blob/ce003b2ac3d0f5c407c6da38ec673011032e8395/src/CONST.ts#L133-L135

Update the max length validation for legal first name and legal last name.
https://github.com/Expensify/App/blob/ce003b2ac3d0f5c407c6da38ec673011032e8395/src/pages/settings/Profile/PersonalDetails/LegalNamePage.tsx#L52-L57

to
else if (values.legalFirstName.length > CONST.LEGAL_NAME.MAX_LENGTH) {
                ErrorUtils.addErrorMessage(errors, 'legalFirstName', [
                    'common.error.characterLimitExceedCounter',
                    {length: values.legalFirstName.length, limit: CONST.LEGAL_NAME.MAX_LENGTH},
                ]);
            }

https://github.com/Expensify/App/blob/ce003b2ac3d0f5c407c6da38ec673011032e8395/src/pages/settings/Profile/PersonalDetails/LegalNamePage.tsx#L68-L70
to
else if (values.legalLastName.length > CONST.LEGAL_NAME.MAX_LENGTH) {
ErrorUtils.addErrorMessage(errors, 'legalLastName', ['common.error.characterLimitExceedCounter', {length: values.legalLastName.length, limit: CONST.LEGAL_NAME.MAX_LENGTH}]);
}

Remove the unnecessary Const
https://github.com/Expensify/App/blob/ce003b2ac3d0f5c407c6da38ec673011032e8395/src/CONST.ts#L1780

What alternative solutions did you explore? (Optional)
N/A

Contributor details
Your Expensify account email<EMAIL_ADDRESS>Upwork Profile Link: https://www.upwork.com/freelancers/~01135779bc0035c9ae

Contributor details
Your Expensify account email<EMAIL_ADDRESS>Upwork Profile Link: https://www.upwork.com/freelancers/~01135779bc0035c9ae

Proposal
Please re-state the problem that we are trying to solve in this issue.
The frontend character field limit is 100, but the backend character limit is 40 characters. As a result, there's no error being displayed on the front-end when someone enters a value of 40+ characters and it doesn't get saved either.
What is the root cause of that problem?

In here and here, we're not using the correct max length character limits.
In here where we validate legal names in bank account flow, we don't even have validations for the max length

What changes do you think we should make in order to solve the problem?

In here and here, use CONST.LEGAL_NAME.MAX_LENGTH instead of CONST.TITLE_CHARACTER_LIMIT
In here, add validations for max length (using CONST.TITLE_CHARACTER_LIMIT, or if we want a completely different max length for bank account legal names, then define that new limit as a const and use here)

There're a few other places that are legal names-related but missing max length validation, like here, we can consider fixing them too.
What alternative solutions did you explore? (Optional)
NA

I think the right course of action here is to update the character limit to 40 for this field to match the backend. CC: @joekaufmanexpensify

@trjExpensify is there a reason we wouldn't update the BE to match the FE limit of 100? There's no hard and fast rule here, but 100 for a field like this is the standard we had landed on. So unless there's some specific benefit to 40, I feel like it could make sense to standardize on 100 personally.

@parasharrajat Could you give some feedback on my proposal? I think only mine fixes the issue fully in the app.

Can you please reconsider the assignment, thanks

I'll defer to @parasharrajat since he has the most context here.

@trjExpensify is there a reason we wouldn't update the BE to match the FE limit of 100? There's no hard and fast rule here, but 100 for a field like this is the standard we had landed on. So unless there's some specific benefit to 40, I feel like it could make sense to standardize on 100 personally.

@joekaufmanexpensify we could do that, but I was assuming we had a 40 character limit on the backend for a reason. Perhaps @chiragsalian can help us find that and follow the trail to see if there was a documented reason for it?

Sounds good! When I'd investigated a lot of the field length limits previously, we had just picked a number we thought made sense for a lot of them. But def curious to here if there was a specific reason for the 40 for this one. If there was, totally fine with me to stick with that too.

I can find the commit in Web-E where we updated the firstName field to 100 characters, but I can't find the equivalent for the legalFirstName. CC: @luacmartins as that was your commit, maybe you know?
TL;DR - There's a mismatch between the 100 character limit for the field on the front-end and the limit on the backend -- which appears to be 40. So we are saving it on the frontend, but not the backend (and not showing an error between 41-99 characters long. We're trying to figure out if we can follow the git blame for some reason as to why 40 is being set as the maxLimit of legalFirstName on the backend, or whether we should update it to 100 to match the front-end.

My PR says Increases display name max length to 100 chars for consistency with legal name. So legal name must have the same limit?

Haha yeah, on the back-end that doesn't seem to be the case. Though I can't corroborate that by finding the maxLimit for legalName.
The reason I think it's 40 and backend is because when I was testing (steps created below) in NewDot across two devices, 40 or 41 characters is the diff on whether it updates on the second device or not (suggesting it isn't updated on the backend, right?).

On deviceA go to settings > profile > personal details > legal first name
Enter a name that's 100+ characters long i.e gfkfkfkfkfkfkkfkfkfkfkfkfkfkfkfkffkkfkgkgkgkkgkgkgkgkgkgkgkgkgkgkgkgkgkgkgkgkgkgkgkgkkgkgkgkgkgkkggkk
Observe the error that the 100 character field length is exceeded
Now enter a name that's 10 characters long i.e gkgkgkgkgk
Switch to deviceB, observe that the legal first name updates
On deviceA, enter a name that's 41 characters long i.e gfkfkfkfkfkfkkfkfkfkfkfkfkfkfkfkffkkfkfka
Switch to device B, observe that the legal first name doesn't update
On deviceA, enter a name that's 40 characters long. i.e gfkfkfkfkfkfkkfkfkfkfkfkfkfkfkfkffkkfkfk
On deviceB, observe that the legal first name does update.

Sorry for the delay, alright looks like there are two things here.

Front end wants to set legalLastName limit to 100, And
Back end currently sets legalLastName limit to 40.

Alright i think you guys found the code for front end. Let me check where the code is in the backend.
It looks like we intentionally set the limit to 40 in the PHP code here, code,
$invalidParams = array_filter(
    ['legalFirstName' => $legalFirstName, 'legalLastName' => $legalLastName],
    fn ($value) => mb_strlen($value) > self::MAX_LEGAL_NAME_LENGTH
);

And MAX_LEGAL_NAME_LENGTH is set to 40. Looks like this constant MAX_LEGAL_NAME_LENGTH is used just once i.e., in this spot.
I don't see anywhere else in PHP or auth where we set the character limit for legalLastName. So if we update the constant MAX_LEGAL_NAME_LENGTH we should be good.
Next to find out why we chose 40 in backend, looking,
Apparently it used to be a length of 150 but we changed it to 40 here. The reasoning in the PR says,

This PR updates the length allowed for us to set a legal first name in the app. It was at 150 characters, but as you can see in the linked issue, Marqeta requires that the legal first name be between 0 and 40 characters.

So yeah we should not update the front end to 100 until we confirm with marqeta that they support 40+ characters in legal last name.

I've asked marqeta here. For now front end should set the same limit as the backend because if marqeta server processes this legal last name as before then if we give it a legal last name over 40 characters we'll get the error,
'500 Marqeta error (httpResponseCode: 400, errorCode: 400001, errorMessage: Invalid input(s): last_name size must be between 0 and 40,first_name size must be between 0 and 40)'

We can wait for marqeta to respond if things have changed but instead of waiting for them i feel like we should proceed with only allowing character limit to be 40 for now.

I was able to confirm in the marqeta docs that the last name character limit is 40 as well - docs.

So yeah front end should be updated to match this.

@parasharrajat Do you have any feedback for my proposal?
I believe it's the only one to fix the issue fully in the app.
cc @chiragsalian

@GandalfGwaihir, your proposal LGTM. Feel free to create a PR.
@nkdengineer,

In here, add validations for max length (using CONST.TITLE_CHARACTER_LIMIT, or if we want a completely different max length for bank account legal names, then define that new limit as a const and use here)

Nice attempt but we shouldn't be changing the limit of bank account first/last name. The only current issue is with details which is associated with an ecard since marqeta has a limit. Bank accounts and debit cards can have a much higher character limit.

mentions a few more places that might also have the same issue. I am not currently sure if they are valid instances of the current problem

Yeah I'm pretty sure we don't need to update this elsewhere since this problem only exists in the reported flow for now. The legal last name in this flow will be used for expensify cards which is why we have a limit.

Nice attempt but we shouldn't be changing the limit of bank account first/last name.

@chiragsalian The issue here is that we don't have any length limit at all on the bank account first/last name. So now the user can enter a name exceeding the max length limit, go all the way to the last submission step, then the back-end will throw an error there.
Do you think that behavior is fine or we should add client-side length validation for that field (like the rest of the app)?

Nice attempt but we shouldn't be changing the limit of bank account first/last name.

@chiragsalian The issue here is that we don't have any length limit at all on the bank account first/last name. So now the user can enter a name exceeding the max length limit, go all the way to the last submission step, then the back-end will throw an error there.
Do you think that behavior is fine or we should add client-side length validation for that field (like the rest of the app)?

user can enter a name exceeding the max length limit, go all the way to the last submission step, then the back-end will throw an error there.

If the backend does throw an error for that flow i think we should capture that as a separate issue. Because I'm pretty sure in the backend we don't have the 40 character limit for bank account names. So if an error is thrown we should investigate and find the cause of it.

Payment summary as follows:

$250 to @GandalfGwaihir for the bug fix - offer sent
$250 to @parasharrajat for the C+ review - request through ND

@GandalfGwaihir paid, closing!

Ah yes, the change was announced on the 4th April (when this issue was created), but went into effect on April 5th.
Feel free to request an extra $250 on ND. @GandalfGwaihir, I've sent you an offer for $250 as well.

Done and paid @GandalfGwaihir.

$500 approved for @parasharrajat


Move to C++11

The codebase does not require modern C++  (14, 17), as far as I can see. I'd like to see us move all code to C++11, and enforce this in the CMakeLists.
As a result, commandline can be integrated into more C++ projects.

Closed by 70a60627cd3fe5a2de1c0cca7c052b8e3a337c59


sdk4.45.1

Upgrade azure-cosmos to 4.45.1

See #23 as well

Should we close this in favour of #26 or #27?


fix(es/modules): Do not call Path::parent() for FileName::Anon

Description:
Related issue:

Closes #8660

Thank you so much for quick fix!!


[Security] CSRF Header not sent from jquery ajax due to invalid cookie name in https site.

Summary
When I use https with my site I face 403 status code for the following ajax request "/admin/sync/ticket". After debugging the issue I found out that the csrf header is not sent from my browser with any ajax request. The main cause is that the js code try to read a csrf token with the name "https-_csrf" https://github.com/oroinc/platform/blob/master/src/Oro/Bundle/UIBundle/Resources/public/js/extend/jquery.js#L18 and the server side code is returning a cookie with the name "_csrf" https://github.com/oroinc/platform/blob/master/src/Oro/Bundle/SecurityBundle/Csrf/CsrfRequestManager.php#L53
Expected Result
I think the "CsrfRequestManager" should have an implementation similar to this one https://github.com/oroinc/platform/blob/master/src/Oro/Bundle/ApiBundle/ApiDoc/SecurityContext.php#L159
Details about your environment

OroPlatform version: 4.1.3
PHP version: 7.3.19
Database mysql  Ver 14.14 Distrib 5.7.24, for Linux (x86_64) using  EditLine wrapper
Server operating system CentOS
Web-server Nginx with PHP-FPM behind cloudflare proxy nginx is using only port 80 and I already setup it is trusted proxy ips

Hi @mahmouds,
Make sure you don't have mixed content on a page, and all the resources are served using HTTPS.

For any one facing this problem. We managed to fix this problem by overriding the current oro implementation. We re implemented the following 2 services in one of our bundles ("oro_security.event_listener.csrf_protection_request_listener", "app_security.csrf_request_manager").
We used the following function https://github.com/oroinc/platform/blob/master/src/Oro/Bundle/ApiBundle/ApiDoc/SecurityContext.php#L148 instead of the use of the constant "CSRF_TOKEN_ID".

After an investigation, we discovered this is a bug. Thank you for the report!
Internal ticket id #BAP-20029

Hi @mahmouds,
The team cannot reproduce the issue locally. Tried with a different configuration with no luck. The required "https_-csrf" cookie was always generated as expected.
The issue might be related to the previous installation that worked without HTTPS on the same domain. In this case, clearing the browser cookie resolves it.
Also, it might be related to the way HTTPS is configured on a web server side. For example, with nginx and HTTPS proxy, you will have a similar issue, if the virtual host doesn't have fastcgi_param HTTPS on; set. So the application doesn't know it's served over HTTPS.
As for now, I'm closing the issue. Feel free to reopen it, in case you would be able to provide more details on how to reproduce it locally.

Dear @anyt As I mentioned my previous comment. I already implemented a work around for this bug.
As for the reproduce steps.
Please open the following line https://github.com/oroinc/platform/blob/master/src/Oro/Bundle/ApiBundle/ApiDoc/SecurityContext.php#L159
and compare it with the following line
https://github.com/oroinc/platform/blob/master/src/Oro/Bundle/SecurityBundle/Csrf/CsrfRequestManager.php#L53
If you need more steps please tell me.

By steps to reproduce, I mean the list of actions we have to do to see the issue. It might involve code customizations or specific web server configuration. Comparing the above code doesn't make us understand the issue, as you refer to two different things. In the first place, we read the cookie by name in the request. In the second case, we refresh the token by id in token storage. There is no direct relation between their names.

Do any steps that require refreshing the https csrf cookie


Download the SpatialOS SDK as part of cargo-spatial

Users need to have the SDK downloaded before they can compile the Rust SDK, and this is currently handled as a manual step before they can even build their project. We should handle this automatically as part of cargo-spatial. This should include specifying a library version in your Spatial.toml configuration file.

Going to grab this to become more familiar with the cargo-spatial part of the codebase :smile:


Add Applied Mekanistics support to the ME Bridge

PLEASE READ THE GUIDELINES BEFORE MAKING A CONTRIBUTION

Please check if the PR fulfills these requirements

[x] The commit message are well described
[x] Docs have been added / updated (for features or maybe bugs which were noted). If not, please update the needed documentation here. This is not mandatory
[x] All changes have fully been tested

What kind of change does this PR introduce? (Bug fix, feature, ...)

Feature: Added Applied Mekanistics support to the ME Bridge.

What is the new behavior (if this is a feature change)?

Players can now use listGas() to list all Applied Mekanistics gases in the ME network.

Does this PR introduce a breaking change? (What changes might users need to make in their scripts due to this PR?)

No.

Thanks for your work!


Implement default styling

We should have styling for implementing i.e. fonts, typography, spacings and colors
Maybe add a hardcode /style-guide page where all elements colors and components are available?

added a style guide page, we can add more components later:  #180


[SDL 0075] OEM specific Human Interface Device support as Plug-in architecture in SDL proxy

Proposal: OEM specific Human Interface Device support as Plug-in architecture in SDL proxy

Many OEM head units (ex. Lexus Remote Touch, Mazda Commander Control, BMW Gesture Control, Audi MMI) do not support direct touch interaction, but rather support a focus and select model driven by physical controls. This proposal describes a proxy plug-in interface that models the physical controls as HID devices with OEM-specific plug-in implementations. Note: From conclusion in Steering Committee, this proposal was changed to alt#1 (specify proper RPC, not plug-in architecture).

Review: https://github.com/smartdevicelink/sdl_evolution/issues/219
Steering Committee Decision:

The Steering Committee has agreed to move forward with a revised version of Alternative 1 for this proposal, and focus on RPC changes only.  While this would typically warrant "returning for revisions," the Steering Committee has decided to make an exception and "accept with revisions" so that the feature can meet the deadline to be contained within the Core 4.4 Release.

This proposal has been accepted with the following revisions, to be made by the Xevo team:

Alternative 1 will be the planned approach, with focus only on RPC changes - a separate proposal describing a fuller structure around proxy implementation should be entered at a later date
Add ID to SpatialStruct
Change HapticSpatialData array from mandatory to optional
Increase the maximum size of the HapticSpatialData array (to at least 100, possibly 999)
Add the following to the description of SendHapticData RPC: when a request is sent, if successful, it will replace all spatial data previously sent through RPC

These changes have now been reflected in .md file.

Updated with evolution pull request..
Add a single param to the VideoStreamingCapability struct:
    <struct name="VideoStreamingCapability">
        <description>Contains information about this system's video streaming capabilities.</description>
        ....
        <param name="hapticSpatialDataSupported" type="Boolean" mandatory="false">
            <description>True if the system can utilize the haptic spatial data from the source being streamed. </description>
        </param>

    </struct>

Updated with two evolution pull requests, accepted on August 22.

Change HapticSpatialData parameter name to hapticSpatialData

Summary of changes:
Change the name of the HapticSpatialData parameter to hapticSpatialData

Change name of SpatialStruct to HapticRect

Summary of changes:

Change SpatialStruct to HapticRect
Change SendHapticData parameter name to HapticRectData
Remove the xy width and height from HapticRect struct into its own struct called Rectangle
Change descriptions to better reflect Rectangle


Prospective Feature List

The following await decision making once a first-pass attempt has been given.

Labels for systematics & collections.
Photo measurement correction.
Plate creation (including positioning).
Measurement background creation.
Patterning (collection of photos to single photo).
Image compression.
Image enhancement.
3D model creation.
Scans to 3D model.
(less likely) fossil identification.
Metadata management (cataloging specimens).
Location analysis (from coordinates).
(less likely) fossil photogrammetry

Adding this to the Backlog milestone since I expect this is a task that will develop over timescales longer than several Sprints.

Ran the following prompt by ChatGPT 4o on 2024-11-15:

Which tools might the everyday fossil collector want for organizing, documenting, and understanding their collections? How about academic paleontologists? List 50 utilities that could be supported via a Python code base:

LLM Output

Here’s a comprehensive list of 50 utilities that both everyday fossil collectors and academic paleontologists might find useful for organizing, documenting, and understanding their collections. These utilities could be supported by a Python code base, utilizing various libraries and tools for data management, image processing, geospatial analysis, and scientific modeling. I’ve divided the list into two sections for easier reference.
Everyday Fossil Collector Utilities

Fossil Cataloging Tool – A Python app to manage a collection, including fields for species, age, location, and acquisition details.
Geolocation Logger – A tool to record GPS coordinates and locations where fossils are found (using libraries like geopy or gps).
Photographic Documentation – Image capture and enhancement tools to record fossils with features like cropping, adjusting brightness/contrast, and adding metadata.
Fossil Dating Helper – A basic tool for calculating approximate fossil age based on geological strata and locality (integration with geological databases).
Fossil Identification Assistant – An image classification model (using TensorFlow or PyTorch) to assist in identifying fossil species from photos.
Specimen Inventory System – A database for tracking fossils with details such as catalog number, condition, notes, and storage location.
Field Notebook – A text-based tool to record field notes and observations (integrating Markdown or Jupyter Notebooks for structured documentation).
Specimen Barcode Generator – Generate and print QR codes or barcodes for organizing and tagging fossil specimens.
Weather Tracking – Log the weather at the time and location of fossil collection to help document environmental conditions.
Collection Valuation Tool – Estimation of fossil value based on rarity, age, condition, and market data.
Fossil Preservation Tracker – Keep track of the preservation techniques used on fossils (e.g., resin coating or fossil stabilizer).
Geological Map Integration – Tool to overlay fossil locations onto geological maps for visual analysis of fossil distribution.
Data Backup Utility – Automated backup of digital records and photos to cloud storage services.
Fossil Comparison Tool – Side-by-side comparison of fossils with known specimens in a local database or online resource.
Fossil Catalog Exporter – Generate printable PDFs or CSV files of the fossil collection for easy sharing or archiving.
Fossil Annotation Tool – Mark specific features (e.g., bone structure, preservation condition) in images and associate notes.
Data Validation – Automatic checks for errors or inconsistencies in the catalog (e.g., incorrect dates, missing data fields).
Fossil Collection Growth Tracker – Visual representation of the growth of a collection over time (line graphs, bar charts).
Fossil Trading Platform – A marketplace for collectors to buy, sell, or trade fossils with built-in valuation features.
Specimen Loan Management – Track fossils that are loaned out or shared with other collectors, including dates, loan terms, and contact info.
Geology/Stratigraphy Comparison – Compare fossil collection locations against known geological maps or stratigraphy databases.
Fossil Fossilize Helper – Guide for collectors on how to properly fossilize their specimens.
Fossil Storage Tracker – Organize and log storage boxes, cabinets, or display cases where fossils are stored.
Specimen Label Maker – Generate printable labels with QR codes or barcodes for easy specimen identification in physical collections.
Fossil Transport Log – Track the transport of fossils (when and how they were moved or shipped).

Academic Paleontologist Utilities

Species Classification System – A comprehensive tool for classifying fossil species based on morphological features (using machine learning models).
Paleoclimate Modeling – Tools for analyzing and simulating past climate conditions based on fossil data.
Stratigraphy and Age Estimation – System for linking fossil specimens to known stratigraphic layers and estimating their absolute ages.
3D Model Viewer for Fossils – Visualization tools (using PyVista, VTK, or Mayavi) to view 3D models of fossils for analysis.
Fossil Data Mining – Use of NLP techniques for mining academic papers, publications, and databases for fossil data (using spaCy or NLTK).
Fossil Image Analysis – Advanced image analysis for detecting features like teeth wear, bone structure, or surface texture.
Taxonomic Database – A comprehensive taxonomy and phylogeny management system for tracking the evolutionary relationships between fossils.
Fossil Geographic Distribution Analysis – Geospatial analysis using GIS tools (geopandas, shapely) to analyze the geographic distribution of species over time.
Geochemical Data Analysis – Analyzing isotopic data from fossils to interpret past environments or diets.
Paleontological Database Querying – A tool to query and explore large fossil datasets, including connections to global paleontological databases.
Fossil Preparation Workflow – Guide and workflow for preparing fossils for study, including cleaning, stabilization, and sectioning.
Fossil Database Integration – Integrating multiple databases (museum collections, field data, etc.) into a single access point for querying.
Phylogenetic Tree Construction – Build and visualize phylogenetic trees for fossil species based on shared features or genetic data.
Fossil Phenotypic Analysis – Statistical analysis of phenotypic features using tools like scipy and matplotlib to detect trends across different fossil specimens.
Machine Learning for Fossil Recognition – Use of machine learning to recognize and classify fossil species from images or 3D scans.
Paleobiology Data Modeling – Creating models to simulate the ecology, biology, and behavior of extinct species based on fossil records.
Radiometric Dating Software – Specialized tools for analyzing radiometric dating results and cross-referencing them with fossil data.
Fossil Research Paper Organizer – A tool for managing and organizing paleontological papers, citations, and research notes.
Paleontological Field Data Collector – Field data collection app for mobile devices to track fossil locations, environmental conditions, and other observations in real-time.
Fossil Metadata Standardization – A tool to ensure consistency in metadata collection (species name, geological time, age, etc.) for better cross-referencing.
Virtual Fossil Database – An online platform where paleontologists can share, upload, and collaborate on fossil data.
Fossil and Rock Texture Analysis – Image processing techniques to analyze and compare rock and fossil textures (using libraries like scikit-image).
Fossil Excavation Logbook – A logging system to record excavation details, including location, depth, and notes on fossil preservation.
Fossil Time-Series Analysis – Tools to analyze temporal patterns in fossil records (species evolution, extinctions, etc.) using time-series analysis.
Paleontological Data Sharing Platform – A system for sharing fossil data with other researchers, institutions, or the public in open-access formats.

Python Libraries and Tools to Implement These Utilities:

Polars, Pandas: Dataframe management for organizing fossil data.
geopandas, folium: For geospatial analysis and map integration.
PyTorch, TensorFlow: For machine learning and image recognition tasks.
matplotlib, seaborn, plotly: For visualizing trends, maps, and distributions.
scikit-learn, xgboost: For data analysis, classification, and regression models.
PyVista, Mayavi: For 3D modeling and visualization.
spacy, nltk: For natural language processing and text mining in research papers.
SQLAlchemy, SQLite, PostgreSQL: For database management and querying.
openpyxl, xlrd, xlsxwriter: For reading and writing Excel files.

These tools, when implemented together in a Python ecosystem, can create a robust and efficient suite for fossil collectors and paleontologists alike, helping them manage, analyze, and share their collections and research.


Update equalsverifier to 3.4.3

Updates nl.jqno.equalsverifier:equalsverifier from 3.4.2 to 3.4.3.
I'll automatically update this PR to resolve conflicts as long as you don't change it yourself.
If you'd like to skip this version, you can just close this PR. If you have any feedback, just mention me in the comments below.
Configure Scala Steward for your repository with a .scala-steward.conf file.
Have a fantastic day writing Scala!

Ignore future updates
Add this to your .scala-steward.conf file to ignore future updates of this dependency:
updates.ignore = [ { groupId = "nl.jqno.equalsverifier", artifactId = "equalsverifier" } ]

labels: test-library-update, semver-patch

Codecov Report

Merging #784 into master will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #784   +/-   ##
=======================================
  Coverage   82.71%   82.71%
=======================================
  Files          73       73
  Lines        5376     5376
  Branches      145      145
=======================================
  Hits         4447     4447
  Misses        929      929

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 00c1729...28fc27d. Read the comment docs.


[Question] Update SwiftUI List when adding or removing an item from the store

Hi all,
maybe this is a dumb question but I would like to update automatically a list every time an item is inserted or removed.
This is the sample code I'm using but nothing happens.
As far I understood, Store is an ObservableObject while items is a Published, but it's not a @StateObject hence the update will not work.
Any hint on how to overcome this issue?
Thanks,
Lorenzo
extension SampleStruct {
    static let preview = [SampleStruct(value: "value")]
}

extension Store where Item == SampleStruct {
    // Initialize a Store to save our images into
    static let itemsStore = Store<SampleStruct>(
        storage: SQLiteStorageEngine.default(appendingPath: "Items")
    )
}

struct ContentView: View {

    @Stored(in: .itemsStore) private var items

    var body: some View {
        VStack {
            List($items.items) { item in
                Text(item.value)
            }
            Button("Add") {
                Task {
                    do {
                        try await $items.insert(SampleStruct(value: "My Sample Value"))
                    } catch {
                        print(error)
                    }
                }
            }
        }
        .padding()
    }
}

Hi there again @flexaddicted! The problem is here is that your source of truth for this data (the @Stored property) is in the view that's rendering the data itself. A @State or @StateObject property signals to a SwiftUI view that it should be redrawn when a change occurs, but @Stored isn't a DynamicProperty so it doesn't make that promise.
The solution is to create an ObservableObject class that holds your @Stored property, I tend to call these objects Controllers. (As I've written about extensively here.) My suggestion would be to create a Controller-type object (you can call it whatever you'd like) to do the actual work of manipulating the Store, and your ContentView would hold onto that ObservableObject as a reference using @StateObject.
If you need a reference for how to accomplish this the Boutique Demo project can serve as a model. In it I have an ImagesController which is used as a @StateObject inside of the RedPandaCardView, thus creating a system where changes to the Store propagate in realtime.
Hope that helps!

Hello @mergesort! Thank you again for your reply.
Looking at the demo project I've written a solution like that:
final class BookmarksViewModel: ObservableObject {
    @Published private(set) var newsLetters = [NewsLetter]()
    @Stored(in: .newsLettersStore) var storedNewsLetters

    private var cancellables = Set<AnyCancellable>()

    init() {
        $storedNewsLetters.$items.sink { [weak self] newsLetters in
            self?.newsLetters = newsLetters
        }.store(in: &cancellables)
    }
}

used in the following manner:
@StateObject private var viewModel = BookmarksViewModel()
Not sure if this looks like an elegant one or it could become a bottleneck when the number of elements becomes huge.
Any suggestion?
Thanks,
Lorenzo

Like I mentioned in #48 since this is happening in memory it shouldn't be a bottleneck unless you're saving large objects (usually binary files), or some very, very large number of them. Your implementation should be as efficient as what's happening in the Boutique Demo project, so I wouldn't worry about it.
If you'd prefer to assuage your concerns rather than listening to my ruminations, there's actually a Performance Profiler project in the Boutique repo. You could replace the demo models with your own model to test the read/write performance with as many objects as you'd like, or go a step further and generate an interface around it.
Does that help?

Yes, it helps a lot. Closing the issue.


Remove podmonitor deprecated api

See:
level=warn ts=2023-05-10T08:27:07.326931139Z caller=promcfg.go:801 component=prometheusoperator msg="'targetPort' is deprecated, use 'port' instead." version=v2.43.0-stringlabels
level=warn ts=2023-05-10T08:27:07.32710136Z caller=promcfg.go:801 component=prometheusoperator msg="'targetPort' is deprecated, use 'port' instead." version=v2.43.0-stringlabels

They renamed that because targetPort is a service term :)


[BUG] cannot present pane without animate if the pane is hidden

How to reproduce:
step 1. pane.hide()
step 2. pane.present({animate: false})
It seems that the pane will present with animate even i call present with animate: false.
Is this the correct behavior? Or how can i present a pane without animate when it's hidden?
thanks

Thank you @henryyuuu
You are right! This is probably because most useful case is
pane.present({animate: false});

pane.destroy({animate: false});

pane.present({animate: false});

Hide function used with transition.
Does animate: false will fix your needs, or you need to using hide() function instead of present/destroy ?

hi @roman-rr,
thanks for fast reply, i just want to make sure if this is a bug or there's other public method that i missed.
i will use other method instead of hide in my case. Thanks very much.


Small fix default parameter --thresh on SSD example demo.py

Description
(Brief description on what this PR is about)
Checklist
Essentials

[ ] Passed code style checking (make lint)
[ ] Changes are complete (i.e. I finished coding on this PR)
[ ] All changes have test coverage
[ ] For user-facing API changes, API doc string has been updated. For new C++ functions in header files, their functionalities and arguments are well-documented.
[ ] To my best knowledge, examples are either not affected by this change, or have been fixed to be compatible with this change

Changes

[ ] Feature1, tests, (and when applicable, API doc)
[ ] Feature2, tests, (and when applicable, API doc)

Comments

If this change is a backward incompatible change, why must this change be made.
Interesting edge cases to note here

@zhreshold

what's the reason to change the default one from 0.5 to 0.6? @higumachan

@zhreshold
Because, help text of this argument is written by "help='object visualize score threshold, default 0.6" (written next line of that diff).

@zhreshold Updates?

I will update with argparse options, hard coded default values are no longer a good practice. Closing for this reason.


Vai steve tests

Modified version of steve api tests reflecting expected behavior when on-disk caching is enabled. The tests are in their own package to avoid conflicts with the original, for now. The tests can be migrated to rancher in which ever way, I just need to upload this somewhere.

superseded by https://github.com/rancher/rancher/pull/46015


Link Unfurling / Expanding

Do you have any idea how to enable link unfurling as described here?:

https://api.slack.com/docs/unfurling

I tried setting params to this:
var params = {
  unfurl_links: true
 };

but it didn't have any effect.

Cancel that, it did work. I think it may have been because I'd already posted the link I used within the previous hour.


Unable to reset password

Hi. Some of my colleagues and I are unable to reset our password. After clicking reset password, I never got an email.  I also tried to log on too many times because I couldn't reset my password, and it says that my user is blocked.

Thank you for reporting this problem geojohannes.
I'll try to take a look at the mail service as soon as possible.
Just tested it, and I also do not get any email when trying to reset the password.

Any updates on this @poi33?

I put this on high priority.. yet not given any time to work on it.
I'll try to take a look at this as soon as I'm done with my current assignment. This is not really acceptible to have down for such a long time.

I think i found the issue.
I was able to create an account and ask for a password reset. Tell me if you still have issues.

I tried to reset the password on my current account, and I still don't get any email.

@eithe @geojohannes Could you try to reset your passwords now? We found the issue, but it might not be fixed yet.
@geojohannes i send an email to verify your email, it was a test to see if the accounts and email system worked. No need to pay any attention to that email.

It worked now. Thanks!
However, I can't log on with the same password on my mobile. It says after trying with the same password "Unable to configure verification page."
I had the same bug before, that's what got me to reset the password in the first case.
Do you want me to open a new issue?

Looks like this is an issue with third party cookies, and seems that iOS devices are more prone to this error.
We would have bigger changes to the login system if this is to be prevented.
If you have turned third party cookies off on your device, you can turn these on to avoid htis issue.

Thanks, that worked


Error while loading converted hf model(from composer checkpoint)

I tried converting composer chkpt to HF using the below command:
python convert_composer_to_hf.py --composer_path mpt_finetune/llm-foundry/mpt7b_summary/checkpoints/ep3-ba240-rank0.pt --hf_output_path mpt_finetune/llm-foundry/mpt7b_sum1/ --output_precision fp32
It ran successfully but while loading the model using below code i am getting error:
error:
mpt_finetune/llm-foundry/mpt7b_sum requires you to execute the configuration file in that repo on your local machine. Make sure you have read the code there to avoid malicious use, then set the option trust_remote_code=True to remove this error.
code:
from transformers import AutoTokenizer, AutoModelForCausalLM,GenerationConfig
import torch
tokenizer = AutoTokenizer.from_pretrained("mpt_finetune/llm-foundry/mpt7b_sum")
model = AutoModelForCausalLM.from_pretrained("mpt_finetune/llm-foundry/mpt7b_sum")
Am i missing anything?

Hi @singhalshikha518 , yes you need to add trust_remote_code=True, e.g.
import transformers
model = transformers.AutoModelForCausalLM.from_pretrained(
  'mosaicml/mpt-7b',
  trust_remote_code=True
)

I tried adding trust_remote_code = True. But still same error

You'll need to add it the tokenizer as well, if you didn't already.

@singhalshikha518 -- closing this as stale. Please re-open if adding the trust_remote_code to both the model and the tokenizer did not solve the issue. Thanks!


AddPlan & Test_Scenario.  Comments needed!

@vjd @dpastoor

given that you accidentally committed the plan to the actual repo can't comment directly on some things in this pull request so I'm going to respond to some other things in an issue


Make session public in TlsStream

Some very important data provided by Session are currently hidden (e.g. which protocol was selected by the handshake).
Ref: https://github.com/async-rs/async-tls/issues/30

@momann when this is merged you'll be able to get the selected ALPN protocol like this:
use rustls::{Session}; // don't forget this
...
connector.connect("google.com", tcp_stream).await?;
socket.session.get_alpn_protocol();

Also waiting for this feature.

I personally need to set some stuff about the session, eg.
session.set_buffer_limit(1_000_000);

Status?

As stated on other places on this tracker, I don't want to expose rusttls types directly. async-tls is rather intended to implement high-level operations on TLS connections rather than having users implement those themselves. It's also intended to be engine-independent.
I know I'm far away from this goal, as I was sidelined, which is the reason why I put a maintenance notice our, showing a path to a structured handover to new maintainers. It's important to me though that the above design is taken over along with it.


.snmprec Generation

I have a group of .MIB files and I need to generate .snmprec files related with those MIBs. How can I do it?
mib2dev.py --output-file=./data/public.snmprec --mib-module=SNMPv2-MIB
This command only works for "SNMPv2-MIB" module.

You might read #429 to learn where to post such issues.


Rework ValidationError and replace the related traceback with a nice error message

A traceback should be not shown or raised when some of the ValidatorError are raised across different command flows. Instead, there should be a nice error message shown to the user.

If we want to hide the stack traces across the board, we could use sys.tracebacklimit = 0 in deposit.py
That would result in something like:
Please enter your mnemonic separated by spaces (" "). Note: you only need to enter the first 4 letters of each word if you'd prefer.:
ethstaker_deposit.exceptions.ValidationError: That is not a valid mnemonic, please check for typos.

sys.tracebacklimit = 0 seems too radical. Instead, I would try to catch our ethstaker_deposit.exceptions.ValidationError exception globally and output the content of the error message.


File Size detection seems not always to be working

We have a repo containing big (>> 1MB) *.xml-files which are not detected by the setting of Max 1 MB. However *cpp-files with size >> 1 MB are detected! Is there a Limitation on what the plgin detects? Is XML treted as binary and if so why isn't it detected nevertheless? Thanks for any support! Cheers, Andreas

Hi Andreas,
there is no special/different on file types, but it is just a simple regex expression.
Please check how you have specified the size of the files. 1MB should be specified as 1048576.
Please note that depending in your tool, e.g. explorer file size is also shown as 1MB although it is slightly larger/smaller. Please check the file size down to the byte level.

Hi Christian, thanks for your quick answer... However we checked and the file size settings are as you proposed and indeed some *cpp-files are shown as being to large... However the missing ones of *.txt and *.xml-extension have a size of 23283442 and 19308664. The next biggest *.cpp-File has size 10625893 and is actually reported... so the mystery remains... Pls. help!

Tested with a new repo and only 85 files. Now the files too large (*.txt and *.XML) were all detected... However with 3000 files they weren't?!?

Tested a second time with app. 2800 files -> same issue as before

With an older version there was a limitation that only the last 100 commits/files were checked. This is fixed with the latest version 3.1.1. for Bitbucket 5.2 and newer. I try to release a version also 4.x in the next 1-2 weeks.

Thanksalot!

Hi Christian, any update for the 4.x version of the plugin in sight? Thanks for any support!


Don't redirect user to a step when the redirection failed to avoid a redirection loop

No tests for this?

Done!

Please resolve the conflicts.