meta issue: Improve Debian package reported license

See these issues for details:

Improve quality and tracing of license detection in Debian copyright files https://github.com/nexB/scancode-toolkit/issues/2390
Determine the primary license from a copyright file https://github.com/nexB/debut/issues/8
Recover parsing from almost machine-readable copyright files https://github.com/nexB/debut/issues/6
Improve tracing of license detection in package manifests https://github.com/nexB/scancode-toolkit/issues/2389

See also #128

We have many levels of problems:
1. finding the copyright file of a package.
There are case where we have the copyright file of a package which is a symlink to the copyright file of another package and we fail to get the copyright file in this case.
For instance in debian-unstable-slim, the directory /usr/share/doc/libstdc++6 is a symlink to the directory /usr/share/doc/gcc-10-base therefore the copyright file is /usr/share/doc/gcc-10-base/copyright
Short of followig this link we cannot access the copyright file, because the source package gcc-10 does not have a copyright file and is not installed and we cannot use the heuristic to use the source package copyright when we cannot find one for the binary.
2. dealing with copyright formats
2.1 not machine-readable
we do not partition files that are not machine-readable  and this may impact license detection accuracy. There are several opportunities to improve this for instance with a heuristic that would split text regions in paragraph-like chunks based on the presence of some typical statements or even license rules such as:
On Debian systems, the complete text of the GNU General Public
License version 2 can be found in /usr/share/common-licenses/GPL-2.
Also in some almost structured files, we could split on lines starting with "License:" or "Copyright:" or "Copyright notice:" such as:
https://metadata.ftp-master.debian.org/changelogs//main/u/unzip/unzip_6.0-23+deb10u2_copyright or https://metadata.ftp-master.debian.org/changelogs//main/e/e2fsprogs/
2.2  structured copyright files
when we detect license on structured copyright files, we do not handle correctly the fact that a license is a known common license or not
Only known common licenses symbols as used in the first line of a license declaration have a meaning. Other symbols (even when they look like an SPDX license id such as BSD-2-Clause) should be interpreted first based on the detection of the license text they point to a license paragraph.
This is not done yet and impacts the quality of detection on the declared licenses
3. incorrect license simplification
We have incorrect license simplification that is applied on the detected license expressions. We should not apply simplification for now and rather fix it in the license_expression library. See https://github.com/nexB/license-expression/issues/49
4. Inaccurate license detection proper
We have incorrect license detection on multiple levels:
4.1 Incorrect mapping of common debian licenses
We do not have correct mapping for known license symbols of common licenses when we are trying to detect a license as an expression. The set of these is limited in the ones found in `/usr/share/common-licenses/. For instance:
Apache-2.0
Artistic
BSD
GFDL -> GFDL-1.3
GFDL-1.2
GFDL-1.3
GPL -> GPL-3
GPL-1
GPL-2
GPL-3
LGPL -> LGPL-3
LGPL-2
LGPL-2.1
LGPL-3

And also the symbols with a trailing +
(NB: Artistic would need to be detected to find what we map it to)
4.2 we do not detect correctly some license expression syntax from the declared license
For instance, this weird "academic free license >= 2.1, modified bsd license" where using a mapping in debian_licenses.txt may be the only way out.
Though we may be able to apply heuristics where we could replace a comma by " AND " before parsing a license declaration line as an expression.
Because of 4.2 and 4.3 we return way too many unknown licenses
4.3 we are missing license detection rules to detect accurately the licenses
This is a matter of adding new license rules.
5. diagnose detection errors is hard
We cannot easily diagnose and fix license detection issues because the details of the detection are not returned. For instance we cannot easily use scancode-analyzer to help spot and fix issues.

See also https://github.com/nexB/aboutcode/wiki/Project-Ideas-Improve-Debian-package-license-detection

From https://github.com/nexB/scancode-toolkit/pull/2518, detailing the improvements made in each level of the problem.
On the specific issue reported in https://github.com/nexB/scancode.io/issues/128, we have the unstructured copyright file of gcc-10-base debian package.
The updated debian copyright system has a complete overhaul of the license detection and fixing of certain bugs which made possible the improvement here:
Before Changes vs After Changes
Now, thare are still minor inaccuracies here which are being fixed.
On the progress made in the specific levels of issues discussed in this comment above:
In 2. Dealing with copyright formats:
2.1 Machine Readable Copyrights:
Status: Mostly done, now working on handling rare cases by running tests on dataset of collected debian copyright samples Debian -(320K from 2019-11) and Ubuntu (200K files from 2020-06).
In debian copyright files, there are license paragraphs with license text and a license name after License: . Sometimes there are license texts in the file paragraphs also, and there also exists common debian licenses.
These licenses are then referenced in File and Header paragraphs in license expression like strings, and they reference to the license texts by their name. Now we fully parse these names and resolve the references to the license texts (instead of having a hand crafted mapping), even resolve unparsable expressions if these are also present as names of license texts.
This significantly improves license detection in structured copyright files.
2.2 Unstructured Copyright Files
Status: Some critical bugs were fixed, this is now sent directly into scancode license detection as a whole, getting much better results. WIP: Break this file into parts of texts using common paragraphs seperators seen in debian copyright files, for better detection.
In 3. incorrect license simplification
Status: This is fixed at license-expression, in the process of being merged.
In 4. Inaccurate License Detection proper
4.1 Common Licenses present in /usr/share/common-licenses/
Status: These are now handled correctly.
4.2 we do not detect correctly some license expression syntax from the declared license
Status: We now can parse the debian license expressions correctly, with cleaning and some specialized parsing of commas, according to the debian guidelines.
Previously in debian_licenses.txt there was a mapping of all seen debian license expression present after License:, and the corresponding license expression.
Now, instead of having a mapping, these are now handled via cleaning up symbols which aren't supported by nexB/license-expression, and then parsing these as proper license expressions.
4.3 we are missing license detection rules to detect accurately the licenses
Status: WIP, this has been made possible by making the license detection diagnosable [in 5. Diagnosing License Detection Problems ]
New rules are added for common license detections, more rules are being added based on the added debian test files.
Then even more rules can be added by running nexB/scancode-analyzer on more debian copyright files.
In 5. Diagnosing License Detection Problems:
Status: License detections are now fully diagnoseable.
Previously, the license detections in a debian copyright file had as it's output only a license-expression string carrying all the detections, and hence it was hard to diagnose license detection problems, Now the license and copyright detection function returns a DebianDetector object with a list of LicenseDetection objects, which has the original LicenseMatch objects created by scancode LicenseDetection. This makes it possible to diagnose the root cause of license detection issues and also makes it possible to plug in the results from license detections in debian copyright files directly to https://github.com/nexB/scancode-analyzer for unique issue detection.
in 1. Bug in symlinks
Status: This is yet to be fixed.

@AyanSinhaMahapatra @pombredanne gentle ping, what's the latest status on this one?

The PRs were

https://github.com/nexB/scancode-toolkit/pull/2518
https://github.com/nexB/scancode-toolkit/pull/2558
https://github.com/nexB/debian-inspector/pull/22
Some commits in https://github.com/nexB/scancode-toolkit/pull/2667

There are two sub issues remaining,

correctly handling symlinks, as debain copyrights are often symlinked as elaborated here in 1. This could be tracked seperately, I can open an issue for that then.
simplifying license-expressions with AND which is tracked seperately here : https://github.com/nexB/license-expression/issues/67

And @pombredanne opened some more relatively minor ones, I have these on my to-do list:

https://github.com/nexB/scancode-toolkit/issues/2646
https://github.com/nexB/scancode-toolkit/issues/2645
https://github.com/nexB/scancode-toolkit/issues/2644
https://github.com/nexB/scancode-toolkit/issues/2643
https://github.com/nexB/scancode-toolkit/issues/2642

As these are tracked seperately, and the major issues tracked here with debian was resolved and detection improved significantly, this meta issue could be closed,

Closing this as mentioned above :

As these are tracked seperately, and the major issues tracked here with debian was resolved and detection improved significantly, this meta issue could be closed,


Adding hosts to BatchExecutor's RetriesExhaustedWithDetailsException

Without the hosts, RetriesExhaustedWithDetailsException.getExhaustiveDescription() throws an exception.

LGTM


[Feature request] Add setCacheDir method in AbstractTus.php

I meet permission problem so I have to define the cache dir for my app, however I found setCacheDir is defined in FileStore.php, is it possible to add setCacheDir method in AbstractTus.php?
Thanks.

Or change the $cache variable from protected to public,
    public $cache;

And I can use the setCacheDir method from $cache object
$client->cache->setCacheDir($this->cacheDir);

You can do
$client->getCache()->setCacheDir($this->cacheDir)

Thank you


Reorganize command line options to accommodate running in a container

When running from a container, we should initialize the database when creating the container and simply run the service when running the container.  The current command line interface obscures this distinction.  Deprecate current syntax for something more accommodating.  Namely, use sub-commands to "init" the database and "serve" the data.  Keep a deprecated "run" sub-command which mimics the current behavior.

FWIW, the separation into init and serve steps also makes it simpler to swap out the serve step with a different WSGI server framework such as Gunicorn.


AssertionError [ERR_ASSERTION]: 1204 == 0

1. Versions

What is your wechaty version?

Answer: 1.20.2

Which puppet are you using for wechaty? (puppeteer/padlocal/service...)

Answer: puppeteer

What is your wechaty-puppet-XXX（padchat/puppeteer/） version?

Answer: 13.5.1

What is your node version? (run node --version)

Answer: v16.17.0

What os are you using

Answer: Ubuntu 22.04.1 LTS x86_64
2. Describe the bug
AssertionError [ERR_ASSERTION]: 1204 == 0

3. To Reproduce

Run https://github.com/fuergaosi233/wechat-chatgpt
Scan QR code
Send message

4. Expected behavior
Send message without errors
5. Actual behavior
AssertionError [ERR_ASSERTION]: 1204 == 0
    at Object.equal (/home/acheong/Projects/experiments/GPT/wechat/wechat-chatgpt/node_modules/wechat4u/src/util/global.js:53:14)
    at /home/acheong/Projects/experiments/GPT/wechat/wechat-chatgpt/node_modules/wechat4u/src/core.js:477:16
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async PuppetWechat4u.messageSendText (file:///home/acheong/Projects/experiments/GPT/wechat/wechat-chatgpt/node_modules/wechaty-puppet-wechat4u/src/puppet-wechat4u.ts:765:5)
    at async WechatifiedUserClass.say (file:///home/acheong/Projects/experiments/GPT/wechat/wechat-chatgpt/node_modules/wechaty/src/user-modules/contact.ts:338:19)
    at async ChatGPTBot.trySay (file:///home/acheong/Projects/experiments/GPT/wechat/wechat-chatgpt/src/chatgpt.ts:268:7)
    at async ChatGPTBot.onPrivateMessage (file:///home/acheong/Projects/experiments/GPT/wechat/wechat-chatgpt/src/chatgpt.ts:310:5)
    at async ChatGPTBot.onMessage (file:///home/acheong/Projects/experiments/GPT/wechat/wechat-chatgpt/src/chatgpt.ts:335:16)
    at async WechatyImpl.<anonymous> (file:///home/acheong/Projects/experiments/GPT/wechat/wechat-chatgpt/src/main.ts:32:9) {
  generatedMessage: true,
  code: 'ERR_ASSERTION',
  actual: 1204,
  expected: 0,
  operator: '==',
  response: [Object],
  tips: '发送文本信息失败'
}

6. Full Output Logs

Set env WECHATY_LOG=silly in order to set log level to silly, then we can get the full log (If you dosen't set log env, log level is info as default, we cannot get the full log)

We need full log instead of log screenshot or log fragments!

 I'm Assistant, a large language model trained by OpenAI. Is there anything I can help you with? I'm here to provide information and answer questions to the best of my ability. Just let me know if you have any questions.
22:49:33 VERB Contact say(Hello! I'm Assistant, a large language model trained by OpenAI. Is there anything I can help you with? I'm here to provide information and answer questions to the best of my ability. Just let me know if you have any questions.)
22:49:33 VERB PuppetWechat4u messageSend(@b209bfbd0d713e5842484547e8280dd5b885865faf1d54c61092732cad335d01, Hello! I'm Assistant, a large language model trained by OpenAI. Is there anything I can help you with? I'm here to provide information and answer questions to the best of my ability. Just let me know if you have any questions.)
AssertionError [ERR_ASSERTION]: 1204 == 0
    at Object.equal (/home/acheong/Projects/experiments/GPT/wechat/wechat-chatgpt/node_modules/wechat4u/src/util/global.js:53:14)
    at /home/acheong/Projects/experiments/GPT/wechat/wechat-chatgpt/node_modules/wechat4u/src/core.js:477:16
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async PuppetWechat4u.messageSendText (file:///home/acheong/Projects/experiments/GPT/wechat/wechat-chatgpt/node_modules/wechaty-puppet-wechat4u/src/puppet-wechat4u.ts:765:5)
    at async WechatifiedUserClass.say (file:///home/acheong/Projects/experiments/GPT/wechat/wechat-chatgpt/node_modules/wechaty/src/user-modules/contact.ts:338:19)
    at async ChatGPTBot.trySay (file:///home/acheong/Projects/experiments/GPT/wechat/wechat-chatgpt/src/chatgpt.ts:268:7)
    at async ChatGPTBot.onPrivateMessage (file:///home/acheong/Projects/experiments/GPT/wechat/wechat-chatgpt/src/chatgpt.ts:310:5)
    at async ChatGPTBot.onMessage (file:///home/acheong/Projects/experiments/GPT/wechat/wechat-chatgpt/src/chatgpt.ts:335:16)
    at async WechatyImpl.<anonymous> (file:///home/acheong/Projects/experiments/GPT/wechat/wechat-chatgpt/src/main.ts:32:9) {
  generatedMessage: true,
  code: 'ERR_ASSERTION',
  actual: 1204,
  expected: 0,
  operator: '==',
  response: [Object],
  tips: '发送文本信息失败'
}
22:49:39 SILL PuppetWechat4u monkeyPatchHook(wechat4u, syncCheck, func) funcNew()
22:49:39 SILL PuppetWechat4u monkeyPatch() monkeyPatchHook() wechat4u.syncCheck()
22:50:06 SILL PuppetWechat4u monkeyPatchHook(wechat4u, syncCheck, func) funcNew()
22:50:06 SILL PuppetWechat4u monkeyPatch() monkeyPatchHook() wechat4u.syncCheck()

7. Additional context
Real name authenticated via passport

uncaughtException AssertionError [ERR_ASSERTION]: 1204 == 0
    at Object.equal (/root/work/demo/wechaty-demo/node_modules/wechat4u/src/util/global.js:53:14)
    at /root/work/demo/wechaty-demo/node_modules/wechat4u/src/core.js:477:16
    at processTicksAndRejections (node:internal/process/task_queues:96:5)
    at async PuppetWechat4u.messageSendText (/root/work/demo/wechaty-demo/node_modules/wechaty-puppet-wechat4u/src/puppet-wechat4u.ts:765:5)
    at async WechatifiedUserClass.say (/root/work/demo/wechaty-demo/node_modules/wechaty/src/user-modules/contact.ts:338:19)
    at async WechatyImpl.onMessage (/root/work/demo/wechaty-demo/index.ts:31:9) {
  generatedMessage: true,
  code: 'ERR_ASSERTION',
  actual: 1204,
  expected: 0,
  operator: '==',
  response: [Object],
  tips: '发送文本信息失败'
}

同样的错误

This happens when you try to send a message to yourself. My solution was to send it to filehelper instead

This happens when you try to send a message to yourself. My solution was to send it to filehelper instead

I still have this error even if I send to filehelper.
This WeChat account was also authenticated via passport, not sure if this is the issue?


Define "dart.library.mirrors" and "dart.library.isolate" as false in dartdevc

Since Dart 2.0 does not support those libraries on the web (#30538), the fromEnvironment() flags for those should return false.

I discovered that dart:html and dart:io import dart:isolate.
HTML only exists in dart4web, so we can remove that dependency and refactor APIs that use it.
dart:io is importable, but throws on dart4web. I'm not sure if we want dart:isolate imports to be an error at compile time, or an error at runtime. Advice? @vsmenon
See also https://github.com/dart-lang/sdk/issues/32293 (disable dart:isolate in DDC)

I was thinking compile time error.  @sigmundch @kevmoo is that consistent with your understanding?

🤷♂

Agree it should be a compile-time error.
It seems like the only API that uses dart:isolate from dart:html is spawnDomUri.
However, I don't believe we can ban importing dart:io at this time. That is currently needed to support package:http for a bit longer (we had to go out of our way to allow it in dart2js temporarily). Two ideas come to mind:

change the dart:io implementation entirely for dart4web to make it super lean and only expose what pacakge:http needs
temporarily use a whitelist to allow importing dart:isolate from dart:* libraries (practically treating it like if it were an internal dart:_isolate library).

I currently prefer the latter. We could also do the latter by introducing an actual dart:_isolate library, reexporting it from dart:isolate, and change dart:io and dart:html to import the internal. Then we can unconditionally make it invalid to import the public dart:isolate library.
Thoughts?

Yeah, dart:html is very easy to fix (change Future<SendPort> to Future for a method that throws an unimplemented error anyways :)
I think I have a fix for dart:io as well. It turned out the only usage was SendPort, for one unused field, and one private class/private method for the VM. I have removed it from the API signature of that private class in dart:io. Testing it out now. :)

https://dart-review.googlesource.com/c/sdk/+/48885


when trying to use the Platformatic Composer to combine my services, especially with GraphQL queries. Additionally, when wrapping this setup with Platformatic Runtime, it fails to work as expected.

reference prototype https://github.com/pallavisahni/platformatic-graphql
Hello,
I am currently using Platformatic version 1.39.0 and working on building a modular monolith from my existing microservices. Our tech stack includes Fastify, GraphQL, Mercurius, and Node.js 20.
To understand more about Platformatic, I created a dummy service that exposes a GraphQL endpoint, which works well when run individually. However, I'm encountering issues when trying to use the Platformatic Composer to combine my services, especially with GraphQL queries. Additionally, when wrapping this setup with Platformatic Runtime, it fails to work as expected.
Here are the details:
Issues Faced
When Starting Composer:
FastifyError [Error]: Missing dependency: "service 'composer' has unknown dependency: 'dummy-service'. Did you mean 'composer'?"
code: 'PLT_RUNTIME_MISSING_DEPENDENCY',
statusCode: 500
When Starting Runtime:
[11:54:29.113] INFO (dummy-service/19683): Typescript compilation completed successfully.
[11:54:29.955] INFO (composer/19683): Typescript compilation completed successfully.
[11:54:29.972] ERROR (19683): runtime uncaught exception
err: {
"type": "TypeError",
"message": "this[kAbort] is not a function",
"stack":
TypeError: this[kAbort] is not a function
at BodyReadable.destroy (/node_modules/.pnpm/undici@6.16.1/node_modules/undici/lib/api/readable.js:55:19)}
[11:54:39.425] ERROR (composer/19683): Plugin did not start in time: 'platformaticComposer'. You may have forgotten to call 'done' function or to resolve a Promise
err: {
"type": "FastifyError",
"message": "Plugin did not start in time: 'platformaticComposer'. You may have forgotten to call 'done' function or to resolve a Promise"}
and if I run via runtime, the error is
"params": {
"passingSchemas": null
},
"message": "must match exactly one schema in oneOf"
}
]
[14:28:48.494] ERROR (composer/23078): 'specification' parameter must contain a valid version 2.0 or 3.0.x or 3.1.x specification
err: {
"type": "Error",
"message": "'specification' parameter must contain a valid version 2.0 or 3.0.x or 3.1.x specification",
"stack":
Error: 'specification' parameter must contain a valid version 2.0 or 3.0.x or 3.1.x specification
Platformatic Composer Configuration
{
"$schema": "https://platformatic.dev/schemas/v1.39.0/composer",
"composer": {
"services": [
{
"id": "dummy-service",
"openapi": {
"url": "/documentation",
"prefix": "/dummy-service"
}
}
],
"refreshTimeout": 1000
},
"watch": true,
"plugins": {
"paths": [
{
"path": "./plugins",
"encapsulate": false
},
"./routes"
],
"typescript": "{PLT_COMPOSER_TYPESCRIPT}"
}
}
It seems like there might be missing or incorrect implementation steps on my end. Could you please help me understand what might be going wrong and how to resolve these issues?
Any guidance or suggestions would be greatly appreciated. Thank you

Thanks for reporting, will take a look asap.

Can you provide steps to reproduce? We often need a reproducible example, e.g. some code that allows someone else to recreate your problem by just copying and pasting it. If it involves more than a couple of different file, create a new repository on GitHub and add a link to that.

I have shared this example, which includes dummy services. By starting the composer, you will be able to reproduce the issue.
You can reference the prototype here: https://github.com/pallavisahni/platformatic-graphql
To reproduce the issue:
Clone the Repository:
git clone https://github.com/pallavisahni/platformatic-graphql.git
cd platformatic-graphql
Start the Composer: This should help you recreate the problem as described.
if this doesn't works for you do let me know.

The following would make your app start:
diff --git a/services/composer/platformatic.composer.json b/services/composer/platformatic.composer.json
index 91b2799..ca2dd56 100644
--- a/services/composer/platformatic.composer.json
+++ b/services/composer/platformatic.composer.json
@@ -9,22 +9,17 @@
         "id": "iam-dummy",
         "graphql": true,
         "openapi": {
-          "url": "/documentation/json"
+          "url": "/documentation/json",
+          "prefix": "/iam"
         }
       },
       {
         "id": "dummy-service",
-        "graphql": true,
-        "openapi": {
-          "url": "/documentation/json"
-        }
+        "graphql": true
       },
       {
         "id": "demo-service",
-        "graphql": true,
-        "openapi": {
-          "url": "/documentation/json"
-        }
+        "graphql": true
       }
     ],
     "refreshTimeout": 1000
@@ -40,4 +35,4 @@
     ],
     "typescript": "{PLT_COMPOSER_TYPESCRIPT}"
   }
-}
\ No newline at end of file
+}
diff --git a/services/dummy-service/plugins/graphql.ts b/services/dummy-service/plugins/graphql.ts
index b26e81c..49dd3c7 100644
--- a/services/dummy-service/plugins/graphql.ts
+++ b/services/dummy-service/plugins/graphql.ts
@@ -5,7 +5,7 @@ import mercurius from "mercurius";
 // schema.js
 const schema = `
   type Query {
-    example: String
+    dummy: String
   }
 `;

BTW, I did not experience the error you showed.
Anyhow, there is an incompatibility when using both OpenAPI and GraphQL composition, which I fixed in https://github.com/platformatic/platformatic/pull/2705.
If you are using platformatic service you do not need to install Mercurius separately because it's built in. However, if you want to do so, you need to set additionalRouteOptions: { schema: { hide: true } } in the Mercurius options, otherwise this will be listed in OpenAPI.


Allow adding customizers as part of the RUM config

We currently provide customizers that allow to update or completely replace signal processors and exporters inside the OpenTelemetryRumBuilder class instead of the configuration one, this makes it difficult for extensions to adjust the RUM configuration before the initialization process begins unless some wrapper initializator is used instead of OpenTelemetryRumBuilder directly. However, I believe that usingOpenTelemetryRumBuilder directly should be the preferred way to initialize the agent to avoid confusion around the usage of this tool in general, and I think we can enable that by allowing to modify all the RUM's behavior from within the configuration object (OtelRumConfig).

I don't think this is needed anymore.


Readme: change introduction.clj to introduction.md

This just bit me while trying to get the first essay set up. Thanks!

Thanks all, and thanks for the feedback! This is really helpful in my quest to simplify this setup process.


New spectest file. No more 1000 rows

I just created a new spec test file. instead of all these tests i just made it iterate over facts and params, so i can add facts and params easier later on. It took some learning of ruby.. and i really do not like ruby, so i worked hard for this ;-)

Closing this as the spec tests have been refactored with release v2.0.0.
@wooflock btw: very nice spec tests you wrote :+1:


CloudWatchLogs cannot query realtime latest log

CloudWatchLogs query cannot get the latest log that are just being created
var query = await cloudWatchLogs.StartQueryAsync(
    new StartQueryRequest
    {
        LogGroupName = _logGroup,
        StartTime = (long) (DateTime.UtcNow.AddMinutes(-5) - new DateTime(1970, 1, 1)).TotalSeconds,
        EndTime = (long) (DateTime.UtcNow.AddMinutes(5) - new DateTime(1970, 1, 1)).TotalSeconds,
        QueryString = "filter Level=\"Error\""
    }, token);
var request = new GetQueryResultsRequest
    {
        QueryId = query.QueryId
    };
GetQueryResultsResponse results;
do
{
    results = await cloudWatchLogs.GetQueryResultsAsync(request, token);
} while (results.Status == QueryStatus.Running ||
         results.Status == QueryStatus.Scheduled);
return results;

Expected Behavior
Completed results suppose to have the latest logs in the pass 5 minutes.
Current Behavior
There is no log being returned after the result status is completed.
Possible Solution
StartQueryRequest should allow null EndTime so it will automatically query from StartTime to now.
Steps to Reproduce (for bugs)
Trigger some logs, then immediately use StartQueryAsync and GetQueryResultsAsync to get the latest log.
Context
I am trying to create a log alert system using SNS and Lambda.
CloudWatch filter will trigger an alert that will executed action on the SNS
The SNS will trigger the Lambda to query the latest log and send an email notification
However, the latest log cannot be query properly.
e.g.

The logs that trigger the alert is created at 17:17:45
Alarm history shows Successfully executed action arn:aws:sns:...  at 17:17:55
Lambda is triggered by SNS and StartQueryAsync at 17:17:59
GetQueryResultsAsync get the completed result at 17:18:04 with no log result

*the times are based on the CloudWatch
Your Environment

AWSSDK.Core version used: 1.1.0
Service assembly and version used: AWSSDK.CloudWatchLogs <IP_ADDRESS>
Operating System and version: Lambda .NET Core 2.1 (C#/PowerShell) runtime
Targeted .NET platform: Core 2.1

Hi @jasonycw, I'll respond to this more later, but I want to point out a problem in your code while I have time so you hopefully don't encounter a never-ending loop.  Valid values for the query's status are: Scheduled | Running | Complete | Failed | Cancelled.  Complete, Failed, and Cancelled are all terminated states.  Should your query fail or be cancelled, the loop won't terminate as written.  You might also want to only call the GetQueryResultsAsync API occasionally so as to not consume too many resources.

Thanks for your tips, I have updated the do while loop.
The point is I want instant query on the latest log once the lambda is trigger, that's why I loop GetQueryResultsAsync right after StartQueryAsync.
I understand the two methods are not suppose to be called this way, but I don't see how lambda can get query in an "occasional asynchronous" way

Hi @klaytaybai, any update on why this happen?
I tried adding 2 minutes delay before querying the latest log and that could yield around 70% success rate of getting the latest logs.
However, if I search the log group directly on CloudWatch web console, I could query the latest log within a few seconds. Not sure why the query using code cannot get those same latest logs.

Hi @klaytaybai, any update on why this happen?

Hi @jasonycw,
I was going through the issue backlog and came across this issue. Using the following code, I'm unable to reproduce the issue. I test the Lambda function via AWS Explorer VS extension and immediately executing the below code retrieved the new logs from CloudWatch:
using System;
using Amazon;
using Amazon.CloudWatchLogs;
using Amazon.CloudWatchLogs.Model;

namespace CloudWatchQueryTest
{
    class Program
    {
        static void Main(string[] args)
        {
            string _logGroup = "/aws/lambda/LambdaTest";
            using (AmazonCloudWatchLogsClient client = new AmazonCloudWatchLogsClient(RegionEndpoint.USWest2))
            {

                var query = client.StartQueryAsync(
                    new StartQueryRequest
                    {
                        LogGroupName = _logGroup,
                        StartTime =<PHONE_NUMBER>, //1 Jan 2020
                        EndTime = (int)(DateTime.UtcNow - new DateTime(1970, 1, 1)).TotalSeconds,
                        QueryString = "fields @timestamp, @message | sort @timestamp desc"
                    }
                ).Result;

                var request = new GetQueryResultsRequest
                {
                    QueryId = query.QueryId
                };

                GetQueryResultsResponse results;
                do
                {
                    results = client.GetQueryResultsAsync(request).Result;
                } while (results.Status == QueryStatus.Running ||
                         results.Status == QueryStatus.Scheduled);

                Console.WriteLine("Total Results: " + results.Results.Count);
            }

            Console.ReadLine();
        }
    }
}

It could be a temporary delay until logs are available to all the endpoints.
Thanks,
Ashsih

Hi @ashishdhingra
I had moved on from query log from lambda to use CloudWatch event trigger lambda, so I do not have any code in hand that need to query CloudWatch immediately after the log occur.
But if there is still delay between latest log and query of log, then the bug still exist.
Not sure will the latest 3.5.X version of CloudWatchLogs package will improve the situation

@jasonycw I will have a look at the the .NET SDK CouldWatchLogs API and let you know the findings. Most probably, the SDK is only a wrapper around Service API (just need to confirm), in that case it's not a bug in SDK, but a lag from service API. I will keep you posted.

@jasonycw From what I see in the code for AmazonCloudWatchLogsClient, all the operations are just service API wrappers. So it appears to be a lag from the service level.


Refactor units into one single place

It seems that units don't behave consistently. Consider getSpeed versus getDistance:
const { getDistance, getSpeed } = require("geolib");
const left = { latitude: 40, longitude: 50, time: 1 };
const right = { latitude: 40.5, longitude: 50.5, time: 2 };
getDistance(left, right, { unit: "meters" }); // 69944
getDistance(left, right, { unit: "meter" }); // 69944
getDistance(left, right, { unit: "invalid" }); // 69944
getDistance(left, right, { unit: "m" }); // 69944
getSpeed(left, right, { unit: "meters" }); // NaN
getSpeed(left, right, { unit: "meter" }); // NaN
getSpeed(left, right, { unit: "invalid" }); // NaN
getSpeed(left, right, { unit: "m" }); //<PHONE_NUMBER>00

Could you please make the available units consistent across all functions that accept them?

Good point, I will have a look at it. thanks!

This is fixed in v3 which will be released shortly.


[Sema] Disallow multiple overrides of the same base declaration

Prevents the same declaration from being overridden twice. Previously, this code would compile, and the result depended on the order in which the two Derived methods were declared:
class Ty {}
class SubTy: Ty {}
class Base {
    func foo(x: SubTy) {}
}
class Derived: Base {
    override func foo(x: Ty) { print("x: Ty") }
    override func foo(x: SubTy) { print("x: SubTy") }
}
(Derived() as Base).foo(x: SubTy())  // result depends on the order of the overrides!

Checking for this situation in checkRedeclaration() seemed pretty simple. (Although perhaps it is deceptively so, and I've neglected some edge cases.) cc @DougGregor, author of checkRedeclaration(), and @gribozavr, original filer of the JIRA. (Are my branch names as cool as @CodaFi's yet?)
Resolves SR-732.

@swift-ci please smoke test

@swift-ci please smoke test

@swift-ci please smoke test.

@jckarter, is there anything in SIL-land which could have helped find this problem? The output of my example program above depends on the order of method definitions, which makes me think it could have been possible to notice this when creating a vtable.

@jtbandes We probably try to redefine the sil_vtable entry at some point. SILVTable could assert that a vtable entry does not already exist for a method when trying to insert a new entry. We could add an explicitly different update method if it's needed by optimizations.

Can you add a test where the two overrides are in different files? (You'll need to make the base method an @objc method for that to be allowed in an extension.)

With @objc methods, we'll already get an error about conflicting selectors.

The PR looks good to me. I couldn't think of any situations it would miss; this check is a whole lot simpler without multiple inheritance :)


windows 10 python 3.6.5 import error

import boolexpr
Traceback (most recent call last):
File "", line 1, in
File "C:\Program Files\Python36\lib\site-packages\boolexpr_init_.py", line 281, in
lib = ffi.dlopen(libpath)
File "C:\Program Files\Python36\lib\site-packages\cffi\api.py", line 141, in dlopen
lib, function_cache = _make_ffi_library(self, name, flags)
File "C:\Program Files\Python36\lib\site-packages\cffi\api.py", line 802, in _make_ffi_library
backendlib = _load_backend_lib(backend, libname, flags)
File "C:\Program Files\Python36\lib\site-packages\cffi\api.py", line 798, in _load_backend_lib
return backend.load_library(path, flags)
OSError: cannot load library 'C:\Program Files\Python36\lib\site-packages\boolexpr_boolexpr.cp36-win_amd64.pyd': error 0x7e

I don't have a Windows development machine at the moment, so can't help out.

ok，thanks。

The project is great, but there are too few people to pay attention to.
Thank you for your contribution
How to  dump large variable,i use numpy.savez and pickle.dump,was failed.

I remember quite a while ago someone else asked me about pickling. The C++/Python interface makes it a bit complicated to pull off; you might want to look into other ways of doing serialization. For example, the from_ast and to_ast methods convert expressions to/from a more generic data structure.

to_ast is slow ,to_dot success,but less than optmal


Combine haushaltsnahe and handwerker

Short Description
For better usability, this combines the two steps haushaltsnahe_steuerminderungen and handwerker (see the ticket here and the design here)
Changes

Combine the two Steps
Adapt the jqeury_entries.html to be able to work with two entries fields on one page (one of the selector would previously select both of them)
Add a new form_haushaltsnahe_handwerker.html to implement the changed design
Change a typo in a messages selector

Feedback

The details component is now part of the intro of the step. This introduced a problem with the way we are styling that component because it depends on the size of the column it is placed in. We probably need to change that component. What ideas do you have to do so?
Do you see anything else?

I fixed the display on the summary page. To Julian's comment about the details: I'd first merge #197 and see if that fixes the issue of spacing between the quote line and the text (which I think it will).


Can I set global settings?

Can I set the cache_dir globally instead of having to set it on every instance of the @cachier decorator?

Not yet, but this is a feature I'm actively developing.

Judson, please rebase your current work over the commit I just pushed giving you the proper credit (in our readme) for you awesome work. :)
@lordjabez


'Overriding invalid values'

I have the latest version of your program and it is reporting errors in my config file but I am afraid I cannot find them. So I am inclined to think that either the program is not parsing the config properly or else it could at least give more informative error messages :)
Here are the errors.
~ $ cat /var/log/syslog | grep 'Overriding invalid'
Feb  3 04:53:42 x1 python3[1357]: [!] Overriding invalid "UNDERVOLT.AC" value in "CORE" voltage plane: 40 -> 0
Feb  3 04:53:42 x1 python3[1357]: [!] Overriding invalid "UNDERVOLT.AC" value in "GPU" voltage plane: 30 -> 0
Feb  3 04:53:42 x1 python3[1357]: [!] Overriding invalid "UNDERVOLT.BATTERY" value in "CORE" voltage plane: 45 -> 0
Feb  3 04:53:42 x1 python3[1357]: [!] Overriding invalid "UNDERVOLT.BATTERY" value in "GPU" voltage plane: 30 -> 0
Feb  3 04:53:42 x1 python3[1357]: [!] Overriding invalid "UNDERVOLT.BATTERY" value in "CACHE" voltage plane: 30 -> 0
Feb  3 04:53:42 x1 python3[1357]: [!] Overriding invalid "UNDERVOLT.BATTERY" value in "UNCORE" voltage plane: 30 -> 0
Feb  3 04:59:04 x1 python3[19769]: [!] Overriding invalid "UNDERVOLT.AC" value in "CORE" voltage plane: 40 -> 0
Feb  3 04:59:04 x1 python3[19769]: [!] Overriding invalid "UNDERVOLT.AC" value in "GPU" voltage plane: 30 -> 0
Feb  3 04:59:04 x1 python3[19769]: [!] Overriding invalid "UNDERVOLT.BATTERY" value in "CORE" voltage plane: 45 -> 0
Feb  3 04:59:04 x1 python3[19769]: [!] Overriding invalid "UNDERVOLT.BATTERY" value in "GPU" voltage plane: 30 -> 0
Feb  3 04:59:04 x1 python3[19769]: [!] Overriding invalid "UNDERVOLT.BATTERY" value in "CACHE" voltage plane: 30 -> 0
Feb  3 04:59:04 x1 python3[19769]: [!] Overriding invalid "UNDERVOLT.BATTERY" value in "UNCORE" voltage plane: 30 -> 0

Here is my config file.
[GENERAL]
# Enable or disable the script execution
Enabled: True
# SYSFS path for checking if the system is running on AC power
# To reload this config file:
# sudo systemctl restart lenovo_fix.service
Sysfs_Power_Path: /sys/class/power_supply/AC*/online

## Settings to apply while connected to Battery power
[BATTERY]
# Update the registers every this many seconds
Update_Rate_s: 30
# Default: 30.
# Max package power for time window #1
PL1_Tdp_W: 29
# Time window #1 duration
PL1_Duration_s: 28
# Max package power for time window #2
PL2_Tdp_W: 44
# Time window #2 duration
PL2_Duration_S: 0.002
# Max allowed temperature before throttling
Trip_Temp_C: 85
# Default: 85.
# Set cTDP to normal=0, down=1 or up=2 (EXPERIMENTAL)
cTDP: 0

## Settings to apply while connected to AC power
[AC]
# Update the registers every this many seconds
Update_Rate_s: 5
# Default: 5.
# Max package power for time window #1
PL1_Tdp_W: 44
# Time window #1 duration
PL1_Duration_s: 28
# Max package power for time window #2
PL2_Tdp_W: 44
# Time window #2 duration
PL2_Duration_S: 0.002
# Max allowed temperature before throttling
# As the script came, it was 95. ** THIS IS THE ONE TO CHANGE. ** >= 93 (or lower?) is too noisy?
Trip_Temp_C: 95
# Set HWP energy performance hints to 'performance' on high load (EXPERIMENTAL)
HWP_Mode: False
# Was: False.
# Set cTDP to normal=0, down=1 or up=2 (EXPERIMENTAL)
cTDP: 0

[UNDERVOLT.AC]
# CPU core voltage offset (mV)
CORE: 40
# 40.
# Default: 0
# Integrated GPU voltage offset (mV)
GPU: 30
# 30.
# Default: 0
# CPU cache voltage offset (mV)
CACHE: 0
# System Agent voltage offset (mV)
UNCORE: 0
# Analog I/O voltage offset (mV)
ANALOGIO: 0

[UNDERVOLT.BATTERY]
# CPU core voltage offset (mV)
CORE: 45
# Default: 0
# 45. 50 causes VirtualBox problems? 80 seems to. 100: caused a crash.
# Integrated GPU voltage offset (mV)
GPU: 30
# Default: 0
# GPU value: 30.
# CPU cache voltage offset (mV)
CACHE: 30
# Try 30.
# System Agent voltage offset (mV)
UNCORE: 30
# Try 30
# Analog I/O voltage offset (mV)
ANALOGIO: 0
# Try 30?

My system

ThinkPad X1CG6
Linux Mint 19.3 x64 Cinnamon
5.3 kernel

Your undervolt values should be negative. See if it still happens if you add a minus sign in front of all undervolt entries.

Making the values negative did indeed fix the problem. This will be something that trips many people up, I think. After all, the sections are entitled _under_volt. I suggest that you put something about this as a comment at the top of the default conf file. Thanks for the help.

The Readme states that the values must be negative (it also has an example). But I see how it could be confusing by only looking at the conf file.
You can check the relevant section of the readme here: https://github.com/erpalma/throttled#configuration

Ah. Thanks. Still, you might as well stick the point in the conf file as well, no?


Enlarging preview pane makes bottom bar disappear

When enlarging the image preview pane vertically, in such a way that it hides the histograms, the bottom bar (which displays the serial terminal button, firmware version, etc.) disappears outside of the screen frame:

This behavior was consistently observed on a laptop running Ubuntu 20.04 with a Full HD resolution screen, as well as a WIndows laptop with similar resolution. Interestingly when capturing the current window frame with the built-in screenshot app, the entire window will be captured.

I have to update the IDE framework to fix this. It's due to scaling issues.
Will fix.

Unfortunately, this issue was either solved only on my larger screen display or it was re-broken with the latest update... can't remember.
In any case, the issue remains on 2.9.0 on Ubuntu 20.04.4 LTS at present. THis is my whole screen:

Hi, I have to update the IDE qt version to fix this. I will get this done soon.

Ibrahim confirmed this is fixed with the latest IDE.


Support for managed expo projects

Hi there 👋
I'm fairly new to react-native development, so I've been using the managed expo workflows for my toy projects.
This is the issue I'm bumping into:
Invariant Violation: requireNativeComponent: "AutoLayoutView" was not found in the UIManager.
$ expo --version
5.4.12

$ node --version
v16.14.2

// package.json
...
"dependencies": {
    "@react-navigation/native": "^6.0.10",
    "@react-navigation/native-stack": "^6.6.2",
    "@shopify/flash-list": "^1.0.2",
    "expo": "~45.0.0",

I'm assuming I'd be able to eject expo and then run pod install in the ios folder, but it would be interesting to know if I'm missing some steps on how to link to my managed expo project without having to eject.
Thanks! 🙏

Haven't tried it yet but found this tweet from someone on the expo team
expo install @shopify/flash-list expo-dev-client
𝚎𝚡𝚙𝚘 𝚛𝚞𝚗:𝚒𝚘𝚜 - or - 𝚎𝚊𝚜 𝚋𝚞𝚒𝚕𝚍

https://twitter.com/Baconbrix/status/1542568635209744384

You'll need to first build the expo-dev-client with @shopify/flash-list installed.

Yeah exactly. You can't use this in Expo Go, just like any libraries with native code. You'll need to create a custom dev client and use EAS to build.

Here's an example of creating a custom dev client that uses flash list for iOS and web (android pending an upstream Kotlin issue).

Here's an example of creating a custom dev client that uses flash list for iOS and web (android pending an upstream Kotlin issue).

Here's an example of creating a custom dev client that uses flash list for iOS and web (android pending an upstream Kotlin issue).

this should just work out of the box on sdk 45 projects with expo-dev-client on ios.
for android, once https://github.com/Shopify/flash-list/pull/481 lands it'll also "just work"

Thanks for the report and the fix from @brentvatne 💯
We have released a new patch version witch 1.0.3 that should enable everyone to run Android in the expo-managed setup 🎉
I have also updated the installation instructions to include expo-dev-client. I'm going to close this issue, we can reopen it if you still experience issues.


nimble/host: Fix possible overflow in ble_gatts_peer_cl_sup_feat_update

This function would write pass conn->bhc_gatt_svr.peer_cl_sup_feat buffer. Since supported features are likely to be small (currently only 3 bits are defined) lets keep this simple and just make local copy before validation.

@Roshan23699 FYI


Arb ball-arithmetic integrator fail for eta>63

Problem has been identified, and is due to use of slong 64-bit signed integer as upper integration limit. It should be replaced with appropriate arb_t number.

Fixed.


”Baru”, ”Livadia”, ”Petros”, ”Valea Lupului” are listed in the drop-down menu

Description:
When user writes ”Baru”, ”Livadia”, ”Petros”, ”Valea Lupului” the locations appear in the drop-down menu next to the comune and the county witch is a part according to the law.
Precondition:
The website is up an running.

Step 1
Write in the search bar "Baru"

Expected results
The location appears in the drop-down menu as "Sat Baru, HUNEDOARA (Baru)".

Step 2
Press "x" button.

Expected results
The location was deleted from the search bar.

Step 3
Write in the search bar "Livadia"

Expected results
The location appears in the drop-down menu as "Sat Livadia, HUNEDOARA (Baru)".

Step 4
Press "x" button.

Expected results
The location was deleted from the search bar.

Step 5
Write in the search bar "Petros"

Expected results
The location appears in the drop-down menu as "Sat Petros, HUNEDOARA (Baru)".

Step 6
Press "x" button.

Expected results
The location was deleted from the search bar.

Step 7
Write in the search bar "Valea Lupului"

Expected results
The location appears in the drop-down menu as "Sat Valea Lupului, HUNEDOARA (Baru)".


[skip ci] Update Mergify configuration to v2

Pull-request updated, HEAD is now 485b13c3602faff53da5004c6cbb03f93f14ecb5

Added Signed-Off

Fixed skip ci

Fixed quotes


[$500] Chat - Action menu for MP4 files has "Copy to clipboard" and "Edit comment" functions

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

Version Number: v1.4.35-0
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
Expensify/Expensify Issue URL:
Issue reported by: Applause- Internal Team
Slack conversation:
Action Performed:
Pre-requisite: user must be logged in.

Go to any chat.
Send a MP4 file.
Right click on it for the action menu to appear

Expected Result:
"Copy to clipboard" and "Edit comment" should not be options for MP4 files.
Actual Result:
"Copy to clipboard" and "Edit comment" are functions available for MP4 files. When edited, the file is no longer available.
Workaround:
Unknown
Platforms:

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

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

Screenshots/Videos
Add any screenshot/video evidences>
https://github.com/Expensify/App/assets/93399543/637abd2e-8bf4-4d5c-ae58-e9e521548708
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~01bd7a8a1a0e4bc08b
Upwork Job ID:<PHONE_NUMBER>515966976
Last Price Increase: 2024-02-01

We think that this bug might be related to #vip-vsb
CC @quinthar

Proposal
Please re-state the problem that we are trying to solve in this issue.
Chat - Action menu for MP4 files has "Copy to clipboard" and "Edit comment" functions
What is the root cause of that problem?
The root cause of the problem is that the text of a video will be the video's name but should be [Attachment].

Therefore, the first condition seen below will fail for messages that are video attachments.
https://github.com/Expensify/App/blob/9ab4fe92dcbac8252998febf6fa24a080a196a70/src/libs/isReportMessageAttachment.ts#L20
Also, we did not test the isReportMessageAttachment function with any other test but [Attachment] as text.
https://github.com/Expensify/App/blob/33463c2bdf0abe10de018e96ddbdfda01d582736/tests/unit/isReportMessageAttachmentTest.js#L3-L10
What changes do you think we should make in order to solve the problem?

After matching the HTML with the CONST.ATTACHMENT_UPLOADING_MESSAGE_HTML regex, we should add another condition to check for any other attachment types that do not show a preview if the [Attachment] condition fails. E.g. isVideo for video attachments.
Finally, add tests for the changes created.
What alternative solutions did you explore? (Optional)
N/A

Proposal
Please re-state the problem that we are trying to solve in this issue.
Chat - Action menu for MP4 files has "Copy to clipboard" and "Edit comment" functions
What is the root cause of that problem?
The root cause of the problem is that the text of a video will be the video's name but should be [Attachment].

Therefore, the first condition seen below will fail for messages that are video attachments.
https://github.com/Expensify/App/blob/9ab4fe92dcbac8252998febf6fa24a080a196a70/src/libs/isReportMessageAttachment.ts#L19-L20
Also, we did not test the isReportMessageAttachment function with any other test but [Attachment] as text.
https://github.com/Expensify/App/blob/33463c2bdf0abe10de018e96ddbdfda01d582736/tests/unit/isReportMessageAttachmentTest.js#L3-L10
What changes do you think we should make in order to solve the problem?

After matching the HTML with the CONST. ATTACHMENT_SOURCE_ATTRIBUTE  regex, we should add another condition to check for any other attachment types that do not show a preview if the [Attachment] condition fails. E.g. isVideo for video attachments.
Finally, add tests for the changes created.
What alternative solutions did you explore? (Optional)
N/A

I will review tomorrow

Waiting for more proposal

Hi @DylanDylann, I updated my proposal.
Could you review it?
Thanks

Thanks for everyone. @Krishna2323's proposal doesn't fix this issue completely (miss "Edit comment" option). @Tony-MK's proposal  looks good to me
🎀 👀 🎀 C+ reviewed

because canEditReportAction is also used in ReportScreen and isReportMessageAttachment is different from isReportActionAttachment.

I don't see any problem with modifying isReportMessageAttachment with isReportActionAttachment in the canEditReportAction function

Hey @DylanDylann, @Krishna2323 did seem to include the edit comment option in his proposal. Were there any other reasons you wanted to go with @Tony-MK's proposal?

@Krishna2323, You edited your proposal numerously, and at the point of review, you did not specify the editAction function, which is crucial in this issue. Hence, I did not copy your proposal.
Furthermore, you introduced the editAction function just a day ago. A couple of minutes after @DylanDylann made his decision. That is not fair. A screenshot is below, but @srikarparsi, you should check the edit timeline of @Krishna2323's proposal to confirm this.

Finally, not to be rude, but I backed off from this issue which you were assigned where your RCA and solution were flawed. However, I respected the C+'s and the engineer's decision. Anyway, someone else did the right fix.
I don't want to debate because it is against the rules, but let's work as a team.

@Krishna2323, You edited your proposal numerously, and at the point of review, you did not specify the editAction function, which is crucial in this issue. Hence, I did not copy your proposal.
Furthermore, you introduced the editAction function just a day ago. A couple of minutes after @DylanDylann made his decision. That is not fair. A screenshot is below, but @srikarparsi, you should check the edit timeline of @Krishna2323's proposal to confirm this.

Finally, not to be rude, but I backed off from this issue which you were assigned where your RCA was flawed. However, I respected the C+'s and the engineer's decision. Anyway, someone else did the right fix.
I don't want to debate because it is against the rules, but let's work as a team.

you edited your proposal 2 hours before the review

You mentioned it in the root cause but I haven't found your solution yet.
Your solution excludes isAttachment.
Furthermore, you did not even test your solution because it would not work.
How would you expect a C++ also to review your previous proposals? 🤔  (Your last proposal is your final and best version of your proposal).
Over-edit your proposal, even after review.

These are the weaknesses of the proposal I noticed and only edited three times.
I tested my solution and know it works. Yours doesn't. Simple.

@srikarparsi When I reviewed the proposal, @Krishna2323 did not mention the edit comment option in his proposal. I approved @Tony-MK's proposal because that's the only one that fixes this issue completely.
@Krishna2323 Read the guideline carefully
https://github.com/Expensify/App/blob/9463e22ba5c0897d519c0ccc85c12ae591742541/contributingGuides/CONTRIBUTING.md?plain=1#L100-L108
Please post a new comment when you edit your proposal to avoid confusion

I gave my decision here, the final decision is up to the internal engineer

Ok, lets go with @Tony-MK in this case. I do understand that @Krishna2323 had edit in the root cause and this is very semantic but it could've been included in the changes. I also think we should

Switch isReportMessageAttachment with isReportActionAttachment in the canEditReportAction function.

as long as it doesn't cause any regressions.

Not overdue, being worked on in the PR.

@Tony-MK any update on the PR

Sorry for the delay, @DylanDylann.
I am having issues testing android - mWeb.
However, I should be done by tomorrow.

@srikarparsi It seems like the backend is returning the filename instead of the [Attachment] text. Were you able to look into it? There is also a comment from @mkhutornyi regarding the same: https://github.com/Expensify/App/issues/35578#issuecomment-1921954417.
CC @francoisl since you were involved with this project. 🙇
Also, it would be great to have this fixed as quickly as possible @DylanDylann @Tony-MK, since we had another issue created today that was marked as deploy blocker https://github.com/Expensify/App/issues/36828.

@Tony-MK Please help to speed up our PR, because our PR will fix other deploy blocker issues

@DylanDylann Sorry for the delay. Let's finish the PR.

It seems like the backend is returning the original filename instead of the [Attachment] text. Were you able to look into it? There is also a comment from

@techievivek I'm working on this already, we also need to make the backend return [Attachment] for the lastMessageText value when uploading a video.

Ok great, thanks for confirming @francoisl 🙇

@kadiealexander The PR was deployed to production 2 weeks ago. Please help to process the next step

BugZero Checklist: The PR fixing this issue has been merged! The following checklist (instructions) will need to be completed before the issue can be closed:

[ ] [@DylanDylann] The PR that introduced the bug has been identified. Link to the PR:
[ ] [@DylanDylann] The offending PR has been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake. Link to comment:
[ ] [@DylanDylann] A discussion in #expensify-bugs has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner. Link to discussion:
[ ] [@DylanDylann] Determine if we should create a regression test for this bug.
[ ] [@DylanDylann] If we decide to create a regression test for the bug, please propose the regression test steps to ensure the same bug will not reach production again.
[ ] [@kadiealexander] Link the GH issue for creating/updating the regression test once above steps have been agreed upon:

Payouts due:

[ ] Contributor: $500 @Tony-MK
[ ] Contributor+: $500 @DylanDylann

Upwork job is here.

BugZero Checklist: The PR fixing this issue has been merged! The following checklist (instructions) will need to be completed before the issue can be closed:
[@DylanDylann] The PR that introduced the bug has been identified. Link to the PR: NA
[@DylanDylann] The offending PR has been commented on, pointing out the bug it caused and why, so the author and reviewers can learn from the mistake. Link to comment: NA
[@DylanDylann] A discussion in #expensify-bugs has been started about whether any other steps should be taken (e.g. updating the PR review checklist) in order to catch this type of bug sooner. Link to discussion: NA
[@DylanDylann] Determine if we should create a regression test for this bug. Yes
[@DylanDylann] If we decide to create a regression test for the bug, please propose the regression test steps to ensure the same bug will not reach production again.
Regression Test Proposal

Go to a chat that has a video that was not uploaded by the device.
Open the video's context menu by holding down or left-click.
Verify that "Download" is a menu option.
Verify "Copy to clipboard" and "Edit comment" are not menu options.
Upload a video.
Open the video's context menu by holding down or left-click.
Verify that "Download" is a menu option.
Verify "Copy to clipboard" and "Edit comment" are not menu options.

Do we agree 👍 or 👎


Fix: Update dependencies

del v6.0.0
folder-hash v4.0.0
fs-extra v9.0.1
github v14.0.0
gulp-babel v8.0.0

Fixes #2168

@iamareebjamal this won't run the travis ci build as I have changed only the package.json. I have checked there is no build corresponding to this PR as well.

You need to update yarn.lock as well and travis build should still work

@iamareebjamal Doesn't yarn also look up to package.json like npm does for installation of dependencies of a specific version? Don't you think yarn.lock must be in gitignore like package-lock.json? Please do let me know if I am missing something.

No. There is no point of yarn.lock if it is not committed to the repository. Please read more about it. It is a security and dependency pinning feature


virtual service match scheme regex,page show no healthy upstreams

Bug description
apiVersion: networking.istio.io/v1beta1
kind: VirtualService
metadata:
  name: bookinfo
spec:
  gateways:
  - bookinfo-gateway
  hosts:
  - '*'
  http:
  - match:
    - scheme:
        regex: ".*"
    route:
    - destination:
        host: productpage
        port:
          number: 9080

no healthy upstream
[ ] Configuration Infrastructure
[ ] Docs
[ ] Installation
[ x] Networking
[ ] Performance and Scalability
[ ] Policies and Telemetry
[ ] Security
[ ] Test and Release
[ ] User Experience
[ ] Developer Infrastructure
Expected behavior
Steps to reproduce the bug
Version (include the output of istioctl version --remote and kubectl version and helm version if you used Helm)
How was Istio installed?
Environment where bug was observed (cloud vendor, OS, etc)

Same comment as https://github.com/istio/istio/issues/25213, please provide more info


FW-6190 media selector bug

Description of Changes
Please briefly explain the changes here.
Checklist

[x] README / documentation has been updated if needed
[x] PR title / commit messages contain Jira ticket number if applicable
[ ] Tests have been updated / created if applicable

Reviewers Should Do The Following:

[x] Review the changes here
[ ] Pull the branch and test locally

Additional Notes
N/A

This PR is failing the "Duplication on New Code" check but actually reduces duplication in the code overall.


[FLINK-36147][runtime] Removes deprecated location field

What is the purpose of the change
Removes deprecated field "location". It was replaced by the "endpoint" field in 1.19.
Verifying this change
This change is a trivial rework / code cleanup without any test coverage.
Does this pull request potentially affect one of the following parts:

Dependencies (does it add or upgrade a dependency): no
The public API, i.e., is any changed class annotated with @Public(Evolving): no
The serializers: no
The runtime per-record code paths (performance sensitive): no
Anything that affects deployment or recovery: JobManager (and its components), Checkpointing, Kubernetes/Yarn, ZooKeeper: no
The S3 file system connector: no

Documentation

Does this pull request introduce a new feature? no
If yes, how is the feature documented? not applicable

Squashed commits together (no diff)


Handle ERR-INVALID-AUTH responses from Conduit in patch workflow

Conduit responds to requests with either ERR-INVALID-SESSION or ERR-INVALID-AUTH if the request wasn't sufficiently authenticated. Arcanist's patch workflow can automatically attempt to recover from situations in which Conduit responds to unauthenticated requests with ERR-INVALID-SESSION (by resending an authenticated version of the request), but not ERR-INVALID-AUTH - recover from ERR-INVALID-AUTH in the same way.

See:
https://secure.phabricator.com/book/phabcontrib/article/contributing_code/
(Phabricator has never accepted contributions via pull request.)


net: lwm2m: Fix floating point handling

I've identified several issues when I tried to fix a problem with floating-point resource writes (see commit messages for details).
In general, I've:

Dumped the differentiation between 32/64 bit float values in LwM2M engine, and focused on float32_value, which was most commonly used. The actual handling between 32/64 bit floats takes only place when TLVs are being parsed (and the actual type is identified based on the TLV size, as described in the specification).
Fixed the Plain Text formatter, which incorrectly parsed floating points.
Fixed JSON formatter, which had the same issue as above.
Fixed a few other issues in JSON formatter, which prevented successful writes in general.

I was actually considering to dump both float types defined by LwM2M and replace them with native float or double. Replacing float32_value_t with double should have minimal (if any) memory footprint impact and would increase the precision of the LwM2M floating point handling a lot. As it is a more invasive change to the engine however, I wanted to hear some opinions first, but for me, the use of float32_value_t is a bit counter-intuitive (and more difficult from the application point of view).

Nice to see some work being done on the float implementation!
Some quick thoughts:

I'm still a little confused on why the special float32_value_t typedef is needed? Why not use a native float/double?
The '32' notion is slightly confusing as it can be used to accept 64 bit values too. On the other hand though, the notion nicely underlines the type and implications.

I disliked the typedefs enough to replace them by a native float, and then use these functions to convert between the two:
float32_value_t float_to_float32_value_t (float input)
{
  float integer;
  float fractional;
  fractional = modff(input, &integer);

  float32_value_t output;
  output.val1 = (int32_t) integer;
  output.val2 = (int32_t) (fractional * 1e6);

  return output;
}

float float32_value_t_to_float (float32_value_t *input)
{
  return ((float) input->val1 + ((float) input->val2 / 1000000));
}

I'm still a little confused on why the special float32_value_t typedef is needed? Why not use a native float/double?

I was actually considering replacing float32_value_t with double, see the last paragraph in the PR description, just wanted to gather some opinions first, as it's a more invasive change. But I agree that this special representation of float is not very handy and built-in types should be easier for the application to handle (especially that double should actually increase precision at no cost).  But why were these types introduced in the first place is also a mystery to me.

The '32' notion is slightly confusing as it can be used to accept 64 bit values too. On the other hand though, the notion nicely underlines the type and implications.

It just refers to the underlying types.

I was actually considering replacing float32_value_t with double, see the last paragraph in the PR description, just wanted to gather some opinions first, as it's a more invasive change.

If I understood correctly, in the final implementation only double would be used for LwM2M FLOAT type?
I agree with everything stated, we should remove this legacy code.
I git blamed part of code declaring these types and they were included in initial commit for lwm2m 4 years ago.
This library was based on source worked on by Joakim Eriksson,
Niclas Finne and Joel Hoglund which was adopted by Contiki and then
later revamped to work as a stand-alone library.

I quickly skimmed through contiki-ng repo and it seems even they abandoned this implementation.

If I understood correctly, in the final implementation only double would be used for LwM2M FLOAT type?

Yes, that's the idea.

I quickly skimmed through contiki-ng repo and it seems even they abandoned this implementation.

Well, another argument to dump the custom float handling.

Hi, those changes look sensible, provided that there is a FPU present. For some boards like native_posix this is not (yet?) the case, at least it is not selected. For me it looks like testing lwm2m with the native_posix is not possible anymore after this change. This would also affect all SOCs which do not select CONFIG_CPU_HAS_FPU [1].
[1] https://docs.zephyrproject.org/latest/reference/kconfig/CONFIG_CPU_HAS_FPU.html

Hi, those changes look sensible, provided that there is a FPU present. For some boards like native_posix this is not (yet?) the case, at least it is not selected. For me it looks like testing lwm2m with the native_posix is not possible anymore after this change. This would also affect all SOCs which do not select CONFIG_CPU_HAS_FPU [1].
[1] https://docs.zephyrproject.org/latest/reference/kconfig/CONFIG_CPU_HAS_FPU.html

I haven't tested it, but perhaps software-support of floating points to replace the FPU functionality has to be enabled manually?

float32_value_t
But why were these types introduced in the first place is also a mystery to me.

Just as hinted by other comments above, my guess would be to not rely (too much at least) on floating-point support to be available just to be able to deal with LWM2M.
Thus, the usual suggestion: why not split this PR in 2 parts, merge the obvious fixes for 2.7 LTS, and then consider whether adding dependency on native FP support should be part of 2.7 or not.

Commit message:

This lead to issues
for instance with Leshan, where Leshan sent 64-bit value

Minor nitpick, but not everyone may know what Leshan is, so would be helpful to have a more detailed reference, like "Eclipse Leshan LWM2M library" (or server?).

I've removed the transition to double from the PR, leaving only bug fixes. Additionally, I've added an extra commit which fixes a 32-bit binary float coversion, which I've identified during the rework.

As for the transition to double, I'll open a separate PR after the release where we can discuss the topic further.

Hi, those changes look sensible, provided that there is a FPU present. For some boards like native_posix this is not (yet?) the case, at least it is not selected. For me it looks like testing lwm2m with the native_posix is not possible anymore after this change. This would also affect all SOCs which do not select CONFIG_CPU_HAS_FPU [1].
[1] https://docs.zephyrproject.org/latest/reference/kconfig/CONFIG_CPU_HAS_FPU.html

I haven't tested it, but perhaps software-support of floating points to replace the FPU functionality has to be enabled manually?

@mlasch @MaikVermeulen
It seems that I was overzealous with adding select FPU in the Kconfig. I've tested this with qemu_x86 originally, and it only worked with FPU enabled - the reason for this is that minimal libc does not have support for software floating point. After switching to newlib it works fine with software FP support. And on the second thought, the LwM2M lib should not enforce either hardware or software FP. I think that in the final solution I'd add a proper depends on entry, to make sure that either FPU or software FP lib is avaiable. And then in the sample, either add board-specific overlay for qemu, or simply switch to newlib.

Rebased & resolved conflict.


Update the installation process

Might be like that (Ubuntu 20.04.3 LTS):
1 - Ensure you have installed docker-compose.
$ apt install docker-compose
2 - download compose-switch binary for your architecture
$ curl -fL https://github.com/docker/compose-switch/releases/download/v1.0.4/docker-compose-linux-amd64 -o /usr/bin/compose-switch
3 - make compose-switch executable
$ chmod +x /usr/bin/compose-switch
4 - rename docker-compose binary to docker-compose-v1
$ mv /usr/bin/docker-compose /usr/bin/docker-compose-v1
5 - define an "alternatives" group for docker-compose command:
$ update-alternatives --install /usr/bin/docker-compose docker-compose /usr/bin/docker-compose-v1 1
$ update-alternatives --install /usr/bin/docker-compose docker-compose /usr/bin/compose-switch 99

Step 1 - renaming a file, which was installed by apt, is generally a bad idea. When you rename a file of an installed package, it will stop keeping track of the file for possible upgrade or uninstall.


Some troubles with integration

I'm trying to use your library for my engine, but I can't properly integrate it.
I have that rendering model:
Scene -> Hierarchy -> GameObject -> Transform { position, rotation, scale } + EditorCamera as a GameObject
When I select a GameObject in hierarchy, I expect to edit its transform, but:

I cannot properly build matrices for ImGuizmo (Maybe I'm so stupid, but nothing I tried helps me)
It render grid and maybe something else orthographically
Even if I get some success, ImGuizmo renders on the background(behind all windows, but I need to render it over the render window only)

Screenshots:

Code of transform editing function:
void EditTransform(Transform* t)
    {
        auto cam = EditorInstance::GetSingleton()->currentScene->Get("Editor Camera");
        auto camCmp = cam->GetComponent<Camera>();

        ImGuizmo::SetOrthographic(false);
        ImGuizmo::BeginFrame();
        ImGuizmo::Enable(true);

        ImGuiIO& io = ImGui::GetIO();
        ImGuizmo::SetRect(0, 0, io.DisplaySize.x, io.DisplaySize.y);

        float* _view = new float[16];
        glm::mat4 mmat = glm::mat4();
        glm::translate(mmat, glm::vec3{t->globalPosition().x, t->globalPosition().y, t->globalPosition().z});
        glm::scale(mmat, glm::vec3{t->scale.x, t->scale.y, t->scale.z});
        glm::rotate(mmat, (float)t->rotation.x , glm::vec3{1, 0, 0});
        glm::rotate(mmat, (float)t->rotation.y , glm::vec3{0, 1, 0});
        glm::rotate(mmat, (float)t->rotation.z , glm::vec3{0, 0, 1});

        // ==> WHAT AM I DOING WRONG? NOTHING OF NEXT WORKS PROPERLY.
        //_view =(float*)glm::value_ptr(mmat);
        glGetFloatv(GL_MODELVIEW_MATRIX, _view);
        glm::fmat4 view = glm::mat4(*_view);

        float* _proj = new float[16];
        glm::mat4 pmat = glm::perspectiveFov(camCmp->fov, io.DisplaySize.x, io.DisplaySize.y, camCmp->_near, camCmp->_far);

//  ==> AND HERE TOO
//        _proj = (float*)glm::value_ptr(pmat);
//        glGetFloatv(GL_PROJECTION_MATRIX, _proj);
        glm::fmat4 projection = pmat; //(*_proj);

        auto matrix = glm::lookAt(
            glm::vec3{ cam->transform.globalPosition().x, cam->transform.globalPosition().y, cam->transform.globalPosition().z },
//            { t->globalPosition().x, t->globalPosition().y, t->globalPosition().z },
            { cam->transform.globalPosition().x + cam->transform.direction().x, cam->transform.globalPosition().y + cam->transform.direction().y, cam->transform.globalPosition().z + cam->transform.direction().z },
            { 0, 1, 0});

        ImGuizmo::DrawGrid(&view[0][0], &projection[0][0], &matrix[0][0], 200.0f);
        ImGuizmo::Manipulate(&view[0][0], &projection[0][0], ImGuizmo::TRANSLATE, ImGuizmo::WORLD, &matrix[0][0], NULL, NULL);
    }

Code of render window function:
 void winRender(){
        ImGui::Begin("Render", &win->render, window_flags);
        ImVec2 pos = ImGui::GetWindowPos();
        auto tex = dynamic_cast<NukeOGL*>(EditorInstance::GetSingleton()->render)->getRenderTexture();
        ImVec2 maxPos = ImVec2(pos.x + ImGui::GetWindowSize().x, pos.y + ImGui::GetWindowSize().y + 2);
        ImGui::GetWindowDrawList()->AddImage((void *)tex,
                                             ImVec2(ImGui::GetItemRectMin().x + 0,
                                            ImGui::GetItemRectMin().y - 2),
                                             maxPos, ImVec2(0,1), ImVec2(1,0));
        if(EditorInstance::GetSingleton()->selectedInHieararchy){
           EditTransform(&EditorInstance::GetSingleton()->selectedInHieararchy->transform);
        }

        ImGui::End();
    }

Hi,
To draw the gizmo in the window, you have to call ImGuizmo::Manipulate when rendering that window with ImGuizmo::SetRect(windowposx, windowposy, windowsizex, windowsizey);
your call to ImGuizmo::Manipulate uses a matrix built on the stack. It will be deleted after }. do the conversion back from matrix to TRS using the matrix decomposition function. and put the values your transform.

Ok, with window, I'm rendering the gizmo inside the window, but it renders behind it. As I understood, it must overlap it. But.. it went to back.
Thank you for advice!

instead of calling beginFrame use that function: https://github.com/CedricGuillemet/ImGuizmo/blob/master/ImGuizmo.cpp#L733
it will use the drawlist for the current window instead of creating a new window

Oh, thank you very much, it helped with window, but something with model/view/projection matrices, what I should do for correct displaying of them?
I have object transform, camera transform and some other camera parameters(fov, width, height, near, far).

The grid display is for debug/sample purpose only. The clipping is not handled correctly. you should use you own.

No, no, I'm asking for gizmo positioning. It flew out of object. I want to snap it to object, but I don't know how to get right matrices (model, view and projection).
Look:

You can try with glGetFloatv(GL_MODELVIEW_MATRIX / GL_PROJECTION_MATRIX, m);
And then, when it works substitute with your own matrix computation

Oh, thank you very much, I've just mixed up camera view matrix and model matrix.
Everything is resolved.

That's good news! Closing issue.

instead of calling beginFrame use that function: https://github.com/CedricGuillemet/ImGuizmo/blob/master/ImGuizmo.cpp#L733 it will use the drawlist for the current window instead of creating a new window

the function being referenced is SetDrawlist().
And this should be documented somewhere in the main README.


InvalidArgumentException Action App\Http\Controllers\Creagia\LaravelRedsys\Controllers\RedsysNotificationController not defined.

Hi!,
I'm getting this error while making the request, and I can't figure out what is the cause. I don't know if I missing something after following the instructions.
Using Laravel 10 the error happens in both local with local environment and production server using test environment.
InvalidArgumentException Action App\Http\Controllers\Creagia\LaravelRedsys\Controllers\RedsysNotificationController not defined.
    vendor/laravel/framework/src/Illuminate/Routing/UrlGenerator.php:520 Illuminate\Routing\UrlGenerator::action
    vendor/laravel/framework/src/Illuminate/Foundation/helpers.php:102 action
    vendor/creagia/laravel-redsys/src/RequestBuilder.php:44 Creagia\LaravelRedsys\RequestBuilder::__construct
    vendor/creagia/laravel-redsys/src/RequestBuilder.php:69 Creagia\LaravelRedsys\RequestBuilder::newRequest
    vendor/creagia/laravel-redsys/src/Concerns/CanCreateRedsysRequests.php:31 App\StudentPayment::createRedsysRequest
    app/Http/Controllers/PaymentsStudents.php:1198 App\Http\Controllers\PaymentsStudents::studentPay

This is the code generating the request.
$redsysRequest = $payment->createRedsysRequest(
    productDescription: $payment->paymentConcept->name,
    payMethod: PayMethod::Card,
);
return $redsysRequest->redirect();

Thanks!

Can you execute composer dump-autoload and try again? It seems your application can't find the RedsysNotificationController package class.
if (! $this->requestParameters->merchantUrl) {
    $this->requestParameters->merchantUrl = action(RedsysNotificationController::class);
}

If it continues to fail, can you provide a way to reproduce the problem with a fresh Laravel installation? I wasn't able to reproduce it.

I already done that and the issue still persist.
I've tried with this piece of code and I almost got it working. I can see the payment verification and the succcessfull view but the OK and KO url should have the request UUID but if I do not set them I have the same error as before with the Notification Controller.
$redsysRequest = RequestBuilder::newRequest(
    new \Creagia\Redsys\Support\RequestParameters(
        transactionType: \Creagia\Redsys\Enums\TransactionType::Autorizacion,
        productDescription: $payment->paymentConcept->name,
        amountInCents: $payment->getTotalAmount(),
        currency: Currency::EUR,
        payMethods: \Creagia\Redsys\Enums\PayMethod::Card,
        merchantUrl: 'http://devmysuite.test/redsys/notification',
        urlOk: 'http://devmysuite.test/redsys/successful-payment/{uuid}',
        urlKo: 'http://devmysuite.test/redsys/unsuccessful-payment/{uuid}'
    )
)->associateWithModel($payment);
return $redsysRequest->redirect();

Also, I'll try fresh Laravel installation and see if it works.

Tested on a fresh Laravel installation without problems. I have to figure out why isn't working in my current project.

I'm closing the issue for now. Feel free to reopen it if you find anything.

Finally found the problem. I replaced my current "app/Providers/RouteServicesProvider.php" with the content of the default Laravel 10 new project one. The project started in Laravel 5, a lot have changed since then.


Only part of the remote video is displayed on a mobile device with hardware acceleration

Browsers and versions affected
Tested with:

Desktop - Chrome 62 on OS X 10.13.1
Mobile:

Chrome 62 on Android 6, codec: VP8, device: Nexus 5
Chrome 62 on Android 6, codec: VP8, device: Samsung Galaxy J5
Chrome 62 on Android 7, codec: VP9, device: Samsung Galaxy Tab S3

Description
Only part of the remote video is displayed on the mobile device if WebRtc scales down the video resolution while the connection is active.
This happens only if the mobile device uses hardware acceleration. If the mobile device does not use hardware acceleration then everything works fine.
Steps to reproduce

On desktop Chrome 62 open the link: https://appr.tc/r/test0001?vsc=VP8&hd=true

On mobile Chrome 62 (Nexus 5) open the link https://appr.tc/r/test0001?vsc=VP8&hd=true

Join both browser in the room test0001

Now the connection is established at 720p and everything works fine. See the Screenshot_mobile_720p.png

Wait 1-2 minutes till WebRtc scales down the video resolution. If that does not happen then use an appropriate tool to limit the network bandwidth to 500 Kbps.

WebRtc scales down the desktop Video Tx from 720p to 540p. See ScreenShot_desktop_540p.png and Screenshot_mobile_540p.png. Now the video on the mobile device does not look good. The bottom right part of the video is missing.

WebRtc scales down the desktop Video Tx from 540p to 360p. See Screenshot_mobile_360p.png. Now the video on the mobile device looks even worse. Only 25% of the original video is displayed.

If the connection is between two desktop browsers then the remote video is always good.
If the mobile device does not use hardware acceleration then the remote video is good. For example if chrome://flags is used to  Disable "Hardware-accelerated video decode" then the issue disappears.
Expected results
The whole remote video the be displayed on a mobile device with hardware acceleration for VP8 and VP9.
Actual results
Only part of the remote video is displayed on a mobile device with hardware acceleration for VP8 and VP9.
screenshot_mobile_720p

screenshot_mobile_540p

screenshot_mobile_360p

screenshot_desktop_540p

Thanks for the thorough report!
@magjed do you what know what the reason could be? I know nothing about HW encoders/decoders.

I tried the same scenario with Firefox 57 on Android 6, codec: VP8, device: Nexus 5
It worked fine even when the WebRtc scaled down the video resolution.
I checked the Firefox settings in about:config. Its default setting are:
media.navigator.hardware.vp8_decode.acceleration_enabled FALSE
media.navigator.hardware.vp8_encode.acceleration_enabled TRUE
I modified these to
media.navigator.hardware.vp8_decode.acceleration_enabled TRUE
media.navigator.hardware.vp8_encode.acceleration_enabled TRUE
and tried again. The result is below. After a minute Firefox crashed.

It sounds like something is broken with the Android Chrome HW encoder.
CC:ing<EMAIL_ADDRESS>On Mon, Nov 27, 2017 at 4:17 PM, Christoffer Jansson <
<EMAIL_ADDRESS>wrote:

Thanks for the thorough report!
@magjed https://github.com/magjed do you what know what the reason
could be? I know nothing about HW encoders/decoders.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/webrtc/apprtc/issues/511#issuecomment-347213265, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AVVRwAZxq9XoZqTqNoenePhH8vjcZUxaks5s6tJ-gaJpZM4Qqa-6
.

It's can be reproduced easily with a test between two Android phones.
It looks like a rendering issue, maybe hw decoding. I'm not familiar with  HW decoding/rendering in chromium, but I can help to narrow it down whether it's a chromium issue or apprtc issue.


Upgrade of Travis CI Builds and Testcases

I have updated the Travis CI Builds: https://travis-ci.org/dmlc/xgboost
Now the Build Matrix checks the code style and runs tests on both R and python sides. I spent a day to fix all the lint errors, resulting current state of repo.
I want to call for volunteers to contribute more testcases to tests. This helps us to make sure xgboost is backward compatible in various ways in future improvements, and make it better overtime

It would also be nice to add C++ tests which directly test the C++ functions with unittests.
What's your opinion on that ?


Update azure documentation

Hello team!
Some of the feature that I'm describing in the documentation still need to be merged (cf PR#31) but for the renaming part they are already present in the main branch of the duckdb_azure repository.
@samansmink as you are reviewing the other PR can you take a look on this ?
Regards,
Quentin
PS: fill free to update the PR directly as english is not my native language

@quentingodeau thanks for the PR, this is a substantial amount of work. I adjusted the formatting and wording here and there. I'll leave it to @samansmink to review the content of the PR.

Hi!
Thx @szarnyasg for the correction!
And thx @samansmink for the confirmation ;)
If everything is good for you guys I let you merge.
Regards,
Quentin


compose banners: Improve padding, layout, and behavior.

This PR introduces a number of fixes to the compose banners. It:

Adds missing .banner_content classes to elements that needed it, including the upload banner, helping to make banner styles apply uniformly.
Adds a new .banner_message class to paragraph elements that are children of .banner_content elements, which makes it possible to remove Bootstrap-inherited styles without use of a p element selector.
Introduces an improved top-aligned style for action and cancel buttons, which give a more uniform, less jumbled look to the vertical alignment of banner elements.
Fixes the display of the upload progress banner when an upload fails by removing the progress banner in the error condition.

Fixes: #26922
CZO discussion
Screenshots and screen captures:

Muted stream, before (incorrect message padding)
Muted stream, after (corrected padding, button sized to match 2 lines of message text; see also intrinsic layout animation below)

No action button, before
No action button, after (better vertical centering)

Intrinsic layout, before
Intrinsic layout, after

File error banners, before
File error banners, after (upload progress removed)

Self-review checklist

[ ] Self-reviewed the changes for clarity and maintainability
(variable names, code reuse, readability, etc.).

Communicate decisions, questions, and potential concerns.

[ ] Explains differences from previous plans (e.g., issue description).
[ ] Highlights technical choices and bugs encountered.
[ ] Calls out remaining decisions and concerns.
[ ] Automated tests verify logic where appropriate.

Individual commits are ready for review (see commit discipline).

[ ] Each commit is a coherent idea.
[ ] Commit message(s) explain reasoning and motivation for changes.

Completed manual review and testing of the following:

[ ] Visual appearance of the changes.
[ ] Responsiveness and internationalization.
[ ] Strings and tooltips.
[ ] End-to-end functionality of buttons, interactions and flows.
[ ] Corner cases, error conditions, and easily imagined bugs.

Looks good, merged, thanks @karlstolley!


Fix submenu id assign

This PR fixes an ID assignment bug for new submenus, reported in https://github.com/elixir-desktop/ex_sni/pull/6
The bug was that when determining the last used menu item ID, the algorithm did not search deep into the tree children, and for cases where a child id was greater than the last parent ID, the algorithm would only return the parent ID.
This resulted in new child id assignments to overlap with existing ids and thus send overlapping ids to D-Bus that would show previously assigned menu items in place of new ones.
Includes unit test for the fix.

I've added telemetry-based debugging.
To enable, use the EXSNI_DEBUG environment variable, with comma-separated values as listed here: https://github.com/elixir-desktop/ex_sni/blob/fix_submenu_id_assign/lib/debugger.ex#L4-L13
Example:
EXSNI_DEBUG=all ./run to start ddrive with all telemetry events debugged.


Text input is for the Attack Flow UI is reversed

Attempting to type input to any of the fields results in the string being entered in reverse. E.g. typing "Initial Access" causes it to appear as:

This isn't happening anywhere else in my OS or browser, so I can only assume this is a behaviour of the platform. If so, is there a way to disable this, or is this a bug somehow?

Are you doing this on Safari?Sent from my iPhoneOn 3 Nov 2022, at 13:48, OpalSec @.***> wrote:
Attempting to type input to any of the fields results in the string being entered in reverse. E.g. typing "Initial Access" causes it to appear as:
This isn't happening anywhere else in my OS or browser, so I can only assume this is a behaviour of the platform. If so, is there a way to disable this, or is this a bug somehow?
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you are subscribed to this thread.Message ID: @.***>

No, this was via Firefox on a Windows Desktop.

This behaviour is also replicated and seen on Safari. Looks like a bug of sorts related to the “technique id” field for me at least. Sent from my iPhoneOn 3 Nov 2022, at 14:11, OpalSec @.***> wrote:
No, this was via Firefox on a Windows Desktop.
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you commented.Message ID: @.***>

Thanks for the report, we will look into it.

I also had this problem with the Name and Description fields using the online UI and Firefox 106.0.5 (64-bit) on Ubuntu 20.04.5 LTS.  I tried using the docker image locally (from ghcr), same browser/OS, same problem.  Downloaded the zip version, same problem.
Online version same problem on Firefox 105.0.1 (64-bit) and Safari 16.1 on macOS Monterey 12.6.1.  Online version appears to work OK using Chrome Version 107.0.5304.110 (Official Build) (x86_64) on macOS Monterey 12.6.1.

Chrome Version 107.0.5304.110 (Official Build) (64-bit) on Ubuntu seems to work ok also.

I'm seeing the same thing (reverse text) on macOS, I downloaded Builder 2.0.0 and tried opening the Index file on both Safari and FireFox. Current revs of both.


Expand Test Coverage

Add test coverage for strict declaration removal cases, and functions exported with multiple arguments.

Codecov Report

Merging #262 into master will increase coverage by 0.13%.
The diff coverage is n/a.

@@            Coverage Diff             @@
##           master     #262      +/-   ##
==========================================
+ Coverage   94.69%   94.83%   +0.13%
==========================================
  Files          14       14
  Lines        1432     1432
  Branches      142      142
==========================================
+ Hits         1356     1358       +2
+ Misses         72       70       -2
  Partials        4        4

Impacted Files
Coverage Δ

src/transformers/exports.ts
94.39% <0%> (+0.31%)
:arrow_up:

src/transformers/strict.ts
91.17% <0%> (+1.47%)
:arrow_up:

Continue to review full report at Codecov.

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


various fixes

fix authenticate promise
use new plugin interface for stream-features and sasl plugins
fix WebSocket transport end method
reset jid property on close
emit stream error event before element
better client integration tests

cc @ggozad
This fixes the issue your told me about with theauthenticate promise not rejecting with bad credentials.

excellent thanks.


Feature/494 - Feature Request: Centre on current tab

Task/Issue URL: https://github.com/duckduckgo/Android/issues/494
Tech Design URL: N/A
Description:
On resume of TabSwitcherActivity scroll the nested scroll view to the selected Tab. Just calling scrollTo.. methods of the RecyclerView class wouldn't work since the tabs recycler view was inside of a nested scrollview with wrap_content height. So the solution was to just scroll the nested scrollview to the Y position of the selected recyler view item. An alternative solution would have been to get rid of the nested scrollview altogether and just use a recyclerview with footer instead.
This doesn't add a setting to enable scrolling to selected tab yet, but that could be done in a different PR if really wanted.
Steps to test this PR:

Go to tabs overview screen with about 10+ open tabs
Scroll down ad click one of the last tabs
Go back to tabs overview screen and see the tabs list scrolled to the last selected Tab

Internal references:
Software Engineering Expectations
Technical Design Template

I have changed my mind on this PR, although it would "work". I think it is preferable to not nest a vertical recycler view inside a vertical scrolling scroll view. Better get rid of the nested scroll view altogether and just show a recycler view with footer item for the "fire" button. That way the app can actually make use from the performance benefits of the recycler view.

Thanks for submitting this, it's a good idea UX wise. We are currently redesigning our tabs page so I'll pass your feedback on. Before submitting more PRs have a look at our CONTRIBUTING.md page. If an issue isn't marked as help wanted it's a good idea to check with us first to make sure your idea fits with our product direction and is a good candidate for community development.

Hi thx, for commenting. I have just forked this project to use it as a playground to try things and practice. It has a quite nice code style and architecture. As a side note the "help wanted" section is completely empty atm so that is why I kinda randomly jumped on issues ;-) @subsymbolic

I'm glad you're enjoying the project, it's great to have more eyes on it. And good point about the "Help wanted" section, very neglected! I'll try and find more issues for it soon.


New Origin Type: Graphite

We would like to support Graphite as a time series database when being used to front a dashboard.

Note, this is dependent upon #348, as I'd like to avoid supporting another time series origin type until we have the common internal format.

we took a hard look at graphite acceleration and are unfortunately not going to be able to support it at this time. the main blocker is that graphite does not allow the client to dictate the step, but instead determines it internally as it prepares the query response, based on the width of the data and other factors. trickster is currently heavily dependent upon knowing the step as part of the client request, in order to derive the cache key, respond to cache hits in the appropriate step, and keep the cache pruned. since the step cannot be easily calculated or provided at request time, we are not able to make graphite compatible. however, we made very good progress otherwise. i will keep that code in a branch on my personal fork, in the event that the situation changes (e.g., graphite API is updated to allow the user to specify a desired step).


New Project Proposal - GRIP

LF Energy GRIP Proposal.pdf

Confirmed- 9/19

Project approved 9/26 - @yarille to onboard


Suggestion for a configuration option to control the order of shims in the PATH

Dear goenv maintainers,
Hello, I am one of the users of goenv, I'm a beginner, so I may be making the wrong suggestions, and I’ve encountered an issue related to the order in which the shims directory is added to the PATH. Currently, the shims directory is added to the end of the PATH, which causes the system-installed Go version to be used instead of the one managed by goenv.
I believe it would be beneficial to introduce a configuration option that allows users to choose the order in which shims is added to the PATH. This way, users can select whether they want goenv to take priority over the system-installed Go or vice versa, based on their specific use case.
I am also aware of the context and discussions around "Security: move shims to end of PATH #247" and understand the concerns raised there. I suggest making this new feature opt-in to address those concerns, ensuring it is explicitly enabled by users who need this flexibility.
Suggestion for using ~/.goenv_config to control shims order in the PATH
Description:
Currently, the goenv tool adds the shims directory to the end of the PATH, which can cause issues if the system-installed Go version should not take precedence. I suggest a more flexible approach using a configuration file (~/.goenv_config) to allow users to control the order in which shims is added to the PATH.
Proposed Solution
I would like to suggest the following improvements to the current approach:

Allow users to configure GOENV_PATH_ORDER in ~/.goenv_config:

If the GOENV_PATH_ORDER environment variable is set to front, shims should be placed at the front of the PATH.
If the variable is set to any other value (or not set at all), the default behavior (adding shims to the back of the PATH) should be maintained.

Implementation Update:

diff style code:

diff --git a/libexec/goenv-init b/libexec/goenv-init
index 3e656c8..e934f7e 100755
--- a/libexec/goenv-init
+++ b/libexec/goenv-init
@@ -87,21 +87,45 @@ mkdir -p "${GOENV_ROOT}/"{shims,versions}

 case "$shell" in
 fish )
-  echo "set -gx GOENV_SHELL $shell"
-  echo "set -gx GOENV_ROOT $GOENV_ROOT"

-  echo 'if not contains $GOENV_ROOT/shims $PATH'
-  echo '  set -gx PATH $PATH $GOENV_ROOT/shims'
-  echo 'end'
+  cat << EOL
+if test -f "\$HOME/.goenv_config"
+  source \$HOME/.goenv_config
+end
+set GOENV_PATH_ORDER (string lower \$GOENV_PATH_ORDER)
+set -gx GOENV_SHELL $shell
+set -gx GOENV_ROOT \$GOENV_ROOT
+if not contains \$GOENV_ROOT/shims \$PATH
+  if [ "\$GOENV_PATH_ORDER" = "front" ]
+    set -x PATH \$GOENV_ROOT/shims \$PATH
+  else
+    set -gx PATH \$PATH \$GOENV_ROOT/shims
+  end
+end
+EOL
+
   ;;
+
 * )
-  echo "export GOENV_SHELL=$shell"
-  echo "export GOENV_ROOT=$GOENV_ROOT"

-  echo 'if [ "${PATH#*$GOENV_ROOT/shims}" = "${PATH}" ]; then'
-  echo '  export PATH="$PATH:$GOENV_ROOT/shims"'
-  echo 'fi'
+  cat << EOL
+if [ -f "\$HOME/.goenv_config" ] ; then
+  source "\$HOME/.goenv_config"
+fi
+GOENV_PATH_ORDER=\$(echo "\$GOENV_PATH_ORDER" | tr '[:upper:]' '[:lower:]')
+export GOENV_SHELL=$shell"
+export GOENV_ROOT=$GOENV_ROOT"
+if [ "\${PATH#*\$GOENV_ROOT/shims}" == "\${PATH}" ]; then
+  if [ "\$GOENV_PATH_ORDER" == "front" ]; then
+    export PATH="\$GOENV_ROOT/shims:\$PATH"
+  else
+    export PATH="\$PATH:\$GOENV_ROOT/shims"
+  fi
+fi
+EOL
+
   ;;
+
 esac

 completion="${root}/completions/goenv.${shell}"

Handling the ~/.goenv_config file:

Users can add the following line in their ~/.goenv_config to control the order:

export GOENV_PATH_ORDER=front   # For bash, etc.
# or
set -x GOENV_PATH_ORDER front   # For fish

If this variable is not set, the default behavior (shims at the back of PATH) will be followed.
The filename .goenv_config is just an example; a shorter name, such as .goenvrc, is recommended.

Security Warning:
Please be aware that changing the order of directories in the PATH can have security implications. Specifically, if you set GOENV_PATH_ORDER=front, the Go binary from goenv's shims directory will take precedence over system-wide binaries. This can potentially lead to unintended behavior if there are vulnerabilities in the Go binary or if an attacker has access to modify the shims directory.
Use this configuration at your own risk and ensure that the environment is properly secured. It's advised to only use this configuration if you trust the source of the Go binaries and are aware of the potential risks.
I believe this feature will make goenv more flexible and give users more control over their Go environment without affecting system configuration.
Thank you for taking a look at this suggestion, we hope you'll consider it!
Best regards,

I like it, if you want make a PR for it and add tests please!

Thank you.
I've submitted the PR(Add option to prepend or append shims directory to PATH #417) and tested it with make test-goenv.
I look forward to your feedback.
Best regards,

Released; it will take about 30 minutes to make it to homebrew