Upgrade to Chromium 83.0.4103.106

Addresses #1076. I will let you know once I have a successful build.

My build fails with
../../chrome/common/chrome_content_client_constants.cc:23:33: error: cannot define or redeclare 'kChromePDFExtensionPluginName' here because namespace '' does not enclose namespace 'ChromeContentClient'

which seems to be unrelated to this PR but instead to 583b3e4c4b62c6c53b4efba2377c0c1f9845ad7a?

@lsfxz

which seems to be unrelated to this PR but instead to 583b3e4?

Thanks for testing, it's probably a typo I made. I tried to test the code on Portable Linux but got a somewhat cryptic STL error (something with EraseIf template declaration not being seen) with LLVM 8.0.1 from Debian buster backports. What platform are you building on? And what LLVM version?

My build succeeded and is running well; feel free to merge. Note that I started my build before either of the PDF plugin name patches were introduced.

@Zoraver How are you testing the builds? I'm trying to build Portable Linux with these changes using LLVM 8.0.1 from Debian buster backports, but it isn't working for me (strange STL errors).

I have been building the Portable Linux target in a Fedora 31 container using clang 9.0.1. I should probably move to Fedora 32 + clang 10, but I haven't had time to...

Does that mean the instructions in the Portable Linux README are out of date? They still recommend LLVM 8

They might be; the majority of the instructions were written before I started contributing to the project. I haven't built on Debian, so I can't attest to the accuracy of the Debian-specific info. Looking at the value of RELEASE_VERSION in tools/clang/scripts/update.py, Google appears to be using clang 11.0.0, which seems to be still in development.

@Eloston building on Arch (x86_64) and Manjaro ARM (aarch64); llvm 10.0.0 at the moment.
The x86_64 build also succeeded btw; I've also started another build from the fix at f08ce8b – will report back if any issues remain with it :)
The whole thing, jobs, pipelines etc. is over at gitlab  – I'm building it for a rather small audience there with minor changes (changing the name / branding so you can run it alongside chromium / ungoogled-chromium; building for aarch64 as well and including the vaapi/vdpau-patches). There are not many changes to the way it gets built compared to the way things are done by ungoogled-chromium in the AUR – so there's probably not much informational stuff there in addition to ungoogled-software/ungoogled-chromium-archlinux and jstkdng/ungoogled-chromium-archlinux anyway ^^.

hey @lsfxz , do you know the limits of gitlab runners? Last I checked they only have 1 core a few gb of ram. Are you using your own runners?
I ask as I'm trying to use github runners to build and I'm already past the 10 hour mark and you seem to be able to build in less than 10 hours.

The gitlab runners are rather limited as well; I can't recall the constraints from the top of my head, but definitely not enough to build chromium.
So yeah, after having looked around quite a bit (esp. for aarch64), there were a few interesting discoveries like https://cloud.drone.io – but nothing (free-ish) that was enough for rather large builds like building chromiunm.
In the end I caved in; now I'm using my own runners – the x86_64 builds are running on an "average" VPS that I already had anyway, while I always spin up a temporary (c1.large.arm instance)[https://www.packet.com/cloud/servers/c1-large-arm/] at packet.com for the aarch64 builds.

Had anyone try Hetzner? They provide some of the cheapest nodes:

Well, cheap is relative to ones economy. Maybe for someone 4 euros is a lot of money. Now, free has the same meaning for everyone no matter your economy.
I was even thinking about using google's own cloud build service to build UC, quite ironic if you ask me. I'd be doxing myself by that so... yeah, not an option.

Well, cheap is relative to ones economy.

They provide some of the cheapest nodes

I meant "some of the cheapest nodes on market"

yeah, OVH also has great prices.
I don't want to spend more money than what I already am, especially during covid times.

Automating spinning up (and spinning down) hourly instances (does Hetzner offer an API for that?) for builds would make it possible to keep costs as low as possible – but yeah, still wouldn't be free.
One can always use spare devices "at home" as well – you can just drop a gitlab-runner on some reasonably isolated device and build things on it. This, though, still requires having a spare device at hand, needs electricity and has potential security aspects that one might want to think about beforehand.
Sooo, yeah, somewhat unsatisfying.
For Open Source projects in general though it might be possible to ask for support at packet.com (https://www.packet.com/community/open-source/) or ask at https://cloud.drone.io/ for extending the time limit of the free instances – iirc. they do that if you're asking nicely / have a good reason; might need to take a look at their forums for that (and there's https://github.com/WorksOnArm/cluster for armv7/aarch64).
This would probably make the most sense for the ungoogled-chromium project as a whole – I doubt a "subset" of it (eg. "building for Arch") would be a "good enough reason" to get some support there.

That could work, but they are asking for your real name, so unless anyone here is willing to dox themselves or packet accepts pseudonyms then it won't be possible.

does Hetzner offer an API for that?

Honestly saying, haven't tried, but the do.

somewhat unsatisfying

Somewhat unsatisfying is Google dropping jumbo support. With it full compilation could fit into free allowances.

give some love to windows version :(

@lipici
github actions support windows. You could adapt https://github.com/ungoogled-software/ungoogled-chromium-archlinux/blob/master/.github/workflows/build.yml to build windows binaries.

Sorry, im just a creative person, not a tech, put me to create you a commercial, ideas for any application and so on.
On Tuesday, July 7, 2020, 8:54:47 PM GMT+3, JustKidding<EMAIL_ADDRESS>wrote:
@lipici
github actions support windows. You could adapt https://github.com/ungoogled-software/ungoogled-chromium-archlinux/blob/master/.github/workflows/build.yml to build windows binaries.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub, or unsubscribe.


fix(internals): future distutils deprecation

Issue #, if available: Fixes #906
Description of changes:
Removes dependency on distutils.

Checklist

[ ] Meet tenets criteria
[ ] Update tests
[ ] Update docs
[x] PR title follows conventional commit semantics

By submitting this pull request, I confirm that you can use, modify, copy, and redistribute this contribution, under the terms of your choice.

Thanks a lot for the future-proof change @nayaverdier  :) much appreciated!

Don’t worry, we’re gonna tackle this and 36 others during mypy fixes
On Wed, 22 Dec 2021 at 07:22, Michael Brewer @.***>
wrote:

@.**** commented on this pull request.
In aws_lambda_powertools/shared/functions.py
https://github.com/awslabs/aws-lambda-powertools-python/pull/921#discussion_r773627347
:

from typing import Any, Optional, Union

+def strtobool(value):
probably a good idea :)
—
Reply to this email directly, view it on GitHub
https://github.com/awslabs/aws-lambda-powertools-python/pull/921#discussion_r773627347,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAZPQBGA7QTYJQZK622G7J3USFVBFANCNFSM5KPL25IQ
.
You are receiving this because you modified the open/close state.Message
ID: @.***
.com>

haha. mypy does not complain about untyped methods :)

IIRC there’s a strict mode that it can flag
On Wed, 22 Dec 2021 at 07:25, Michael Brewer @.***>
wrote:

haha. mypy does not complain about untyped methods :)
—
Reply to this email directly, view it on GitHub
https://github.com/awslabs/aws-lambda-powertools-python/pull/921#issuecomment-999319189,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAZPQBCQO4NKPA52RYCY52TUSFVOVANCNFSM5KPL25IQ
.
You are receiving this because you modified the open/close state.Message
ID: @.***>


REPL must display useful information after executing commands

To debug and understand the result on executing commands with taiko. The REPL must display useful information. For e.g
>> click("Get Started")
Clicked button "Get Started"
>> scrollDown()
Scrolled down 100 pixels

taiko API can return functions that's parsed and displayed by the REPL

This must also handle error conditions. Prefix a status (tick/cross or ok/not ok)
>> click("Get Started")
ok - Clicked button "Get Started"
>> click("Get Started")
not ok - Cannot find any element with the text "Get Started"

Implemented.

Expected behavior

click("element not present")
not ok - Cannot find any element with the text "element not present"

Actual behavior

click("element not present")
Error: Navigation Timeout Exceeded: 30000ms exceeded, run .trace for more info.

That's the correct behavior.
Click must wait for the element as in single page applications the pages are not rendered upfront. Elements can be rendered after actions on the page.

On Windows Command prompt the tick and cross mark do not appear. A ? appears instead

Windows output
> openBrowser()
[PASS] Browser and page initialized
> closeBrowser()
[PASS] Browser and page closed
> closeBrowser()
[FAIL] Error: Browser or page not initialized...


feat: per-package server options

This PR adds per-package server options to resolve #2455. It is based on the previous work in #2456, but takes a different approach: options are loaded for the specific file in the file worker when print-paths is called, instead of loading them in the watchdog with a separate Lake command. This change addresses review comments made in #2456.
In doing so, it introduces two new Lake config fields:

leanOptions: -D flag options that are passed to both the language server and lean when building.
moreServerOptions: -D flag options that are passed to the language server.

Since print-paths must also accept a file path to compute the options for that file, this PR is changing the API for print-paths. As there have been numerous complaints about the name print-paths, I also decided to change it to setup-file in this PR, since it would break compatibility with the old Lake API anyways.
This PR also breaks compatibility with old Lakefiles, as it renames moreServerArgs to moreGlobalServerArgs, as suggested in the review for #2456.
Fixes #2455

(cc @Kha to adjust the Nix stuff)

The tests are red because of a bug in System.Uri.fileUriToPath?. I will investigate it later.

The tests are red because of a bug in System.Uri.fileUriToPath?. I will investigate it later.

It's worse: The tests used an incorrect URI format and it never caused problems before!

I missed something! Since you renamed moreServerArgs, the math package template needs to be updated as well:
https://github.com/mhuisi/lean4/blob/aa0774467e9ce6ab5f911bd06674593967283bbd/src/lake/Lake/CLI/Init.lean#L98-L118
Also, for temporary backwards compatibility, it might be worth it for one version to leave the PackageConfig.moreServerArgs  field and have moreGlobalServerArgs default to it. To deprecate a property like this one, I usually put a note on its deprecation in the docstring, remove the mention of it in the README, and potentially a warning issue during package config load if it is non-empty (for reference, see how I deprecated manifestFile).

Note that the Mathlib bot reporting that PR didn't complete normally is actually a failure:
Run lake exe cache clean
error: ./lakefile.lean:26:2: error: 'moreServerArgs' is not a field of structure 'Lake.PackageConfig'
error: ./lakefile.lean: package configuration has errors
Error: Process completed with exit code 1.

If you're able to make changes to the lean-pr-testing-2858 branch of Mathlib directory to make it compatible with these chaanges, please go ahead. Ping me if you need assistance on the Mathlib side.

@semorrison I noticed the mathlib bot has not posted a comment here. Do you know why?

@semorrison I noticed the mathlib bot has not posted a comment here. Do you know why?

It's here: https://github.com/leanprover/lean4/pull/2858#issuecomment-1806444671.
I'll prod it into rebuilding now.

@Kha decided that we do not want to adjust the Nix side for this PR. If you are using Lean 4 with Nix and stumbled upon this PR because it broke your environment, feel free to submit a PR to adjust the Nix side as well!


not login

i got an error when  login as an user.
{"line":213460,"column":25,"sourceURL":"http://localhost:8081/index.bundle?platform=android&dev=true&minify=false&app=com.testapp&modulesOnly=false&runModule=true"}

which error? could you provide the complete log

I used react native sample video calling sample code .
I just changed config file and click on login as user button , it is
showing alert message like already sent.
Please help me resolve it.
On Wed, Sep 29, 2021, 4:28 PM Dave Pol Lomber @.***>
wrote:

which error? could you provide the complete log
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/ConnectyCube/connectycube-reactnative-samples/issues/273#issuecomment-930069803,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AD7IUWOZNSF35DQPHB2IRL3UELWONANCNFSM5E7MWAOA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

The above alert is not complete
Plese post the complete erorr log

They are no error log , only geting error alert, guide me get log
On Thu, Sep 30, 2021, 5:17 PM Dave Pol Lomber @.***>
wrote:

The above alert is not complete
Plese post the complete erorr log
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/ConnectyCube/connectycube-reactnative-samples/issues/273#issuecomment-931248028,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AD7IUWK5SRARFJGAKSIFLQTUERE4NANCNFSM5E7MWAOA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

An updated video chat code sample with CallKit support is implemented

code sample https://github.com/ConnectyCube/connectycube-reactnative-samples/tree/master/RNVideoChat
blog post https://connectycube.com/2022/11/08/react-native-video-chat-code-sample-with-call-kit-support/
documentation https://developers.connectycube.com/reactnative/videocalling?id=callkit

Please try it at your end and raise an issue if it's still actual


Question: Maximum connections

Is there a maximum number of joins that can be done? Is it based on total for the account itself, or is it based on IP or certain process?

I don't think there is a limit. Although you will probably hit a rate limit on twitch's end before a node socket limit

See https://dev.twitch.tv/docs/irc/guide#command--message-limits


Interview section-- Interview Questions & articles

IMPORTANT: When creating your Pull Request, please use the following format for the title: Category - Resource Name & Section
PR Title samples:

Web development - CSS Portal & Tools
Web development - Leetcode & Challenges

Fixes Issue
Closes #109

Description:
Here i have added the interview section which includes videos and articles to read

Resource URL:

Checklist:
Before submitting your pull request, ensure that you have completed the following tasks:

[ ] I have carefully reviewed and adhered to the contributing guidelines before creating this pull request.
[ ] I followed the prescribed PR title template. (Check this if you're adding a resource)

Added the interview section .


Interaction not showing on screen

I can click and hear things happening, but is stuck on steam homepage.

Most likely your GPU is not supported. What GPU do you have?

Most likely your GPU is not supported. What GPU do you have?

Intel core i7 iGPU


what about image base 64?

screen share need image base 64?

Same issue in [v0.2.1]

Same issue, I can not even use this awesome node
请求作者大大更新一下，他一直强制需要一个image base64的输入端口

Same issue, I can not even use this awesome node 请求作者大大更新一下，他一直强制需要一个image base64的输入端口
The older version works, where this node doesnt require those two input

请使用comfyui上个月的版本。不要用这几天更新的新版。。。新版对自定义节点的逻辑修改了。
推荐使用 In version :ComfyUI Revision: 1692 [7114cfec] | Released on '2023-11-15'  testing,it runs normally.
ComfyUI-1115.zip

I don't know the reason about the bug, but I have made it working.
Update Comfyui to the latest commitment (for now It's ec7a00aa9644049c306dd0a2c02cb4f91f127286) And reload your workflow.
So I guess it's a Comfyui bug.

But to use sdxl_turbo, we have to use the latest version of comfyui. emmm, I'll wait for updates to this project.

But to use sdxl_turbo, we have to use the latest version of comfyui. emmm, I'll wait for updates to this project.

comfyui has been updated, fixing this bug


Add feature $manage_datadir

See discussion in #553

Jenkins standing by to test this. If you aren't a maintainer, you can ignore this comment. Someone with commit access, please review this and clear it for Jenkins to run; then  say 'jenkins, test it'.

jenkins, test it

Hi @electrical what is the status here.  Do you have any remaining concerns about this feature?

could you rebase the PR? it seems you got a commit of mine in your PR.

@electrical  Fyi I have refactored all the code here to use a config as recommended in the puppetlabs/lvm module.  After doing this, I have found that I no longer have the need for this feature.  Would you still like to merge this PR in anyway?

Anyhow I have rebased.

Actually, if combining with standard puppetlabs/lvm you would need:
$datadir = '/srv/es'
class { 'elasticsearch':
  datadir => $datadir,
}
Mount[$datadir] -> File[$datadir]

Hi,
If it all works without this modification i would rather not merge this in.
Feels it could cause confusion for people and might lead them in using other parts in a wrong way.
Thank you though for the contribution!


Send page load along to remote debugger

Small change to actually send along the page load timeout to where it matters. Tests are skipped because the page load timeout is not actually respected in appium-remote-debugger.

👍  however if we're going to commit a skip let's make sure to add a comment as to why

Haha! Yes. I added the comment to the version in appium-xcuitest-driver and not here.


world and body disturbance compensation

Good afternoon,
We are working on a project using the MRS flightstack and we would want to know what are exactly the world and body disturbance compensations ? Where do the disturbances come from and where can we remove it ?
Thank you in advance.

Hey, the math behind the disturbance estimators is described in here:
http://mrs.felk.cvut.cz/data/papers/mrs-platform.pdf
Thanks for showing an interest
Sincerely, Tomas
On Tue, Jun 30, 2020, 15:05 linuxdronethesis<EMAIL_ADDRESS>wrote:

Good afternoon,
We are working on a project using the MRS flightstack and we would want to
know what are exactly the world and body disturbance compensations ? Where
do the disturbances come from and where can we remove it ?
Thank you in advance.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/ctu-mrs/mrs_uav_controllers/issues/2, or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAMJLKCYFVP2KYP5BGZTXZDRZHPJPANCNFSM4OMG3MRA
.

Thank you for your answer ! It was very helpful. The world disturbance compensation compensates disturbance in the simulation environment like wind, correct ? But is it possible to remove those disturbances and where ?

Oh, ye, sorry, I misread your question. Yes, you are correct, the world
disturbances are the ones fixed to the world, e.g., wind, whereas the body
disturbances are fixed to the UAV body (typically a poor accelerometer
calibration can cause that, or air drag when flying with heading tangential
with the trajectory.
So in our simulation, there are usually no disturbances beyond the air
drag. So there is nothing to remove. Do you experience some significant
disturbances in normal flight? Btw, there is an rviz marker topic
control_manager/disturbances_markers, which shows the vectors of the
estimated disturbance (red = world, green = body, 1 m = 1 N).
Sincerely
Tomáš Báča
Czech Technical University in Prague
Department of Cybernetics
Multi-robot System Group
http://mrs.felk.cvut.cz/people/tomas-baca
<EMAIL_ADDRESS>st 1. 7. 2020 v 14:28 odesílatel linuxdronethesis<EMAIL_ADDRESS>napsal:

Thank you for your answer ! It was very helpful. The world disturbance
compensation compensates disturbance in the simulation environment like
wind, correct ? But is it possible to remove those disturbances and where ?
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/ctu-mrs/mrs_uav_controllers/issues/2#issuecomment-652388668,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAMJLKCAMCYK7OIEHO4KWXLRZMTVRANCNFSM4OMG3MRA
.

I do not experience significant disturbances but I experience static errors. To be clear I will explain what structure we use. We fixed the proportional and derivative gains of both the outer loop position control and the inner loop attitude control in the SO3 controller. We ask to track a fixed set point so there is no feedforward term. When removing the integral action (so the disturbances compensations and the modification of the mass) there is sometime a static error and sometimes not. It must come from the disturbances right ? But you said that there is no world disturbance except for air drag so it should not influence the static error. And are there body disturbances in a simulation ? I guess not. I will check the topic with the estimated disturbance ! Thank you

For example with Kp = diag(10,10,10), Kd =diag(7,7,7), Kr = diag(14,14,14) and Kw = diag(0.7,0.7,0.7) in the formulas attached in the picture (computation of thrust force and torques to apply on the drone) we obtain the following result (in the third picture). The reference is in orange and the drone real position in blue. The used drone is the T650 in a gazebo simulation.

the x axis units are seconds

And I forgot to tell but we also disabled the mpc tracker. The MPC tracker is no longer modifying the reference and the reference of the goto service is directly given to the SO3 controller.

Ye, so I can confirm that without the integrals, there is a steady-state
error, even in the simulator. I must admit, I rarely fly without the
integrals, since in real world, they are totally necessary. I guess that
there are effects that could cause this in simulation, e.g., the
accelerometer and gyroscope random walk, which are actually simulated
(check
https://github.com/ctu-mrs/mrs_simulation/blob/master/models/mrs_robots_description/urdf/t650.xacro).
There might be more. However, I don't see much of a purpose in your
actions. Why would you want to "disable" the disturbances, if they actually
model effects from the real world? Yes, in a perfect world, you would not
need an integrator in you controller, since the system itself contains >= 2
integrators, but you need one to counteract external disturbances and/or
input biases. And both occur on real hardware and are often prominent.
Moreover, I don't recommend disabling the mass estimator, since the
estimated mass is used by the SE3 to calculate the feed-forwards, as well
as the feedback.
Sincerely
Tomáš Báča
Czech Technical University in Prague
Department of Cybernetics
Multi-robot System Group
http://mrs.felk.cvut.cz/people/tomas-baca
<EMAIL_ADDRESS>čt 2. 7. 2020 v 21:33 odesílatel linuxdronethesis<EMAIL_ADDRESS>napsal:

And I forgot to tell but we also disabled the mpc tracker. The MPC tracker
is no longer modifying the reference and the reference of the goto service
is directly given to the SO3 controller.
—
You are receiving this because you commented.
Reply to this email directly, view it on GitHub
https://github.com/ctu-mrs/mrs_uav_controllers/issues/2#issuecomment-653185531,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AAMJLKHS4NALAOSBLPU2LMDRZTOI5ANCNFSM4OMG3MRA
.

Ok thank you for your detailed answer ! My goal was to make predictions on the future positions of the drone but since the disturbances are not taken into account in the predictions there is always a slight differences between the predictions and the drone real position. But now I know why :)


Add support for PipelinePermissions

Overview/Summary
Add new commands for Grant/Revoke/Set-ADOPSPipelinePermission
This PR fixes/adds/changes/removes

Add new commands for Grant/Revoke/Set-ADOPSPipelinePermission (Fixes #185)

As part of this Pull Request I have

[x] Checked for duplicate Pull Requests
[x] Associated it with relevant issues, for tracking and closure.
[x] Ensured my code/branch is up-to-date with the latest changes in the main branch
[x] Performed testing and provided evidence.
[x] Verified build scripts work.
[ ] Updated relevant and associated documentation.

I need to document the commands, I'll fix that before we can merge but would be glad if I could get a review on the code in the meantime.

Two thoughts (very much open for discussion, I have no strict opinions 😉)

Should we set a DefaultParameterSet? It is'nt needed, but for clarity? Might make it easier to read is my thought.
Should we maybe have Set-ADOPSPipelinePermission as an internal function? As this command doesn't serve any purpose apart from being called by Grant/Revoke it might be better to have it as internal. It would make it easier to document and test as we don't have to support the Set command per se, and also it prevents confusion by having two commands doing the same thing.

Another thing: Even though it works, could you please bump API version to 7.1-preview.1? According to the docs, 7.0 is still only for PAT basic auth (OAuth seems to work anyway, but who knows..). Since we're moving towards 2.0 and OAuth 7.1 is probably better to use just to be sure everything works.

Two thoughts (very much open for discussion, I have no strict opinions 😉)

Should we set a DefaultParameterSet? It is'nt needed, but for clarity? Might make it easier to read is my thought.

DefaultParameterSet will have no effect at all as long as there are no ambiguous sets. I can add it if you think it looks good when looking at the code, but I don't understand what clarity it brings.

Should we maybe have Set-ADOPSPipelinePermission as an internal function? As this command doesn't serve any purpose apart from being called by Grant/Revoke it might be better to have it as internal. It would make it easier to document and test as we don't have to support the Set command per se, and also it prevents confusion by having two commands doing the same thing.

Yes, that is probably for the best, I couldn't decide when I wrote it but in hindsight I think a private Set function is better. I'll fix that.


CI: Enable checkcommits

Run the checkcommits tool for all PRs under TravisCI.
Fixes #40.
Signed-off-by: James O. D. Hunt<EMAIL_ADDRESS>

@jodh-intel Hi,
I have raised #42 to add semaphoreCI checks for this repo, and we can add the checkcommits call in the .ci/setup.sh and change the file name that is called in the travis.yml file.
What do you think? That way we can remove the .ci/ci-setup.sh and reduce the number of scripts there.

Hi @chavafg - sounds good to me.

I'll rework this PR once #42 has landed.

Just a note for @jodh-intel #42 has now landed :-)

@grahamwhaley - thanks, branch updated.

lgtm
but you still have a WIP/DNM label attached - deliberate?

@grahamwhaley - removed ;)

lgtm


fmt: surprising behavior of structs with embedded error

Reported at the request of @FiloSottile after talking to him about it at #gopherconIS.
What version of Go are you using (go version)?
1.10.2 windows/amd64
Does this issue reproduce with the latest release?
I do not know, but i assume so since this is a syntax/behavior that i assume has not been changed.
What operating system and processor architecture are you using (go env)?
Windows
amd64
gopath is set to my configured one, everything else is default
What did you do?
https://play.golang.org/p/0BPsgof_9oI
https://play.golang.org/p/Z3hV6sMz9Ko (as minimal as it can be i think)
What did you expect to see?
I expected my stringer to be called and a string get generated
What did you see instead?
%!v(PANIC=runtime error: invalid memory address or nil pointer dereference)
Extra
Now, i was at a lecture at #gopherconIS while coding this and listening. So my full focus was not on debugging this, which is probably the reason it took me hours to figure out.
I was even using GoLand to debug it, but my breakpoints were useless at the time because my program was going from a fmt.Println(... directly to the Panic! thing... (also the debugger took forever to start, sometimes even giving me a connection refused error, but that's a different problem)
Now i assume most of you noticed my mistake, i did solve the problem eventually, i forgot to name the variables in my struct.
But the problem is that i did not understand why it is so important to name them until i met up with @FiloSottile at #gopherconIS. He explained to me that when i add these "naked" types to a struct, their functions actually join my struct (WTF?!?!?), in this case, Error() was suddenly a member of it, satisfying the only thing that Error interfaces need...
Solution
I don't know how to solve this, i assume "naked" types in structs are a desirable quality for something, but being a beginner at Go i have not been exposed to them.
You also don't do warnings, which is cool, maybe a linter can spot it?
But how many false positives would that have?
Maybe printArg() in $GOROOT/fmt/print.go could add a case in the default inside the giant switch, to not panic?
Or panic with a more descriptive error? (You fit the Error interface but that function is derpy, go fix your struct)

Considering the program does what language specification and the documentation of the fmt package say, I'm not sure what's surprising or magic here.
This snippet exhibits the same "problem" mechanism
type I interface{ m() }

func f() {
        var v I
        v.m() // <-- Compiles fine, but crash guaranteed here at runtime
}

playground

@cznic the problem isn't the documentation, it's that the error given tells me about a nil pointer dereference, when i wasn't trying to use pointers, i expected it to return the value, and channels to ensure that only Result could be returned, and since i sent a copy of the struct, and not a pointer, the nil pointer dereference error just confused me.
Thing is, being a beginner at Go, this king of thing is suuper confusing, and that's what the Go panel at the conference mentioned being important to hear about.

... the problem isn't the documentation, it's that the error given tells me about a nil pointer dereference, when i wasn't trying to use pointers, ...

The error looks correct to me. Dispatching a method call via an interface value amounts to dereferencing a vtable pointer. So, yes the code does use pointers (a nil one in particular.)
Implementation details are discussed for example here.
I believe the (minimized) example in the report works as intended.

Why not something like this? https://play.golang.org/p/Vpbsh8f86Qy displaying a string form of nil as {<nil>} feels ok in my case.

Nobody is arguing that the code should behave differently, but the combination of struct embedding and %s prioritizing Error() string is enough indirection to be confusing. How can we make the error message better and save the next developer some time? The first thing I can think of is %!v(PANIC=...) including information about what method it tried to call. Anyone has a better idea?

While adding additional info such as %!v(PANIC="runtime error: invalid memory address or nil pointer dereference", CALL=Result.Error) can give more clues where this happens it does not necessary mean the nil pointer deference was when dereferencing to call that specific error method but could have happened anywhere within the call. Which I think is also the case here since from  a quick look the .(*Result).Error is autogenerated and then calls the Error method of the embedded field.
Supplying a call stack might be better for debugging but could be viewed as breaking backwards compatibility as existing tests and code may rely on the documented format of the PANIC string/message.
/cc @robpike

All it means is that fmt caught a panic in a method it called. I worry that trying to be more specific may mislead people as to the nature of the problem.  The actual panic is recorded:
https://play.golang.org/p/nkyirMdK1DN
It might not be that the pointer is nil:
https://play.golang.org/p/NVndSFaGpvw

How about %!v(caught panic "runtime error: invalid memory address or nil pointer dereference" in (*Result).Error) / %!v(caught panic "whatever" in (*Foo).String)? To me that does not suggest the panic happened in dereferencing to call the method, but just that it happened somewhere in the call. However it gives enough information (Error was called instead of String, Result has an Error method) to debug the issue without knowing the answer already.

The Error() method was never called. The nil dereference panic occurs a step earlier. The nil interface value has a nil itable pointer. That pointer is dereferenced to find out the address of the Error method.

It was caused by an attempt to call Error(), the internals details are less important to help a developer figure out why a panic they are not expecting is happening.

Regardless of the final form of a potential new message in the event of a panic: Is more information in the panic string to make behavior with embedded methods more explicit worth breaking existing GO1 compatibility and possible programs that may depend on the documented syntax of %!verb(PANIC=panicstring)?
AFAIK in the past changes to fmt have been avoided to not break existing behavior (uint8 vs byte, length of %#06x vs %#6x ...).

From the fmt package:

If the panic is caused by a nil receiver to an Error or String method, however, the output is the undecorated string, "".

How does this not apply in this situation?

AFAIK (on phone not able to check asm) that only applies to the Error method that fmt calls which is the autogenerated Error for Result. Result is not nil but the embedded field. The call to the Error method of the embedded field than triggers the panic inside the sucessful call to the Result Error. The internal implementation of Result Error is not known to fmt.

I think @randall77 is onto something, the documentation literally states this exact situation!
If the panic is caused by a nil receiver to an Error or String method,
however, the output is the undecorated string, "<nil>".

I do not think the documentation was meant to imply that any panic due to any value anywhere down from the function that fmt called is captured by the statement as it would mean that  is printed even for values that are not nil. e.g. if fmt calls (*Result).Error() where *Result is not nil and then somewhere in what Error does (not related to Result value directly) there is a panic then I would not expect fmt to print that Result formatted is .  And as far as I understand Result is not nil in the example given but an embedded field is. Similar scenario just coded explicitly:
https://play.golang.org/p/0xBoa-PQiyh here Result is not nil but the panic happens to the call of Error of the embedded field.
The documentation could be changed to clarify that only panics where the value was nil that fmt called an Error or String method on are reported as "". The option that fmt would detect any nil pointer receiver panic down the call stack for other values would need stack traces for the panic and possibly code inspection for fmt to figure out what happend which sounds like a lot of added complexity which to me does not seem worth placing into fmt to solve the issue discussed.

I think we can perhaps do a little better along the lines that @FiloSottile suggested above, by mentioning the method without significantly changing the output.  CL 153827 changes the original program to print
%!v(PANIC=Error method: runtime error: invalid memory address or nil pointer dereference)

I'm certainly open to other approaches, but I think we should keep the %!v(PANIC=...) format.


Date picker set to last entered date by default

Open https://track-your-time.dev.ds4g.net/projects
Click "Date"
Actual result: See date picker with last selected date as default

Expected result: See current date as default date

There is no date-picker any longer.


Stop Password-Change Email on password-Update via LDAP

Currently a user will get an Email after login that the password has changed when password-caching is enabled. The preffered behaviour would be to simply not send a password-change-Email when a user-password is changed via LDAP.
THis has been reported on https://wordpress.org/support/topic/authldap-authentication-triggers-email-password-change-notification

Hi heiglandreas,
I was able to solve the problem with this code patch:

--- /tmp/authldap/authLdap.php	2015-10-12 14:04:20.000000000 +0200
+++ authLdap.php	2015-10-15 17:49:11.293313267 +0200
@@ -150,6 +150,10 @@
         return $user;
     }

+    if (isset($user) && $user->ID) {
+        return $user;
+    }
+
     authLdap_debug("User '$username' logging in");

     if ($username == 'admin') {
@@ -261,13 +265,13 @@
             return false;
         }

-        $uid = authLdap_get_uid($realuid);
+        $wp_user = get_user_by( 'login', $realuid );
         $role = '';

         // we only need this if either LDAP groups are disabled or
         // if the WordPress role of the user overrides LDAP groups
         if (!$authLDAPGroupEnable || !$authLDAPGroupOverUser) {
-            $role = authLdap_user_role($uid);
+            $role = authLdap_user_role($wp_user->ID);
         }

         // do LDAP group mapping if needed
@@ -338,18 +342,20 @@
         }

         // optionally store the password into the wordpress database
-        if (authLdap_get_option('CachePW')) {
-            $user_info['user_pass'] = wp_hash_password($password);
-        } else {
+        if (! authLdap_get_option('CachePW')) {
             // clear the password
-            $user_info['user_pass'] = '';
+            $password = '';
+        }
+        if ( $wp_user->ID && ! wp_check_password( $password, $wp_user->data->user_pass, $wp_user->ID) ) {
+            error_log('[AuthLDAP] ' . 'Password change ' . $realuid .' '.$wp_user->ID. ' '.$wp_user->data->user_pass, 0);
+            $user_info['user_pass'] = $password;
         }

         // add uid if user exists
-        if ($uid) {
+        if ($wp_user->ID) {
             // found user in the database
             authLdap_debug('The LDAP user has an entry in the WP-Database');
-            $user_info['ID'] = $uid;
+            $user_info['ID'] = $wp_user->ID;
             unset ($user_info['display_name'], $user_info['nickname']);
             $userid = wp_update_user($user_info);
         } else {
@@ -383,33 +389,6 @@
     }
 }

-/**
- * Get user's user id
- *
- * Returns null if username not found
- *
- * @param string $username username
- * @param string user id, null if not found
- */
-function authLdap_get_uid($username)
-{
-    global $wpdb;
-
-    // find out whether the user is already present in the database
-    $uid = $wpdb->get_var(
-        $wpdb->prepare(
-            "SELECT ID FROM {$wpdb->users} WHERE user_login = %s",
-            $username
-        )
-    );
-    if ($uid) {
-        authLdap_debug("Existing user, uid = {$uid}");
-        return $uid;
-    } else {
-        return  null;
-    }
-}
-
 /**
  * Get the user's current role
  *

The original problem is, that BOTH wp_insert_user and wp_update_user DO hash password, so it should be provided from authLdap_login in clear text format. Otherwise you will hash it twice! This also means, that the whole 'CachePW' was faulty, as wrong value of double hashed password was saved.
So once I clear this $user_info['user_pass'] = wp_hash_password($password); from code it was OK. But anyway I would maybe suggest using WP_user object through whole authLdap_login function and updating directly previously fetched or created object via new WP_user().
I will post rework ASAP.
Kind regards
Litin

Hi heiglandreas,
there were some additional issue with some new conditions, it seems to be fixed now. Also I would probably not go for working directly over WP_User object, as setting object attributes via __set require WP > 3.3. so it would decrease compatibility of your plugin. (I have still something in my mind but for now I just needed plugin to be functional :-) Please test it and let me know, if this version is fine for you.
BR
Litin

--- /tmp/authldap/authLdap.php	2015-10-12 14:04:20.000000000 +0200
+++ authLdap.php	2015-10-15 19:41:55.537774822 +0200
@@ -150,6 +150,10 @@
         return $user;
     }

+    if (isset($user) && $user->ID) {
+        return $user;
+    }
+
     authLdap_debug("User '$username' logging in");

     if ($username == 'admin') {
@@ -261,13 +265,13 @@
             return false;
         }

-        $uid = authLdap_get_uid($realuid);
+        $wp_user = get_user_by( 'login', $realuid );
         $role = '';

         // we only need this if either LDAP groups are disabled or
         // if the WordPress role of the user overrides LDAP groups
-        if (!$authLDAPGroupEnable || !$authLDAPGroupOverUser) {
-            $role = authLdap_user_role($uid);
+        if ((!$authLDAPGroupEnable || !$authLDAPGroupOverUser) && isset($wp_user->ID)) {
+            $role = authLdap_user_role($wp_user->ID);
         }

         // do LDAP group mapping if needed
@@ -338,18 +342,19 @@
         }

         // optionally store the password into the wordpress database
-        if (authLdap_get_option('CachePW')) {
-            $user_info['user_pass'] = wp_hash_password($password);
-        } else {
+        if (! authLdap_get_option('CachePW')) {
             // clear the password
-            $user_info['user_pass'] = '';
+            $password = '';
+        }
+        if ( ! isset($wp_user->ID) || ! wp_check_password( $password, $wp_user->data->user_pass, $wp_user->ID) ) {
+            $user_info['user_pass'] = $password;
         }

         // add uid if user exists
-        if ($uid) {
+        if (isset($wp_user->ID)) {
             // found user in the database
             authLdap_debug('The LDAP user has an entry in the WP-Database');
-            $user_info['ID'] = $uid;
+            $user_info['ID'] = $wp_user->ID;
             unset ($user_info['display_name'], $user_info['nickname']);
             $userid = wp_update_user($user_info);
         } else {
@@ -383,33 +388,6 @@
     }
 }

-/**
- * Get user's user id
- *
- * Returns null if username not found
- *
- * @param string $username username
- * @param string user id, null if not found
- */
-function authLdap_get_uid($username)
-{
-    global $wpdb;
-
-    // find out whether the user is already present in the database
-    $uid = $wpdb->get_var(
-        $wpdb->prepare(
-            "SELECT ID FROM {$wpdb->users} WHERE user_login = %s",
-            $username
-        )
-    );
-    if ($uid) {
-        authLdap_debug("Existing user, uid = {$uid}");
-        return $uid;
-    } else {
-        return  null;
-    }
-}
-
 /**
  * Get the user's current role
  *


docs: run bootstrap from correct folder

Describe your changes:
If I cd into bootstrap folder as the current docs suggest, I get Error: Could not find or load main class. However, if run from repo root, then it works!
Updating the docs to reflect the working behavior
I worked on this because I noticed it while setting up my local development environment
Type of change:

[X] Documentation

Checklist:

[x] I have read the CONTRIBUTING document.
[ ] My PR title is Fixes <issue-number>: <short explanation>
[ ] I have commented on my code, particularly in hard-to-understand areas.
[ ] For JSON Schema changes: I updated the migration scripts or explained why it is not needed.

@joegoldbeck, thank you for the contribution 🙏 .


Add option to ignore all snapshot DDLs

Currently there is logic to only ignore drop or truncate DDL in snapshots, we need another option to ignore all snapshot DDLs

Fixed: #240


C++ name demangling loses $ from immediate operands (AT&T syntax)

This happens only static symbols but not global variables with static storage, because apparently globals aren't name-mangled in C++.
test case: https://godbolt.org/g/ESvgs7
We get movl    foo, %eax from the compiler-emitted
movl    $_ZL3foo, %eax.
Intel-syntax mode is fine, showing mov     eax, OFFSET FLAT:foo
Normally it's not confusing, but if you're doing something weird and you're trying to check that the compiler's giving you an immediate instead of a load, it's a problem: https://godbolt.org/g/9VgRfB
(https://stackoverflow.com/questions/34467092/inline-64bit-assembly-in-32bit-gcc-c-program#comment64418850_34467109)

Thanks for the report! Will have a think; no obvious solution springs to mind but we are already doing more than just c++filt in some cases.

Will be fixed in an upcoming site update.

Fix is now live. Thanks @partouf


Support for SSH based private repositories

Currently it's possible to specify .git-credentials file for cloning private repositories using HTTPS but not SSH. Also if module contain references to another modules using SSH URL terraform failed to initialise workspace.
What problem are you facing?
I managed to clone terraform module using .git-credentials, but provider failed to initialise workspace because module contains references to another private repos using ssh based url
How could Crossplane help solve your problem?
Please make git configuration more flexible. Please add support for specifying ssh keys for terraform.

Has anyone successfully used private github repositories with provider-terraform?
github seems to have dropped support for password authentication 2021?
git clone https://github.com/***/argocd-apps.git
Cloning into 'argocd-apps'...
Username for 'https://github.com': ***
Password for<EMAIL_ADDRESS>remote: Support for password authentication was removed on August 13, 2021.
remote: Please see https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls for information on currently recommended modes of authentication.
fatal: Authentication failed for 'https://github.com/***/argocd-apps.git/'

See https://docs.github.com/en/get-started/getting-started-with-git/about-remote-repositories#cloning-with-https-urls

@davidwincent we recommend using personal access tokens https://docs.github.com/en/authentication/keeping-your-account-and-data-secure/managing-your-personal-access-tokens#using-a-personal-access-token-on-the-command-line that is totally supported.

Personal access tokens are tied to individuals. A SSH key can be uploaded as a deploy key to allow access independent of when an individual leaves and not exposing other permissions of that individual.


package update for OneIdentity

Required items, please complete
Change(s):

update package

Reason for Change(s):

content updated so repackage the solution

Version Updated:

2.0.1

Testing Completed:

See guidance below

Checked that the validations are passing and have addressed any issues that are present:

See guidance below

Hi @v-marimanda , we will look into this.


ocall_read_onchain_storage

title says it all; read blockchain storage from inside of the enclave, no verification of returned value.

blckch? nasty abbrev for blockchain?
I'd prefer onchain

haha agreed. did not give it much thought
brenzi<EMAIL_ADDRESS>schrieb am Mo., 23. März 2020, 17:39:

blckch? nasty abbrev for blockchain?
I'd prefer onchain
—
You are receiving this because you were assigned.
Reply to this email directly, view it on GitHub
https://github.com/scs/substraTEE-worker/issues/97#issuecomment-602716675,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AJA4SBZRKDKFV44H5BTHG33RI6GDBANCNFSM4LR6PK2A
.

This issue might evolve into something more generic. Currently, the problem is that the ocall must know where the api_client.get_storage() is able to find the node. I can think of two different approaches:

Pass the url to the enclave, which instantiates a new ApiClient in the Ocall
Setup communication with worker main loop. The second approach would imply that we setup a Sender/Receiver channel(), where we pass the sender into the enclave. There is a no_std crate for that: https://docs.rs/nb-sync/0.2.0/nb_sync/ . I would go for the Second approach. Reasoning: In that case, we make a generic ocall: worker_request(req: WorkerRequest), where the request is an Enum:

WorkerRequest: {
     GetStorage(module: &str, prefix: &str, params: Option<Vec<u8>>)
     ... more to come
}

Which the worker interprets handles accordingly.
this way it is more easily extendible. A new Request simply implies a new Enum entry. Additionally, and we prevent the code bloat that comes with all those ocall, ecall interfaces.

There are other existing ocalls that could be wrapped like this, but I'm currently not in favor of refactoring this - because there is no pain right now.
Your GetStorage is not quite generic enough because double maps need two additional params. It might make sense to create the Storage key within the enclave with the utils from api-client. Then you just hand over some encoded GetStorage(Vec<u8>) -> Option<Vec<u8>>

your suggestion GetStorage(Vec<u8>) -> Option<Vec<u8> is actually now the implementation as &str and String prevent to derive the scale codec, which makes it a hassle.

I agree that there is refactoring potential with other ocalls, but I agree as well that there is no need to do that right know.

I would like to rediscuss using  https://docs.rs/nb-sync/0.2.0/nb_sync/ because  nb_sync facilitates no_std channel().
What speaks against passing the sender to the enclave and have worker-enclave communication go through the channel directly instead of ocalls? Am I missing something crucial?


lastCookieString.split error with httpBackend.flush()

Using v1.4.0-build.3918+sha.4588e62 my unit test are now having the following error.
    TypeError: 'undefined' is not an object (evaluating 'lastCookieString.split'
)
        at C:/TR Forks/fef/bower_components/angular/angular.js:17354
        at sendReq (C:/TR Forks/fef/bower_components/angular/angular.js:9824)
        at C:/TR Forks/fef/bower_components/angular/angular.js:9542
        at processQueue (C:/TR Forks/fef/bower_components/angular/angular.js:140
60)
        at C:/TR Forks/fef/bower_components/angular/angular.js:14076
        at C:/TR Forks/fef/bower_components/angular/angular.js:15283
        at C:/TR Forks/fef/bower_components/angular/angular.js:15098
        at C:/TR Forks/fef/bower_components/angular-mocks/angular-mocks.js:1508
        at C:/TR Forks/fef/test/spec/services/FefLoagger.js:263

The unit test is this
it('test mult call is correct format.', function() {
        var success = true;
        httpBackend.expectPOST('/demo/logs')
            .respond(
                function(method, url, data, headers) {
                    var validData = {
                        message: ['test'],
                        level: 'log',
                        name: 'fef:log1'
                    };
                    data = JSON.parse(data);
                    if (data.message[0] === validData.message[0] &&
                        data.level === validData.level &&
                        data.name === validData.name) {
                        return [200, {
                            token: '12345'
                        }];
                    } else {
                        success = false;
                        return [400, {
                            failure: 'bad'
                        }];
                    }
                });
        var log1 = FefLogger.getLogger('log1');
        log1.log('test');
        httpBackend.flush();
        expect(success).toBe(true);

    });

the line 263 coralates with the httpBackend.flush();
this unit test did work with 1.4.0-beta.0 and 1.3.15

Yup, that's my fault. Fix is coming :)

@jcdalton2201 can you confirm that you are indeed mocking out $documentin your tests as I suggested in the fix? If not, can you try to create a minimal reproduce of the issue so I can look into it?

We do not have the $document mocked out. Our test was simply trying to test a $resource call.

@jcdalton2201 can you post a minimal reproduce on plunker or something similar?

http://embed.plnkr.co/Uxfl8v/preview

I don't know if it's related or not, but the latest release has been breaking our tests as well and points to the cookies. Our version is 1.4.0-build.3869+sha.3b8163b.
The errors:
PhantomJS 1.9.8 (Mac OS X) Appointments Controller:  OLB Reschedule Modal Controller should call for appointment types FAILED
	TypeError: 'undefined' is not a function (evaluating '$browser.cookies()')
	    at sendReq (/Users/mfrye2/code/onboarding/bower_components/angular/angular.js:8420)
	    at /Users/mfrye2/code/onboarding/bower_components/angular/angular.js:8146
	    at /Users/mfrye2/code/onboarding/bower_components/angular/angular.js:11682
	    at /Users/mfrye2/code/onboarding/bower_components/angular/angular.js:11768
	    at /Users/mfrye2/code/onboarding/bower_components/angular/angular.js:12811
	    at /Users/mfrye2/code/onboarding/bower_components/angular/angular.js:12623
	    at /Users/mfrye2/code/onboarding/node_modules/angular-mocks/angular-mocks.js:1508
	    at /Users/mfrye2/code/onboarding/test/unit/controllers/appointments.js:430
PhantomJS 1.9.8 (Mac OS X) Appointments Controller:  OLB Reschedule Modal Controller should build the mixpanel payload correctly FAILED
	TypeError: 'undefined' is not a function (evaluating '$browser.cookies()')
	    at sendReq (/Users/mfrye2/code/onboarding/bower_components/angular/angular.js:8420)
	    at /Users/mfrye2/code/onboarding/bower_components/angular/angular.js:8146
	    at /Users/mfrye2/code/onboarding/bower_components/angular/angular.js:11682
	    at /Users/mfrye2/code/onboarding/bower_components/angular/angular.js:11768
	    at /Users/mfrye2/code/onboarding/bower_components/angular/angular.js:12811
	    at /Users/mfrye2/code/onboarding/bower_components/angular/angular.js:12623
	    at /Users/mfrye2/code/onboarding/node_modules/angular-mocks/angular-mocks.js:1508
	    at /Users/mfrye2/code/onboarding/test/unit/controllers/appointments.js:435
PhantomJS 1.9.8 (Mac OS X) Controllers: Onboarding Controller "before each" hook FAILED
	TypeError: 'undefined' is not a function (evaluating '$browser.addPollFn')
	    at /Users/mfrye2/code/onboarding/bower_components/angular-cookies/angular-cookies.js:68
	    at invoke (/Users/mfrye2/code/onboarding/bower_components/angular/angular.js:3965)
	    at /Users/mfrye2/code/onboarding/bower_components/angular/angular.js:3807
	    at getService (/Users/mfrye2/code/onboarding/bower_components/angular/angular.js:3929)
	    at invoke (/Users/mfrye2/code/onboarding/bower_components/angular/angular.js:3956)
	    at instantiate (/Users/mfrye2/code/onboarding/bower_components/angular/angular.js:3976)
	    at /Users/mfrye2/code/onboarding/bower_components/angular/angular.js:7315
	    at /Users/mfrye2/code/onboarding/node_modules/angular-mocks/angular-mocks.js:1861
	    at /Users/mfrye2/code/onboarding/test/unit/controllers/controllersSpec.js:12
	    at invoke (/Users/mfrye2/code/onboarding/bower_components/angular/angular.js:3965)
	    at workFn (/Users/mfrye2/code/onboarding/node_modules/angular-mocks/angular-mocks.js:2418)

Then I noticed that this section is missing from the latest release, which may be causing the problems:
lines 69, 70:
self.cookieHash = {};
self.lastCookieHash = {};

lines 150-153:
addPollFn: function(pollFn) {
    this.pollFns.push(pollFn);
    return pollFn;
  },

lines 173-190:
 cookies:  function(name, value) {
    if (name) {
      if (angular.isUndefined(value)) {
        delete this.cookieHash[name];
      } else {
        if (angular.isString(value) &&       //strings only
            value.length <= 4096) {          //strict cookie storage limits
          this.cookieHash[name] = value;
        }
      }
    } else {
      if (!angular.equals(this.cookieHash, this.lastCookieHash)) {
        this.lastCookieHash = angular.copy(this.cookieHash);
        this.cookieHash = angular.copy(this.cookieHash);
      }
      return this.cookieHash;
    }
  },

@jcdalton2201 - I think the problem is that you have mocked out the $window service and the new version of $cookies expects to get the $document from the $window and it expects the $document to contain a property called cookies that is a string.  A simple workaround is on lines 15-17 of your Plunker's app.js, change it to:
    var windowMock = {
        navigator: {},
        document: { cookie: '' }
    };

See http://plnkr.co/edit/TQl5Qc?p=preview
But I think that a sensible thing to do inside $cookieReader is to convert undefined to '' for this property on $document.

@petebacondarwin That change did not work in our code on either linux or mac.  The change from shahata does work.

hmm..what if I get the same issue with v1.3.15 ??? :unamused:

I'm facing the same problem with Angular v1.3.15. The problem appeared when I deleted/re-installed all my bower dependencies (it worked with Angular v1.3.15 before).
To fix the problem I used this small hack that mocks the $browser service.
    beforeEach(function() {
        inject(function(_$browser_) {
          _$browser_['cookies'] = function() { return {}; }
        });
    });

@Pyo25 - I'm facing exact problem like yours. Thanks for sharing the workaround.

@Pyo25 and @csreddy - can you please provide an example of this failing in 1.3.15 - this will make it easier to provide an update to 1.3.x

@Pyo25 @csreddy Happened to me as well. When I deleted my bower dependencies and reinstalled them, it did no more work (while it did before). My 1st thought was an implicit Angular upgrade as well, but I also tried to downgrade to various other v1.3.x versions, which didn't solve the issue.
Given that (although that seems strange), it looks like the problem lies in one of the other bower packages...

@Pyo25 @csreddy @juristr can you please share the stack trace?

@shahata It looks like this:
 TypeError: 'undefined' is not a function (evaluating '$browser.cookies()')
            at sendReq (c:/projects/sdi/mapsconsole_bkup/bower_components/angular/angular.js:9661)
            at c:/projects/sdi/mapsconsole_bkup/bower_components/angular/angular.js:9383
            at processQueue (c:/projects/sdi/mapsconsole_bkup/bower_components/angular/angular.js:13248)
            at c:/projects/sdi/mapsconsole_bkup/bower_components/angular/angular.js:13264
            at c:/projects/sdi/mapsconsole_bkup/bower_components/angular/angular.js:14466
            at c:/projects/sdi/mapsconsole_bkup/bower_components/angular/angular.js:14282
            at c:/projects/sdi/mapsconsole_bkup/bower_components/angular-mocks/angular-mocks.js:1510
            at c:/projects/sdi/mapsconsole_bkup/test/spec/authentication/user.service.spec.js:151

I never use Angular cookies explicitly. What I do in user.service.spec.js is to use the $httpBackend. As already mentioned by others, it seems like the $httpBackend.flush() call causes the error. For instance, user.service.spec.js:151 in the stacktrace is where I invoke ...flush(). Here's an excerpt:
...
beforeEach(function(){
    var dummyUserObj = {
        id: 1,
        username: 'Juri',
        roles: [
            {
                role: 'admin',
                functions: [ 'person.read', 'person.write']
            }
        ]
    };

    $httpBackend
        .when('GET', '/api/v1/users/current')
        .respond(dummyUserObj);

    service.getCurrent();

    $httpBackend.flush();
});
...

Here's my example, stack trace is similar to @juristr
beforeEach(inject(function(_Bug_, $httpBackend) {
        Bug = _Bug_;
        httpBackend = $httpBackend;
        currentUser = {
            name: 'admin',
            username: 'admin',
            email<EMAIL_ADDRESS>        };
    }));

    // make sure no expectations were missed in your tests.
    afterEach(function() {
        httpBackend.verifyNoOutstandingExpectation();
        httpBackend.verifyNoOutstandingRequest();
    });
    it('should get bug count', function() {
        httpBackend.whenGET('/api/bugs/count').respond({
            count: 100
        });
        Bug.count().then(function(response) {
            expect(response.data.count).toBe(100);
        });
        httpBackend.flush();
    });

TypeError: 'undefined' is not a function (evaluating '$browser.cookies()')
	    at sendReq (/Users/sreddy/space/angularjs/ML-BugTrack/client/bower_components/angular/angular.js:9661)
	    at /Users/sreddy/space/angularjs/ML-BugTrack/client/bower_components/angular/angular.js:9383
	    at processQueue (/Users/sreddy/space/angularjs/ML-BugTrack/client/bower_components/angular/angular.js:13248)
	    at /Users/sreddy/space/angularjs/ML-BugTrack/client/bower_components/angular/angular.js:13264
	    at /Users/sreddy/space/angularjs/ML-BugTrack/client/bower_components/angular/angular.js:14466
	    at /Users/sreddy/space/angularjs/ML-BugTrack/client/bower_components/angular/angular.js:14282
	    at /Users/sreddy/space/angularjs/ML-BugTrack/client/bower_components/angular-mocks/angular-mocks.js:1510
	    at /Users/sreddy/space/angularjs/ML-BugTrack/client/app/services/bug/bug.service.spec.js:40

@csreddy @juristr - Which version of angular-mocks are you using? I'm pretty certain you are using angular-mocks 1.4.0 with angular 1.3.15. Please make sure you are using the same version for angular and all of its modules.

@shahata Ya, that was it...damn, could have come to this conclusion by myself :blush:
Thx @shahata  for the hint :smile:

Yes that was it :+1:  (face palm moment). Thank you!

Same for me, thanks @shahata !


schema: @rend should be available on <q>

Although data.TEXTRENDITION offers the values quote (single quotes)  and quotedbl (double quotes) they are not consistently usable in the context of text quotation. Of course, on phrase-level the quotation could be surrounded by a <rend> with the respective @rend value, e.g.:

The MEI Guidelines state that <rend rend="quotedbl"><q>Often, the quoted
material is typographically distinct from the surrounding text; i.e., surrounded by
so-called ‘quote marks’</q></rend>

or alternatively also encoding the quoted quotes:
<rend rend="quotedbl">
The MEI Guidelines state that <q>Often, the quoted
material is typographically distinct from the surrounding text; i.e., surrounded by
so-called <rend rend="quote"><q>quote marks</q></rend></q></rend>

Of course, it is might be good to separate graphical and logical encoding into separate elements (as above with rend indicating the graphical component, and q the logical – namely the enclosed text being quoted).
But this is not possible with <quote>, as it is a block-level element and <rend> is not.

The MEI Guidelines state:

<rend rend="quotedbl"><quote>Often, the quoted material is typographically distinct from
the surrounding text; i.e., surrounded by so-called <rend rend="quote"><q>quote marks</q></rend></quote></rend>

Maybe the definition of <quote> – Contains a paragraph-like block of text also means that the contents should also be wrapped in a paragraph OR that it should always be wrapped with a paragraph? But neither would help in wrapping it with <rend>.
Alternatively, encoding the <rend> inside of the <quote> – possible with the current MEI 5.0 – but encoding 'quote marks' as part of the quotation just doesn’t seem right. Trying to encode a quotation of multiple paragraphs in this way will utterly fail due to the same phrase- vs block-level problem.
I think the logical consequence is to allow @rend (and probably also @altrend) on <q> and <quote> elements.

Sounds reasonable (and would follow TEI).

This may start a cascade of allowing @rend on lots of block-level elements --
 for sure, but also other text-y elements like <lg>, <stageDir>, <list> and all its derivatives, etc. This could even be extended to musical text elements, such as <dir> and its derivatives. Proceed with caution.


Add The Feature form to the project

Add the background image of the form
Add the form in index.html
Add also the styling for form in the style.css
with the help of @Oscarj-8. we are code partners.
I think there is a version difference between my vs code editor and @Oscarj-8 vs code editor.
When he clones my repository in his local computer, his vs code automatically makes a lot of changes like spacing, and line numbering and converts the single quotation mark to a double quotation mark.
Dear sir, read his commit description, and according to that observe the changes in index.html and style.css file

@topeogunleye
in general comments what is the meaning of
x, y and z.

@topeogunleye in general comments what is the meaning of x, y and z.

I forgot to remove it.


[Bug] gemma-2b for Android. OpenCL Error Code=-54: CL_INVALID_WORK_GROUP_SIZE

🐛 Bug
Compile Gemma-2b for Android in q4f16_0. Load model successful, but chat get error: OpenCL Error Code=-54: CL_INVALID_WORK_GROUP_SIZE Stack trace: File "/home/chaoqin/mlcllm/3rdpaty/tvm/scr/runtime/opencl/opencl_module.cc", line 90
To Reproduce
Steps to reproduce the behavior:

compile gemma-2b by q4f16_0 target android
compile android jar
build app by Android studio

Expected behavior
Environment

Platform (e.g. WebGPU/Vulkan/IOS/Android/CUDA):Android
Operating system (e.g. Ubuntu/Windows/MacOS/...):Ubuntu
Device (e.g. iPhone 12 Pro, PC+RTX 3090, ...):
Compiled qwen-1.8b for snadragon 865 work successful.
I think this error relative to gemma's implementation.

🐛 Bug
Compile Gemma-2b for Android in q4f16_0. Load model successful, but chat get error: OpenCL Error Code=-54: CL_INVALID_WORK_GROUP_SIZE Stack trace: File "/home/chaoqin/mlcllm/3rdpaty/tvm/scr/runtime/opencl/opencl_module.cc", line 90
To Reproduce
Steps to reproduce the behavior:

compile gemma-2b by q4f16_0 target android
compile android jar
build app by Android studio

Expected behavior
Environment

Platform (e.g. WebGPU/Vulkan/IOS/Android/CUDA):Android
Operating system (e.g. Ubuntu/Windows/MacOS/...):Ubuntu
Device (e.g. iPhone 12 Pro, PC+RTX 3090, ...):
Compiled qwen-1.8b for snadragon 865 work successful.
I think this error relative to gemma's implementation.

I am having this issue as well, but with all the 7B models.
it cannot possibly be a memory issue, as 12GB should be more then enough RAM for any of these models (and it not an allocation or out of range error) so I suspect it might be some form of matrix multiplication issue from whatever lib is being used (so OpenCL) where a value being returned is above its maximum allocated range of work items (basically values).
I haven't looked at opencl_module.cc yet, but my suspicion is that some dynamic allocation stuff is happening thats messing with a function call.
I cannot think of why this would be happening, but I might pull and see what I could do about it. For now my recommendation would be to try different models and see if any of them work for you, as I have found that all other models other then the 7B ones work for me.
It might be different on your end.
Hopefully this gets patched.

Hi @bulutthecat @qc903113684 apologies for the inconvenience. Could you check whether https://github.com/mlc-ai/mlc-llm/pull/1955 was included when you ran into this issue? Or perhaps try again with the latest package? I suspect that this is fixed via https://github.com/mlc-ai/mlc-llm/pull/1955. Thank you!

@qc903113684 Unfortunately, I am unable to reproduce it on my end. Can you please build tvm and mlc again after fetching the latest changes and then recompile the model library?

Hi @bulutthecat @qc903113684 apologies for the inconvenience. Could you check whether #1955 was included when you ran into this issue? Or perhaps try again with the latest package? I suspect that this is fixed via #1955. Thank you!

Thanks for letting me know, I will get back to you if it works.

this PR may fixed problem, I have no time to test yet. https://github.com/mlc-ai/mlc-llm/pull/1850

Hi @qc903113684, #1850 is superseded by #1822, which was merged 3 weeks ago.
i.e. #1822 and #1955 can both be potential fix to the problem described in this issue

got same error
MLCChat failed
Stack trace:
org.apache.tvm.Base$TVMError: InternalError: Check failed: (e == CL_SUCCESS) is false: OpenCL Error, code=-54: CL_INVALID_WORK_GROUP_SIZE
Stack trace:
File "/Users/kartik/mlc/tvm/src/runtime/opencl/opencl_module.cc", line 90
at org.apache.tvm.Base.checkCall(Base.java:173)
at org.apache.tvm.Function.invoke(Function.java:130)
at ai.mlc.mlcllm.ChatModule.prefill(ChatModule.java:54)
at ai.mlc.mlcchat.AppViewModel$ChatState$requestGenerate$1$1.invoke(AppViewModel.kt:666)
at ai.mlc.mlcchat.AppViewModel$ChatState$requestGenerate$1$1.invoke(AppViewModel.kt:666)
at ai.mlc.mlcchat.AppViewModel$ChatState.callBackend(AppViewModel.kt:548)
at ai.mlc.mlcchat.AppViewModel$ChatState.requestGenerate$lambda$4(AppViewModel.kt:666)
at ai.mlc.mlcchat.AppViewModel$ChatState.$r8$lambda$lluIrcsPALEW5nCb2tohZYadhTY(Unknown Source:0)
at ai.mlc.mlcchat.AppViewModel$ChatState$$ExternalSyntheticLambda3.run(Unknown Source:6)
at java.util.concurrent.Executors$RunnableAdapter.call(Executors.java:462)
at java.util.concurrent.FutureTask.run(FutureTask.java:266)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1167)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:641)
at java.lang.Thread.run(Thread.java:919)

Error message:
InternalError: Check failed: (e == CL_SUCCESS) is false: OpenCL Error, code=-54: CL_INVALID_WORK_GROUP_SIZE
Stack trace:
File "/Users/kartik/mlc/tvm/src/runtime/opencl/opencl_module.cc", line 90


Store calibration and other metadata in well-documented form

Description of the problem
After merging #884, some metadata are still left in the metadata dictionary (stored as a private attribute GazeDataFrame._metadata). In particular:

Calibrations
Validations
Blinks
Changes in tracked eye or sampling rate (see #887)

There should be a well-documented public interface to access these metadata.
Description of a solution
I see several options to approach a solution:

Storing those metadata in custom data structures as attributes of GazeDataFrame (similar to the metadata stored in Experiment, EyeTracker etc.)
Storing time-dependent meta-events (like calibrations, validations, blinks) in a DataFrame similar to fixations and saccades (but it's probably difficult to find a useful set of columns for all the different types of events)

We might need to think about what metadata is available for non-EyeLink devices too, and how they could all fit into the same data structure.
Minimum acceptance criteria

[ ] Public interface to access (ideally) all metadata returned from parse_eyelink() (and possibly other file formats)
[ ] Documentation for every type of metadata
[ ] Remove GazeDataFrame._metadata attribute (see https://github.com/aeye-lab/pymovements/pull/884#issuecomment-2465477675)

Probably the easiest next step will be to pass the parsed blinks as an EventDataFrame to the GazeDataFrame.__init__().
The dataframe will need the three columns: name, onset, offset. The name should be blink.


[$500] Web - Error doesn't disappear for a while after deleting entire max exceed message.

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

Action Performed:

Go to any report.
Paste a message that has over 15,000 characters. Notice now the Composer has red border with the error below.
Delete entire message.
Notice that Composer still has error for a while after deleting message.

Expected Result:
Error should disappear right after user deleted the message.
Actual Result:
Composer still has error for a while after deleting message.
Workaround:
Unknown
Platforms:

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

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

Version Number: <IP_ADDRESS>
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail:
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Notes/Photos/Videos: Any additional supporting documentation
https://github.com/Expensify/App/assets/93399543/35cd051c-b1a3-4165-b3b6-58fe7315eee3
https://github.com/Expensify/App/assets/93399543/b6796f2e-1b24-4ace-8f2c-04f053b20700
Expensify/Expensify Issue URL:
Issue reported by: @hungvu193
Slack conversation: https://expensify.slack.com/archives/C049HHMV9SM/p1694937014673629
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01bef70e1146af3c78
Upwork Job ID:<PHONE_NUMBER>177219584
Last Price Increase: 2023-10-16

Proposal
Please re-state the problem that we are trying to solve in this issue.
After deleting the comment the max length error still persist.
What is the root cause of that problem?
https://github.com/Expensify/App/blob/d848eabee0042afd53007bafe3f2406d9c44b210/src/pages/home/report/ReportActionCompose/ComposerWithSuggestions.js#L239-L242
commentLength for an empty comment is 0 that is why it returned from the function completely and unable to execute the function further.
What changes do you think we should make in order to solve the problem?
Just need to pass one more condition like
    if (trimmedComment!=""&&!commentLength || commentLength > CONST.MAX_COMMENT_LENGTH) {
            return '';
        }

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

Proposal
Please re-state the problem that we are trying to solve in this issue.

Error doesn't disappear for a while after deleting entire max exceed message.

What is the root cause of that problem?

Currently, the border error is display based on hasExceededMaxCommentLength
hasExceededMaxCommentLength is set by debounce function updateCommentLength(comment,onExceededMaxCommentLength) - delay 500ms and the comment params is get from the ONYXKEYS.COLLECTION.REPORT_DRAFT_COMMENT that is also updated by the debounce function
https://github.com/Expensify/App/blob/6be8fcac69aa11ff84baaae94d3ef1d495fe5123/src/components/ExceededCommentLength.js#L29-L41
It leads to after clearing all the input, it will delay for a while after removing the border error

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

We can get the comment param from the value state inside the <ComposerWithSuggestions /> component rather than the ONYXKEYS.COLLECTION.REPORT_DRAFT_COMMENT and also we can call the updateCommentLength(comment,onExceededMaxCommentLength) without delay. These two method can decrease the delay time that lead to the bug. So the updateCommentLength will be:

 const updateCommentLength = useCallback((comment, onExceededMaxCommentLength) => {
        const newCommentLength = ReportUtils.getCommentLength(comment);
        setCommentLength(newCommentLength);
        onExceededMaxCommentLength(newCommentLength > CONST.MAX_COMMENT_LENGTH);
    }, [ ]);

Note: We can consider to choose one of these two method to decrease the delay time or both  of them

What alternative solutions did you explore? (Optional)

NA

Result
Screencast from 19-09-2023 00:20:01.webm

Proposal
Please re-state the problem that we are trying to solve in this issue.
Error doesn't disappear for a while after deleting entire comment when it has exceeded the maximum message
What is the root cause of that problem?
Two problems:

The ExceedCommentLength checker is getting the debounced value after the report draft is saved, so there is a 1 second delay.
The debounce should only happen on setting the error, but you have the 500ms delay on the debounce of the value going back to good again.

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

update ComposerWithSuggestions.js so that it exposes the trimmed value of the editor, so added getTrimmedComment function in the ref.

`    const getTrimmedComment = () => commentRef.current.trim();
...

useImperativeHandle(
    forwardedRef,
    () => ({
        blur,
        focus,
        replaceSelectionWithText,
        prepareCommentAndResetComposer,
        isFocused: () => textInputRef.current.isFocused(),
        **getTrimmedComment**
    }),
    [blur, focus, prepareCommentAndResetComposer, replaceSelectionWithText, useImperativeHandle(
    forwardedRef,
    () => ({
        blur,
        focus,
        replaceSelectionWithText,
        prepareCommentAndResetComposer,
        isFocused: () => textInputRef.current.isFocused(),
        getTrimmedComment
    }),
    [blur, focus, prepareCommentAndResetComposer, replaceSelectionWithText, **getTrimmedComment**],
);],
);

`
2. ReportActionCompose - pass in comment={composerRef.current && composerRef.current.getTrimmedComment() || ''} instead of the reportID so it operates on the text being edited (real time updates)

ExceededCommentLength - update the use effect to short circuit the debounce when the error is fixed, but keep the debounce when checking for an error.

useEffect(() => {         const propsCommentLength = ReportUtils.getCommentLength(props.comment);         // Short circuit if the error is removed         if (propsCommentLength <= CONST.MAX_COMMENT_LENGTH) {             setCommentLength(propsCommentLength);             props.onExceededMaxCommentLength(false);         } else {             // Debounce the change when checking for an error             updateCommentLength(props.comment, props.onExceededMaxCommentLength);         }     }, [props.comment, props.onExceededMaxCommentLength, updateCommentLength]);
This code is currently working in my local repo and the red border and line count exceeded message are removed immediately.
It also works when editing a comment, not just composing a new one.

Bumping @sobitneupane for reviews!

Thanks for your proposal @DylanDylann

We can get the comment param from the value state inside the  component rather than the ONYXKEYS.COLLECTION.REPORT_DRAFT_COMMENT

Where are you suggesting to make the change? Will it affect if we have existing draft comment?

also we can call the updateCommentLength(comment,onExceededMaxCommentLength) without delay

I don't think we can do that. This change was made to improve performance and was intended.

If we fail to identify a straightforward and direct solution, I believe it may be appropriate to consider closing the issue

@sobitneupane

Where are you suggesting to make the change? Will it affect if we have existing draft comment?

Currently, we get the comment from the draft and the draft value is updated with the delay 1000ms: https://github.com/Expensify/App/blob/6be8fcac69aa11ff84baaae94d3ef1d495fe5123/src/components/ExceededCommentLength.js#L54-L58

@sobitneupane

I don't think we can do that. This change was made to improve performance and was intended.

Now with the change here https://github.com/Expensify/App/pull/24319, we do not the commentLength state, just need to know the input `s length is > 10.000 or not, so we can remove [commentLength, setCommentLength]
The logic https://github.com/Expensify/App/blob/6be8fcac69aa11ff84baaae94d3ef1d495fe5123/src/components/ExceededCommentLength.js#L27-L45 can become:

    const updateCommentLength = useMemo(
        () =>
            debounce((comment, onExceededMaxCommentLength) => {
                const newCommentLength = ReportUtils.getCommentLength(comment);

                onExceededMaxCommentLength(newCommentLength > CONST.MAX_COMMENT_LENGTH);
            }, CONST.TIMING.COMMENT_LENGTH_DEBOUNCE_TIME),
        [],
    );

    useEffect(() => {
        updateCommentLength(props.comment, props.onExceededMaxCommentLength);
    }, [props.comment, props.onExceededMaxCommentLength, updateCommentLength]);

    if (!props.hasExceededMaxCommentLength) {
        return null;
    }

In the above change, the hasExceededMaxCommentLength state only changes when the input`s length exceeds 10.000 so it does not affect the performance

@sobitneupane

My solution does not change any of the delays on saving the report in onyx or in setting the error, but it does remove the error immediately by short circuiting the debounce check and directly checking the changed form value rather than the debounced saved report value.

Bump @sobitneupane to address comments

Sorry for the delay everyone. I was on leave most of the days last week.
@DylanDylann I haven't understood your proposal completely. Would you mind updating your initial proposal to include the changes you are suggesting? Please try to make use of references and permalink from the app to make the keywords used clearer. Also make use of pseudo codes if necessary.

@sobitneupane just updated my proposal https://github.com/Expensify/App/issues/27698#issuecomment-1724044938 for more clarity.

Not overdue, waiting on Sobit's review.

@sobitneupane I updated my proposal above https://github.com/Expensify/App/issues/27698#issuecomment-1728532313  after doing some testing.   I realized it was only removing the red border when the focus was lost or if you cut out all the text.  I modified it so now it does real time removal of the error as you type.
With this solution you could also remove the debounce of the value on setting the error so the user gets immediate feedback if desired, but without changing the report saving delay in onyx.
Here is a video of it working.
https://github.com/Expensify/App/assets/11356566/3ccd3170-92c5-4916-9afc-12032cfe4d09

@sobitneupane Tested on IOS and Android and I'm going to retract my proposal.   The ReportUtils.getCommentLength(props.comment) call is too expensive (900 ms to 3000ms per call) to be called any more than it already is, especially in the mobile world.  And the output of this call exceeds the length of props.comment in many cases, so you can't shortcut by checking if props.comment is less than the max length.
To properly solve this issue would require reworking the whole system which is probably not worth it given the minor nature of this bug.   All the solutions I've looked at can solve the issue, but at the expensive of making normal typing slow and sometimes laggy so that the normal usage is bad to save a minor inconvenience.

Bump @sobitneupane to address the above!

Sorry for the delay.
I will try to review the proposals before EOD tomorrow (NPT).

@DylanDylann Thanks for the update. We need to implement the solution not only in ReportActionCompose but also in ReportActionItemMessageEdit which doesn't make use of ComposerWithSuggestions.
I don't think we can go with the 2nd option as I have already mentioned that it will deteriorate the performance of Composer.

Thanks for the update @kevin-williams. Appreciate your help.

@sobitneupane

We need to implement the solution not only in ReportActionCompose but also in ReportActionItemMessageEdit

We can do the same with ReportActionItemMessageEdit because ReportActionItemMessageEdit also uses the reportActionsDrafts_ collection to store the draft edit message and it still update with a 1000ms delay like the message composer

We can do the same with ReportActionItemMessageEdit because ReportActionItemMessageEdit also uses the reportActionsDrafts_ collection to store the draft edit message and it still update with a 1000ms delay like the message composer

Do you mean to add ComposerWithSuggestions in ReportActionItemMessageEdit as well? I don't think that's a good idea. Primary function of ComposerWithSuggestions is to show suggestions which we don't support for Message Edit.

@sobitneupane No. In my proposal, I suggest that we should get the message input length directly rather than get it from the draft, which is updated with a 1000ms delay. So with the edit message input, we can do the same. ComposerWithSuggestions component is not mentioned in my proposal as well

@sobitneupane No. My proposal suggests that: Rather than get the message composer's length from the draft which is updated with 1000 ms delay, we should get the message composers length from the message composers content directly. So we can do the same with message edit logic.

But I just checked the current edit message`s logic, the behavior is slightly different from the message composer logic: The message composer error is updated with ~1500 ms delay, but the message edit is only ~ 500 ms.
As the RCA mentioned in my proposal, there are two factors led to the delay (with the message composer):

hasExceededMaxCommentLength is set by debounce function updateCommentLength(comment,onExceededMaxCommentLength) - delay 500ms and the comment params is get from the ONYXKEYS.COLLECTION.REPORT_DRAFT_COMMENT that is also updated by the debounce function (1000ms)

And the message edit only encounter the case hasExceededMaxCommentLength is set by debounce function updateCommentLength(comment,onExceededMaxCommentLength) - delay 500ms

@jliexpensify I will be unavailable next week. Therefore, I am unassigning myself from the issue. Please feel free to assign it to another C+.

@Ollyws could you take over from Sobit here and review the proposals? Thanks!

a

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

Yeah after having a think about it, I'm inclined to agree with you @Ollyws - I'm fine with closing this. Thank you for re-reviewing here!

@jliexpensify  Agree that the case user type exceeds 10000 words is the edge case. But I think we need to fix this issue because:

Currently, we are not displaying the text`s length that the user inputted. We are just displaying "The maximum comment length is 10.000 characters." rather than "10.002/10.000" as we did before.

So there is the case that the user inputted 10.002 characters, the border error appeared, and they need to remove any 2 characters. But because the border error is updated with a 1500ms delay, and we are not displaying the current inputs length - just "The maximum comment length is 10.000 characters." , it is difficult for users to edit their input to decrease their inputs length

Going to re-open for @Ollyws to review further

@Ollyws any further input here?

Bumping @Ollyws !

@Ollyws my proposal have two options to remove the debounce: One option can reduce 1000ms and another is 500ms. Combine both can reduce all the debounce

@Ollyws you can take a look at my proposal and feel free to ask more question about it. Thanks

@Ollyws

As far as I can see the only part of your proposal that could be implemented would be method 1, but there were these unresolved comments about that:
@DylanDylann Thanks for the update. We need to implement the solution not only in ReportActionCompose but also in ReportActionItemMessageEdit which doesn't make use of ComposerWithSuggestions.

I `ve commented in https://github.com/Expensify/App/issues/27698#issuecomment-1757469087. Please help check it

@Ollyws  yeah. You are correct. So in suggestion is:

Go with my first option to reduce 1000ms.
Fix the issue that you `ve mentioned:

I would guess because we're getting the value from the draft.
#2 RCA:

In here:
https://github.com/Expensify/App/blob/6be8fcac69aa11ff84baaae94d3ef1d495fe5123/src/components/ExceededCommentLength.js#L55-L57
we  get the comment from draft, but use in both edit composer and main composer, that leads to the "max exceed length" does not work when editing comment, and if we are editing comment and switch to type a > 10.000 characters message in main composer, the max exceed length exist in both main composer and edit composer.
Solution: Add an param called isEditing to ExceededCommentLength component, and get the proper message based on it

@Ollyws yeah, it is my suggestions

Yeah. I still go with this solution

@Ollyws Sorry for misunderstood your question

My solution is:
Move the value state:
https://github.com/Expensify/App/blob/347df0cc6bc9c1af6a0c7d6ed4034e4222fbf37e/src/pages/home/report/ReportActionCompose/ComposerWithSuggestions.js#L112
from ComposerWithSuggestions  to ReportActionCompose

Then pass it to ComposerWithSuggestions  to [ReportActionCompose] by updating:
https://github.com/Expensify/App/blob/347df0cc6bc9c1af6a0c7d6ed4034e4222fbf37e/src/pages/home/report/ReportActionCompose/ReportActionCompose.js#L393
to <ComposerWithSuggestions value={value} setValue={setValue} ... />

@Ollyws Please help review my solution here when you have a chance https://github.com/Expensify/App/issues/27698#issuecomment-1789113427

@jliexpensify What do you think about this one https://github.com/Expensify/App/issues/27698#issuecomment-1796172931?

From my side, I think though we cannot remove the debounce completely but still can reduce the delay from 1500ms to 500ms.
Here is why i think it is worth to fix https://github.com/Expensify/App/issues/27698#issuecomment-1765546425

@DylanDylann in all honesty, I'm going to defer to @Ollyws here - my main role is to help troubleshoot and manage the issue, and as the C+, Olly should be finding suitable proposals. Given that he's already mentioned that it's an edge case and this issue should be closed a few times already, I'm inclined to lean towards this as well - also this statement indicates we won't really be solving the issue?

it's essentially impossible to fix completely without removing the debounce

If Olly did think it was an actual issue, my understanding is that he would have chosen a proposal and asked for an internal engineering review. Going to close this one out!

Many thanks @jliexpensify and @Ollyws


Non unique operation id for the delete request of meter reading(s)

Ligne 722: operationId: MeterReading_Delete ---> to delete one meter reading
Ligne 782: operationId: MeterReading_Delete ---> to delete all meter readings ---> could me replaced by operationId: MeterReadings_Delete

Please provide a pull request :)

Yes I am on it ;)

Hello Narve,
I created a pull request in NODES-Tech/umei-api-specification
Should it rather be in euniversal/umei-api-specification ?

hm yes, that would be better.

In fact maybe I should delete the original repository... but at least ignore the old repository for now.


  Consider trying a newer version of Cargo (this may require the nightly release).
  See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2021 for more information about the status of this feature.

Im not sure where this error is coming from, what version of the target do you have if you do
cargo +x86_64-pc-windows-gnu -Vv
Will have to investigate later, but if you could provide more information already, that would be great!

Also, does it work with current master?
cargo install -p cross --git https://github.com/rust-embedded/cross

I have the same issue with a package that relies on tonic-0.6.1 which specifies edition 2021:
Status: Downloaded newer image for rustembedded/cross:aarch64-unknown-linux-musl-0.2.1
error: failed to download `tonic v0.6.1`

Caused by:
  unable to get packages from source

Caused by:
  failed to parse manifest at `/cargo/registry/src/github.com-1ecc6299db9ec823/tonic-0.6.1/Cargo.toml`

Caused by:
  feature `edition2021` is required

  The package requires the Cargo feature called `edition2021`, but that feature is not stabilized in this version of Cargo (1.55.0-nightly (27277d966 2021-07-16)).
  Consider trying a more recent nightly release.
  See https://doc.rust-lang.org/nightly/cargo/reference/unstable.html#edition-2021 for more information about the status of this feature.

I've tried cross from current master and it has the same issue

ah, this is an unfortunate side effect of having to install cargo on the image. This should be solved with a bump to latest cargo/rustc, which is done automatically when the images are built

ah, this is an unfortunate side effect of having to install cargo on the image. This should be solved with a bump to latest cargo/rustc, which is done automatically when the images are built

which makes sense.. and how can I help make that happen sooner? :-)

I think my initial thinking of what this issue was is wrong.
I'm quite certain the issue here was a outdated toolchain on the host, nothing to do with xargo (which is the only cargo thing in the images).
In #673 we added a neat warning to show that the target will be out of date.

This works fine as long as you use builds from Git (you can lock specific cross images by tagging them and lock specific cross versions by git commit), and we're planning a release sometime in the near future. To test this works, you can do the following:
rustup update stable   # Ensure we're using a compiler that supports edition 2021
cargo +stable install cross --git https://github.com/cross-rs/cross
cargo +stable init --bin hello
cd hello
cross build --target x86_64-pc-windows-gnu

And everything works. The contents of Cargo.toml are as follows, showing it uses edition 2021:
[package]
name = "hello"
version = "0.1.0"
edition = "2021"

# See more keys and their definitions at https://doc.rust-lang.org/cargo/reference/manifest.html

[dependencies]

Using an outdated toolchain on the host produces this issue:
$ rustup run 1.39.0-x86_64-unknown-linux-gnu cargo build
error: failed to parse manifest at `/home/ahuszagh/Desktop/cross/hello/Cargo.toml`

Caused by:
  failed to parse the `edition` key

Caused by:
  supported edition values are `2015` or `2018`, but `2021` is unknown

Yup. Confirmed that at the time too. Thanks for documenting it here


Don't merge until RC2: Docs for HTTP/3 on IIS

Contributes to https://github.com/dotnet/aspnetcore/issues/26415
@Rick-Anderson  edit:
~Much of this content is the same as Http.Sys (#23252)~
Much of this content is the same as Http.Sys (#23257)
Note this feature work is available in rc2. https://github.com/dotnet/aspnetcore/pull/36054

@Rick-Anderson how do you want to handle the branching for rc2 work?

I can create a R2 branch when we're ready. But it's not worth the effort to merge this into an RC2 branch.

On second thought, there was enough working in rc1 to warrant merging this then.


[GSSOC'23] Adding link to download the app on the main page

Adding link to download the app on the main page will increase the number of downloads.
Pls assign this issue to me

This issue has been inactive for a long time
I would like to work on this issue
Please assign


How to set width of autocomplete popover

Bug, feature request, or proposal:
Feature Request
What is the expected behavior?
The width of the autocomplete popover should be customizable
What is the current behavior?
The width is very small
What are the steps to reproduce?
Providing a Plunker (or similar) is the best way to get the team to see your issue.
Plunker template: https://goo.gl/DlHd6U
What is the use-case or motivation for changing an existing behavior?
Content of the autocomplete can vary in size
Which versions of Angular, Material, OS, browsers are affected?
Latest angular material, chrome
Is there anything else we should know?

Looks like a dupe of #3198 and was fixed by #3297.

Hi @willshowell will this fix be included in the next beta release? Do you know when it is planned?

It should be a part of the next beta release, but I have no clue when it's planned. I'd guess early April probably?
If you want to go ahead and use all the latest changes, you can do this:  (from the README)
npm install --save https://github.com/angular/material2-builds.git

Closing as duplicate of #3198

This was not exactly fixed in #3297.  That disabled the (erroneous) max-width constraint, but there is still no way to control the width of the autocomplete independent from the "parent" input.  The original request is that it should be "customizeable".

@thw0rted see https://github.com/angular/material2/pull/6618 for adding a panel class

That's not actually in the release version yet, though, right?  I don't know how the release cycle works; when I can expect an npm install to include this?

@thw0rted no it isn't available yet - figured you may want to subscribe to it for updates. Once it's reviewed and merged, it will be available via the master-builds. Releases have typically happened ~monthly, but I think the goal is to increase the frequency.


Crypt4GH secrets manager

Instead of providing static paths resolving to secrets/keys for Crypt4gh, it should point to an endpoint that resolves to a key management service/server (HSM, HTTP endpoint, GitHub user.key, etc...)... like Elsa secrets provider (focusing on those that run on the server side, such as AWS Secrets Manager and just file-based for dev) /cc @andrewpatto .

@mmalenic I believe you implemented most of this in https://github.com/umccr/htsget-rs/pull/271 ? ... not a custom API endpoint but perhaps it's good enough for now?

Yeah, it's probably okay for now. The Secrets Manager part is done, but the it's not customizable beyond that.

We can reopen once more complexity is needed then!