docs: onboarding tooltip for site theme toggle

Enhancement Request
Desired behavior
May be nice to add some sort of cue/tooltip/coach-mark to the theme toggle to help discoverability. On initial visit, and/or hover.
Today's behavior
Super sweet toggle, but may be overlooked or not easy to locate initially. (That's just like, my opinion, man)
The Value Add
May help users save time locating the theme functionality.
The Tradeoffs
Not sure.

I agree that it's subtle.  Also a non-traditional icon (vs, say, a sun/moon).
We could expand it with a label or a coach-mark if the user hasn't set a cookie.
Or, it's possible, that subtle is exactly what we want this to be to our users.  For most sites, I think that subtle is a good strategy. But in this case, the theme toggle is there for a dev/designer to see what a component in the Design System looks like, toggling actively between modes.  Then, I wonder if the toggle is even located in the right place on the page.  Should it be closer to the components being showcased?  This is what v1 of docs did.  I believe v2 probably had it moved to site-level for the convenience of switching everything at once.  Not sure if our users like this better yet. Not sure they care. Haven't asked them, myself.  Dmitry is a "special" user, so I'm not sure I see this as user feedback. :D And I mean "special" in the best way.  Having made the system, you have that perspective too.

I wouldn't classify my comment as user feedback either. I knew how to toggle theme from being aware of the design. Just a guess enhancement for consideration or dismissal. My mind did go to the coach-mark if user hasn't set a cookie as well FWIW.

^ Valuable feedback, was just trying to differentiate it from other users.  And doing it tongue-in-cheek for your comical benefit.  I hope it came across that way. :)

Absolutely! Just agreeing with you about how special I am :)

Hey Dmitry, we chatted as a team real quick.  For now, we're thinking it's a small user base, we will have some site launch education later, and hopefully all these people will get used to it.
Closing for now.  Thanks for the input.  If we get negative feedback from users in this regard, we can revisit.


ci: test semantic PR bot

closes #102
Summary:
This is a test PR aimed at checking the behavior of newly implemented Semantic Pull Request bot.
Expected behavior:

[x] Non semantic PR title should not pass if:

[x] at least 1 commit messages is semantic
[x] no commit message is semantic

[x] Semantic PR title should pass if:

[x] at least 1 commit messages is semantic
[x] no commit message is semantic

Please make sure these boxes are checked before submitting your pull request - thanks!

~[ ] Run the unit tests with gradle test to make sure you didn't break anything~
~[ ] Format the title like "Fix #<issue_number> - " (for example - "Fix #1111 - Check for null value before using field")~
[x] Linked all relevant issues
[ ] Include screenshot(s) showing how this pull request works and fixes the issue(s)

This was a PR for test: closing now.


Migrate to null safety

Description
All dependencies are migrated to null safety. So we should migrate this package to null safety.
Resources

How to migrate Dart packages to null safety
Announcing Dart null safety beta

Just did that. This package now depends on stable null-safety (Dart 2.12.0).


Add support for otk-defined distributions

This PR adds the initial (but not complete) support for defining distributions using otk yaml files.  I've been experimenting with multiple ideas for how to do this and I think this is the nicest to work with while keeping disruption of current internal distro definitions to a minimum.
There's still a lot more to do, but I wanted to get this in front of people to discuss design choices before moving on with the full solution.  Meanwhile, I intend to start converting image types to otk files to evaluate the integration.
Notable design choices worth discussing

Distributions are defined under an otk root directory (which will be configurable and we could support multiple paths).  Distributions, architectures, and image types are discovered using the directory structure: <distro ID>/<architecture>/<image type name>.yaml.
Each distribution must provide a properties.yaml in its root (<distro ID>/properties.yaml) which defines values required by osbuild-composer.  Currently this includes name (which can differ from the distro ID), os_version, release_version, and runner.

Note that the current values might not all be necessary, but we will probably discover that we need some global distro properties like this to be defined somewhere.  For example, module_platform_id is definitely not needed since otk is taking care of depsolving for us.  But we will almost certainly need a way to define the canonical distro name in order to do host distro selection.

Blueprint customizations are added via an entrypoint yaml file which includes the image type entrypoint (more on this below).

Keep in mind that while we transition to a fully otk-defined state, we will need to keep the instantiation and serialisation flow of the internal manifests and a lot of the interfaces associated with that.  Once we finish transitioning, a lot of this should become simpler.
Blueprint customizations
When compiling an otk manifest, an otk-customizations.yaml is created in a temporary directory which includes all the Blueprint customizations and an otk.include to the target image type entrypoint.  The customizations file is used as the entrypoint to the compile command.
For example, given the following Blueprint:
[customizations]
hostname = "hal-9000"

[customizations.kernel]
append = "debug"

[customizations.locale]
keyboard = "uk"

when compiling a Fedora 40 x86-64 qcow2, an otk-customizations.yaml is created with:
otk.define.customizations:
  hostname: "hal-9000"
  kernel_append: "debug"
  keyboard: "uk"

otk.include: `/otkroot/fedora-40/x86_64/qcow2.yaml`

(where /otkroot is the root where we define our otk distros)
and the manifest is compiled with:
otk compile --target osbuild /path/to/otk-customizations.yaml

The qcow2 yaml (or the files it includes) should then be properly handling these values.  For example:
otk.target.osbuild:
  pipelines:
    - name: os
      stages:
        - otk.op.if-set:
          what: "${keyboard}"
          then:
            - type: org.osbuild.keymap
              options:
                keymap: "${keyboard}"

One issue with this approach however is that this puts customizations at the lowest priority since they're defined first, so any defines that follow will override the value.  One way around this issue is prefixing these or namespacing them under an object that is treated with higher priority (e.g. modifications.keyboard), which is something we already discussed in the otk specifications.

Oh nice.  Tests are failing now because we depend on otk :laughing:

Rebased and resolved conflicts.

This can be closed due to discontinuation of otk.


VKontakte Chat for Desktop

VKontakte (http://www.similarweb.com/website/vk.com) is a Wolrd's 5th and CIS' first social network and as for moment they don't have good desktop messaging app (IMHO). Would you consider it?

Do they have a website/page with just the chat?
--
Alexandru Rosianu
Web & Android Developer
aluxian.com | startersquad.com
On Tue, Jul 21, 2015 at 8:23 pm, Nikolay Alexeyev <<EMAIL_ADDRESS><EMAIL_ADDRESS>> wrote:
VKontakte ( http://www.similarweb.com/website/vk.com
[http://www.similarweb.com/website/vk.com] ) is a Wolrd's 5th and CIS' first social network and as for moment they don't
have good desktop messaging app (IMHO). Would you consider it?
—
Reply to this email directly or view it on GitHub
[https://github.com/Aluxian/Facebook-Messenger-Desktop/issues/190] .[https://github.com/notifications/beacon/ABWmdmwdlVRFBoSh2gGz7JckhFe2AXQJks5ofnepgaJpZM4Fc78W.gif]

vk.com/im

Thanks, I'll look into it when I have time (next month).
--
Alexandru Rosianu
Web & Android Developer
aluxian.com | startersquad.com
On Tue, Jul 21, 2015 at 8:26 pm, Nikolay Alexeyev <<EMAIL_ADDRESS><EMAIL_ADDRESS>> wrote:
vk.com/im
—
Reply to this email directly or view it on GitHub
[https://github.com/Aluxian/Facebook-Messenger-Desktop/issues/190#issuecomment-123408991] .[https://github.com/notifications/beacon/ABWmduM2-Feca0wxQvbCmxBVjdJyCD14ks5ofng3gaJpZM4Fc78W.gif]

Thank you so much! Think, you can estimate at couple millions of downloads. I'll be the first)

Should be easy to do a web wrapper around that website, but I dont have the time nor the interest.


OpenAPI 3.0 server

Issue Type

Feature request

Current Behavior

It looks like DRF does not support OpenAPI 3.0. drf-yasg only support OpenAPI 2.0 and the author does not seem eager to implement version 3.0.
Expected Behavior

Generate a server from a well defined openapi.yml document.
Possible Solution

Connexion from Zalando seems to be the more promising framework. They recently finalized supporting OpenAPI 3.0 #420, #621 and are ironing out the last quirks before the next release #678.
Openapi-generator supports OpenApi 3.0 and has the ability to generate a python server using the connexion framework.
Quart is an ASGI framework implement the same interface as FLASK. It comes with an OpenAPI plugin.
Pyswagger is another active project.
Other projects without v3 support:

Flasgger
Apispec

It will fix #28 as well.


update node/app create time bug fix

Codecov Report

Merging #251 (d81a1de) into master (6dfc5f4) will increase coverage by 0.01%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##           master     #251      +/-   ##
==========================================
+ Coverage   67.59%   67.60%   +0.01%
==========================================
  Files          75       75
  Lines        5585     5587       +2
==========================================
+ Hits         3775     3777       +2
  Misses       1305     1305
  Partials      505      505

Impacted Files
Coverage Δ

api/application.go
76.21% <100.00%> (+0.06%)
:arrow_up:

api/node.go
65.48% <100.00%> (+0.06%)
: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 6dfc5f4...d81a1de. Read the comment docs.


Evaluate should regexps always be quoted in command lines?

e.g:

nyc vue-cli-service test:unit ./test/**/*spec.js

versus

nyc vue-cli-service test:unit "./test/**/*spec.js"

The mocha docs indicate that double quotes are recommended for portability.

https://github.com/mochajs/mocha/blob/c667d1060f97da24abf48e41a284e037f0b410a0/docs/index.md#the-test-directory

The mocha docs indicate that double quotes are recommended for portability.

https://github.com/mochajs/mocha/blob/c667d1060f97da24abf48e41a284e037f0b410a0/docs/index.md#the-test-directory

https://medium.com/@jakubsynowiec/you-should-always-quote-your-globs-in-npm-scripts-621887a2a784

https://medium.com/@jakubsynowiec/you-should-always-quote-your-globs-in-npm-scripts-621887a2a784


Implement a rate limiter in our user-facing API

Implement a rate limiter for our user-facing API to control the amount of incoming and outgoing traffic.
Possible options:
https://github.com/fastify/fastify-rate-limit
https://www.npmjs.com/package/bottleneck

I think it would be better to handle this using NGINX https://www.nginx.com/blog/rate-limiting-nginx/
It is both easier and better because any excess requests will be suppressed and will shield our web server.

For soft launch, let's rate limit within NGINX. After the soft launch, we can look into rate limit in AWS: https://aws.amazon.com/blogs/aws/protect-web-sites-services-using-rate-based-rules-for-aws-waf/. I will create another ticket for this.

Config file to update: https://github.com/FightPandemics/FightPandemics/blob/master/client/nginx.conf

I can work on this request. Looking to set limits to 1 req/sec for per ip and 10 req/sec for per server on nginx.
Per IP: $ binary_remote_addr,   rate=1r/s;
Per Server : $server_name  rate=10r/s;


Docker does not expose ports as described in docker-compose

Hi
This issue is probably not related to this actions, but I don't know for sure.
I noticed that my github actions started to failing recently, because docker-compose up does not expose port.
I was able to ssh to runner and checked that docker runs fine, and all the containers.
After I executed colima restart a few times port finally was open.
I think issue might be related with some new colima version.
It would be nice if I could specify which colima version I want to use when configuring the action.
Many thanks!

I believe this could have been fixed by #22 too. Do you mind trying the feature it introduces?

Or if you could help narrow down which version of Colima introduced the problem, it would be great to open a bug report on Colima and document it here.

Thx, #22 solved my problem, closing this ticket


[Impact Metric Submission]: Number of Farcaster users per month

Number of Farcaster users per month
Tags

farcaster
optimistic

Brief description
This IM calculated from farcaster subproject from the profile database, where the number of rows explain the total users,  I count them & classify the registration date by months, order them to be humain-readable, it explain also the total txs per month beacuse each farcaster registration invoke new transaction from the user address to farcaster IdRegistry address on th OP mainnet
SQL code block
SELECT count(*) as number_of_users,
DATE (TIMESTAMP_TRUNC(last_updated_at, MONTH)) AS months
FROM `opensource-observer.farcaster.profiles`
GROUP BY months ORDER BY months ASC

Focus Area: User Growth
Query Executes in BigQuery? Yes
Query Meets Challenge Spec? Yes
Complexity Score: 🌟
Utility Score: 🌟
Total Points: 1
Comments: Simple, but works


set merge doesnt work in Firestore

The docs refers to this format:
ref.document(upc).set(docData, merge=True)
This is the result I've been getting:
  File "db_manager.py", line 214, in uploadCSV
    ref.document(upc).set(docData, merge=True)
TypeError: set() got an unexpected keyword argument 'merge'

Everything else seems to work...

Hello, I see the same issue. Documentation repeatedly implies that using merge=True is the proper way to invoke merge sets. Please fix the documentation or the code.

Works fine for me. Just make sure the latest google-cloud-firestore dependency is installed. I believe the mege parameter was added in a recent release of Firestore.


Bzlmod doesn't detect repo usage correctly

When following the instructions from the release:
bazel_dep(name = "rules_oci", version = "2.0.1")
# For testing, we also recommend https://registry.bazel.build/modules/container_structure_test

oci = use_extension("@rules_oci//oci:extensions.bzl", "oci")

# Declare external images you need to pull, for example:
oci.pull(
    name = "distroless_base",
    # 'latest' is not reproducible, but it's convenient.
    # During the build we print a WARNING message that includes recommended 'digest' and 'platforms'
    # values which you can use here in place of 'tag' to pin for reproducibility.
    tag = "latest",
    image = "gcr.io/distroless/base",
    platforms = ["linux/amd64"],
)

# For each oci.pull call, repeat the "name" here to expose them as dependencies.
use_repo(oci, "distroless_base")

I get the following warning:
WARNING: REPO/MODULE.bazel:320:20: The module extension oci defined in @rules_oci//oci:extensions.bzl reported incorrect imports of repositories via use_repo():

Imported, but reported as indirect dependencies by the extension:
    distroless_base

 ** You can use the following buildozer command to fix these issues:

buildozer 'use_repo_remove @rules_oci//oci:extensions.bzl oci distroless_base' //MODULE.bazel:all

Same issue for me


Migrate amazon-aws to API 1.36

Description
Migrate to API 1.36, and added the possibility to list ECS cluster
moved some text to new accessories props
Screencast

Checklist

[x] I read the extension guidelines
[x] I read the documentation about publishing
[x] I ran npm run build and tested this distribution build in Raycast
[x] I checked that files in the assets folder are used by the extension itself
[x] I checked that assets used by the README are placed outside of the metadata folder

Please @hexpl0it think to update CHANGELOG.md

Hi @duboiss, changelog updated


Added back the ui_nav_wrap feature

Can we bring back the option to turn wrapping on/off when going through harpoon lists in #387? It got removed in https://github.com/ThePrimeagen/harpoon/commit/fa73cd0c33f5a4d8b0084c70da1e48169f0053f8 and I'm not sure why.

@krsntn it has been moved to the toggle method.  i am trying to drive system options as small as possible (they are annoying to keep track of)
https://github.com/ThePrimeagen/harpoon/blob/harpoon2/lua/harpoon/list.lua#L188

...
https://github.com/ThePrimeagen/harpoon/blob/harpoon2/lua/harpoon/list.lua#L188

Here is the hardlink:
https://github.com/ThePrimeagen/harpoon/blob/9e869aae22ad95f350b6b079dedf44ead1e448e8/lua/harpoon/list.lua#L188-L201


TypeError: mime.extension is not a function (Since previous close of issue)

I am running this node module at version "^0.4.1", and I am getting the "Type Error: mime.extension is not a function" issue on some emails. I have reinstalled the dependancy since the fix for Issue #43 was applied, but I am able to reliably recreate the issue when I receive a calendar update/invite from Google Calendar, due to the formatting of their emails.
Any help on this would be greatly appreciated!

Hi !
Have you tried to install the current master ? It should be fixed.
Just let me know if it work for you and l'll publish the version (5.0.0) to

Hi @jcreigno
Your changes fixed the bug with me. Thank you very much!

Thanks @snics for your feedback.
I've pushed the 0.5.0 release.

Am getting this error "Type Error: mime.extension is not a function", @jcreigno , how to install current master. can you please tell installation steps. Sorry if it is a basic question because i am new to this. Thanks in advance


auto generate placeholder

Q
A

Is bugfix?
no

New feature?
yes

Breaks BC?
yes/no

Tests pass?
yes/no

Fixed issues
comma-separated list of tickets # fixed by the PR, if any

please open an issue ticket & usecase first before proposing a feature.


Letter Combinations of a Phone Number in C++

Pull Request Template
Description
Please include a summary of the problem and about the approach to solve the solution. Please also include relevant motivation and context.
List any dependencies that are required for this change.
Problem URL
https://leetcode.com/problems/letter-combinations-of-a-phone-number
Put check marks:
Have you made changes in README file ?

[x] Added problem & solution under correct topic.
[x] Specified Space & Time complexity.
[x] Specified difficulty level, tag & Note(if any).

How Has This Been Tested?
Please describe the tests that you ran to verify your changes. Please also note any relevant details for your test configuration.

[ ] Test A
[ ] Test B

Make sure all below guidelines are followed else PR will get Reject:

[x] My code follows the style guidelines of this project
[x] I have performed a self-review of my own code
[x] I have commented my code so that it is easy to understand
[x] I have made corresponding changes to the documentation
[x] My changes generate no new warnings
[x] Any dependent changes have been merged and published in downstream modules

Your code looks great! Congrats, I've gone ahead and merged your first pull request! Keep it up!

Thank you :)


Embedded {{webarchive}} in {{cite}}

Hi zhaofengli,
Diff at line #65
https://en.wikipedia.org/w/index.php?title=Influenza_research&type=revision&diff=775432511&oldid=775163298
It inserted a {{webarchive}} into the middle of a {{cite web}} which creates a red error on rendering. It also changed the "|" to "-" in the webarchive template.
Merging a {{webarchive}} into a {{cite web}} can be complicated. If you want to work on it I can help provide information on what kind of data to expect. There are around 150,000 {{webarchive}} and growing so it is a common occurrence. An alternative is refill skip processing any that contain a {{webarchive}}.

The template history: {{wayback}} and {{webcite}} used to be the main template use for linking to archive's outside a {{cite web}}. But we started adding many more archive services so it was decided to merge them into a single template {{webarchive}} which works for any archive service (archive.is, etc..). I'm the author of {{webarchive}} a Lua module. It's being copied over to other language wikis but {{wayback}} is also still commonly used on other languages.

I've been working on a rewrite of the tool for the past few days, and this would be very nice to have. Could you provide more test cases and what reFill is supposed to output?

{{webarchive}} has options so best to see the documentation page and the testcases page to see how it works and what it does. In 98% of cases it will be just two to three arguments either {{webarchive |url=..|date=..}} or the addition of a |title= argument. The url would simply be moved into the |archiveurl and date into |archivedate of the {{cite web}}.
There are exceptions: if it contains {{webarchive |date=}}  date contains a "" then a merger can't be done because CS1|2 doesn't support * for dates but {{webarchive}} does. If the {{webarchive}} contains |format= then merger can't be done because the format option has no equivalent in {{cite web}}. If the {{webarchive}} contains url2= through url10= then merger can't be done as CS1|2 doesn't support more than 1 archive URL but {{webarchive}} does.

Hi - this problem is still occurring on a regular basis. Another example
Diff at line #354
https://en.wikipedia.org/w/index.php?title=African-American_history&type=revision&diff=797676284&oldid=797213941

A test of the original snippet from the influenza research article and Fox News controversies article at https://en.wikipedia.org/w/index.php?title=User:Curb_Safe_Charmer/refilltest2 indicates that reFill2 doesn't alter {{webarchive}} tags in the way that the original reFill did. Closing.


Operator domain_geometry and range_geometry should be properties?

Currently we access the domain and range of an operator with the methods domain_geometry and range_geometry.
These should be accessed with properties, that is

#current use
dg = operator.domain_geometry()
rg = operator.range_geometry()

#proposed use
dg = operator.domain_geometry
rg = operator.range_geometry

The difference is just in ()

Fine with that.

This can be implemented as the properties call range_geometry and domain_geometry methods

@jakobsj , @paskino , @gfardell  are we doing this for the publications?

maybe the best solution would be to create the following properties:
@property
def domain(self):
    return self.domain_geometry()
@property
def range(self):
    return self.range_geometry()


Reduce flakes in TestLoadBalancerProfile()

Which issue this PR addresses:
Fixes N/A
What this PR does / why we need it:
Fixes a discovered flake around the tests for load balancer profiles.
The test managed ip cleanup errors are propagated when cleanup fails deletes two load balancers using gomock. This action order is not guaranteed, so the error messages can be either order. (ie: uuid1 and then uuid2, or uuid2 and then uuid1)
Test plan for issue:
Unit tests were updated to be less flaky.
Is there any documentation that needs to be updated for this PR?
No, test flake clean up.

Updated to fix the typo.


Application fails to take photos with the camera on some android devices

Bug Report
Problem
Application fails to take photos with the camera on some android devices
What is expected to happen?
It is expected that the application after capturing and selecting the preview image will be able to continue the return process without closing the application.
What does actually happen?
After taking the image capture and confirming the preview, the process is cut and the application is closed.
More specifically, when the application is in the background and the camera is accessed, after capturing, previewing and confirming, when trying to return to the application, the system ends the application process, therefore not being able to continue returning the image to the application
Information

According to research, the problem is due to a memory leak, however, the devices where the problem occurred do not lack this feature.
The problem so far has been encountered most frequently on Android Motorola devices. In my case, the problem was observed in the motoG7Play and MotoG8 phones.
Following instructions from Ionic and GitHub forums, I found some solutions like:

enable cordova-plugin-background-mode before capture and disable after (Not Work in Redmi note 7)
Add <preference name="AndroidLaunchMode" value="singleTask" /> in config.xml (Reduced cases in MotoG8)
Set destinationType to DATA_URL, returning base64 format, later transforming the content into an image recorded on the device. (Dont work)

Search References

Android Platform Guide
Ionic cordova-plugin-camera crash the application after take picture
App crashes after taking photo from camera
Native camera ionic make app crash after taking picture
Camera plugin crashes app on some android phones when an image is taken
end others

Command or Code

I will show you the base codes (First code) and the codes of the aforementioned attempts.
Required plugins: cordova-plugin-file,cordova-plugin-ionic-webview,
Base Code:
getimage(op){
    const options: CameraOptions = {
      quality: 85,
			destinationType: this.camera.DestinationType.FILE_URI,
			sourceType: (op == 1) ? this.camera.PictureSourceType.CAMERA : this.camera.PictureSourceType.PHOTOLIBRARY,
			encodingType: this.camera.EncodingType.JPEG,
			saveToPhotoAlbum: false,
			correctOrientation: true,

    }

    this.camera.getPicture(options).then((imagedata) => {
      let img = this.webview.convertFileSrc(imagedata)
      let imagemTratada = this.domSanatize.bypassSecurityTrustUrl(img)
      this.images.push(imagemTratada)
      if (this.platform.is('ios')) {
        this.caminhoImg.push(imagedata)
      } else {
        this.file.resolveLocalFilesystemUrl(imagedata).then((data)=>{
          this.caminhoImg.push(data.nativeURL);
        }).catch(error => console.log('error'))
      }
      this.verificaCondicao();
    })
  }

Second Code:
getimage(op){
    const options: CameraOptions = {
      quality: 85,
			destinationType: this.camera.DestinationType.DATA_URL,
			sourceType: (op == 1) ? this.camera.PictureSourceType.CAMERA : this.camera.PictureSourceType.PHOTOLIBRARY,
			encodingType: this.camera.EncodingType.JPEG,
			saveToPhotoAlbum: false,
			correctOrientation: true,
    }

    this.camera.getPicture(options).then((imagedata) => {
      let base64 = 'data:image/jpeg;base64,' + imagedata;
      let blob = this.makeblob(base64);
      let image = this.domSanatize.bypassSecurityTrustUrl(base64)
      this.images.push(image)
      this.file.resolveDirectoryUrl(this.file.cacheDirectory).then((diretorio)=>{
        diretorio.getFile('Image' + Date.now() + '.jpg',{create:true}, (file)=> {
          console.log(file)
          file.createWriter((fileWriter)=>{
            fileWriter.write(blob)
            this.caminhoImg.push(file.nativeURL)
          },
          (error)=>{
            console.log('Unable to save file in path '+ diretorio.nativeURL);
          })
        })
      })
    })
  }

Environment, Platform, Device

The problem was found during the development of the application with ionic Framework and cord, based on the TypeScript Angular and using Android Studio 4.1 and sdk 28. The devices used for testing were Redmi note 7, iPed Pro, iPhone 5s, iPhone6, MotoG7Play, MotoG8, the camera bug only on the devices: MotoG7Play and MotoG8.
Version information

  Ionic CLI                     : 6.13.1 (C:\Users\micro-85\AppData\Roaming\npm\node_modules\@ionic\cli)
   Ionic Framework               : @ionic/angular 5.6.4
   @angular-devkit/build-angular : 0.1000.8
   @angular-devkit/schematics    : 10.0.8
   @angular/cli                  : 10.0.8
   @ionic/angular-toolkit        : 2.3.3

Cordova:

   Cordova CLI       : 10.0.0
   Cordova Platforms : android 9.1.0
   Cordova Plugins   : not available

Utility:

   cordova-res : 0.15.3
   native-run  : 1.3.0

System:

   NodeJS : v14.15.0 (C:\Program Files\nodejs\node.exe)
   npm    : 6.14.9
   OS     : Windows 10

Android:

  AndroidStudio:  4.1
  SDK :28

Checklist

[x] I searched for existing GitHub issues
[x] I updated all Cordova tooling to most recent version
[x] I included all the necessary information above

the same with me, ionic 3, and after updating targetSdkVersion 28 to 29 capture image not show !!

This issue is expected and it has been around for years. When the app goes into the background and the camera app is in the foreground, the system can kill the background app at any time. Even if the phone has 10 GB of free memory. It is a limitation of hybrid apps.

I have to agree with @mirko77 . More details can be found at: https://cordova.apache.org/docs/en/latest/reference/cordova-plugin-camera/index.html#android-quirks
Version 5.0.2 is released previous week. You could try that version and when everything goes well, the result after an app restart during the camera action, should be in the PendingResult.
It's up to you to save the state of the app before the camera action is started and to guide the users back to the correct part of the app (with the photo from the PendingResult).

Closing ticket due to lack of response, issue is probably resolved in latest version.


Fix Contact Page: Submitting Message Shows 'Page Not Working', Implement Success Message Instead

Is there an existing issue for this?

[X] I have searched the existing issues

What happened?
After submitting the message on Contact Us page, it shows page is not working

I want to show a message, "Form submitted successfully", and then navigate back to Home page.

@Tejashri-Taral  Please assign me this issue under labels- hacktoberfest-accepeted, gssoc-ext, and appropriate level.
Add Screenshots / Video Clip
No response
What browsers are you seeing the problem on?
No response
Agreements

[X] I agree to follow this project's Code of Conduct
[X] I'm a GSSoC contributor
[ ] I'm a Hacktoberfest contributor
[X] I want to work on this issue [Optional]
[X] I'm willing to provide further clarification or assistance if needed.

you can still find and raise new issues


Add API to get assignment group by date

Is your feature request related to a problem? Please describe.
I was using the existing API to get assignment data by date to display on the frontend. In the process, I felt that grouping data on the front end might not be a good idea for several reasons.

There's a lot of processing than doing it in the backend.
When data is called the assignment on the same date, it's possible the data is on a different page leading to a new problem.

Describe the solution you'd like
Create an API to get the assignment data ordered by date and grouped by date.

Does anyone still work on this? If not, I'll close as a won't fix.

As no one answered my question. I'll close this issue as a won't fix issue


Global illumination baking engine

Implement a static global illumination solver, only for diffuse lightning in the first place.
Several algorithms could be tried, voxel GI, photon mapping/path tracing, light propagation volumes, virtual pointlights, metropolis light transport...
Leverage webassembly for low-level operations ?

As discussed offline: yeah!!

Progressive radiosity is looking pretty sharp so far !
https://drive.google.com/file/d/1JcY1IYmiKKqh1XZNKWymbWpjLYkSLXVz/view?usp=sharing

WOOOOT! can't wait to try it!! Why is it blinking?

i interleaved some renders of the scene during the baking process to see the progress. Somehow the framebuffer is cleared by something making it blink. Will fix it for nicer viewing :)

What have you planned about the workflow: is the lighting will be computed each time scene is loaded, or is it be saved to a cache system, allowing final user to load lighting without calculation?

@Vinc3r for now i'm focusing on making the baking work on the fly. Then i'll work on exporting the created lightmaps, and probably other baking info like spherical harmonics on probes.

Some news?? CAN'T WAIT TO TRY IT ;D

CAN’T WAIT AS WELL =D

Some updates for you guys :
The radiosity renderer is working pretty well, but still needs strong prerequisites. We need to have proper lightmap uv coordinates on all meshes, that share the same scale (1 texel side should approx. be 0.25 m in the world scale).
We also need to split meshes into "surfaces", that share the same lightmap bit, without occluding each other.
Finally, since I'm using spherical projection for the visibility pass, i need to retesselate the scene at a higher resolution to limit distortion from the rasterization. I'm doing this on the fly, but i don't know how many triangles i can handle before it crashes horribly.
So as you can see, there is still a lot of work, but i'm hoping i can tackle all of this. Biggest work imo is the automatic UV mapping, but I think i can port some code from Blender.
I'll keep you in touch.

Some news?? CAN'T WAIT TO TRY IT ;D

Looking at this question from another angle, why can't it interface with the existing open source raytracing renderer?
The raytracing renderer may not necessarily run on the web.

@FishOrBear I think regular lightmap support for baking in offline renderers is already supported: https://doc.babylonjs.com/babylon101/lights#lightmaps

Maybe this project is of interest aswell: https://lighttracer.org/

I was just wondering if this is it still active?

Some news?? CAN'T WAIT TO TRY IT ;D

Any updates on this ? :)

@br-matt unfortunately not for the moment as I had to drop the subject a while ago.
But maybe if we ask this kindly to @deltakosh for a future milestone ? 😄

Hi @deltakosh. How could we help on that point to see a baking engine coming to life?

Would be amazing let s see how you could potentially collab with @CraigFeldspar  ???

Some news?? CAN'T WAIT TO TRY IT ;

@CraigFeldspar can probably provide some ?

cannot wait to try this too!

Yo guys,
Unfortunately I'm not working on this feature anymore. What I got so far required lots of manual work setting up uvs correctly and handling different layers of depth.
I don't think I will have any bandwidth working on that any time soon, but if someone would like to start over or continue this work, I'd be happy to provide insights

ok, closing the issue. Please re-open if needed.

@CraigFeldspar Hi,
Do you have a code base or should one start from scratch?
Would your code be able to help with light baking?
I am currently pondering whether I should do it inside BJS or find another way.
What's your experience so far concerning the difficulty to implement this in BJS? Just to taking the temperature before deciding.
Thanks

Don't think a code base would help you much.
Best to stay close to the recent academic literature and different ways to solve global illumination (Nvidia has some good papers).
Then it's all about finding a data structure for parsing the scene (e.g. voxels), a way to store them, and incorporate them into the shaders etc.
You could also look into what Godot did (signed distance fields).
Might also be good to do this exclusively for WebGPU, because it has a lot less limitations around async code / compute shaders etc - don't think you'd get anything decent / universal with WebGL

Thanks, I guess I will do it otherwise 😉

I've come up with a baked global illumination system for my engine that works in WebGL. I haven't had time to do a proper writeup but I thought I'd share something here. It's heavily based on this frostbite presentation: https://media.contentapi.ea.com/content/dam/eacom/frostbite/files/gdc2018-precomputedgiobalilluminationinfrostbite.pdf but extends the idea to light volumes consisting of 3D textures.
Firstly, I bake 4 textures out with the mitsuba renderer using my script here: https://github.com/expenses/mitsuba-lightvol-baking/blob/master/lightvol.py and some tools from https://github.com/expenses/lightmap-tools/, one texture for each spherical harmonic coefficient. The first texture is the average irradiance per-probe while the others coefficients contain the degree to which the irradiance is coming from one direction (ranging from -1 to 1. These can be scaled down to a 0 to 1 range but I haven't done that yet). These textures are stored as KTX2s (currently in a rgba16f format) and loaded at runtime.
The fragment shader translates the fragment position to coordinates in the 3D textures and samples the spherical harmonics, letting the hardware do the interpolation. To avoid banding the spherical harmonics are sampled in a non-linear fashion (see page 55 of the frostbite pdf and https://web.archive.org/web/20160313132301/http://www.geomerics.com/wp-content/uploads/2015/08/CEDEC_Geomerics_ReconstructingDiffuseLighting1.pdf).
Here's the code for that (in Rust):
pub type L1SphericalHarmonics = [Vec3; 4];

pub fn spherical_harmonics_channel_vectors(harmonics: L1SphericalHarmonics) -> (Vec3, Vec3, Vec3) {
    (
        Vec3::new(harmonics[1].x, harmonics[2].x, harmonics[3].x),
        Vec3::new(harmonics[1].y, harmonics[2].y, harmonics[3].y),
        Vec3::new(harmonics[1].z, harmonics[2].z, harmonics[3].z),
    )
}

// See https://grahamhazel.com/blog/2017/12/22/converting-sh-radiance-to-irradiance/
// https://web.archive.org/web/20160313132301/http://www.geomerics.com/wp-content/uploads/2015/08/CEDEC_Geomerics_ReconstructingDiffuseLighting1.pdf
// https://media.contentapi.ea.com/content/dam/eacom/frostbite/files/gdc2018-precomputedgiobalilluminationinfrostbite.pdf
pub fn eval_spherical_harmonics_nonlinear(harmonics: L1SphericalHarmonics, normal: Vec3) -> Vec3 {
    fn eval_scalar(r_0: f32, r_1_div_r_0: Vec3, normal: Vec3) -> f32 {
        let r1_r0_ratio = r_1_div_r_0.length();

        let a = (1.0 - r1_r0_ratio) / (1.0 + r1_r0_ratio);
        let p = 1.0 + 2.0 * r1_r0_ratio;
        let q = 0.5 * (1.0 + r_1_div_r_0.dot(normal));

        r_0 * (a + (1.0 - a) * (p + 1.0) * q.powf(p))
    }

    let (red_vector, green_vector, blue_vector) = spherical_harmonics_channel_vectors(harmonics);

    Vec3::new(
        eval_scalar(harmonics[0].x, red_vector, normal),
        eval_scalar(harmonics[0].y, green_vector, normal),
        eval_scalar(harmonics[0].z, blue_vector, normal),
    )
}

for specular lighting, I use an approximation based on the average incoming light direction:
fn spherical_harmonics_specular_approximation(
    spherical_harmonics: [Vec3; 4],
    normal: glam_pbr::Normal,
    view: glam_pbr::View,
    material_params: glam_pbr::MaterialParams,
) -> Vec3 {
    let (red, green, blue) =
        shared_structs::spherical_harmonics_channel_vectors(spherical_harmonics);
    let average_light_direction = (red + green + blue) / 3.0;
    let directional_length = average_light_direction.length();

    let smoothness = 1.0 - material_params.perceptual_roughness.0;
    let adjusted_smoothness = smoothness * directional_length.sqrt();
    let adjusted_roughness = glam_pbr::PerceptualRoughness(1.0 - adjusted_smoothness);

    let actual_roughness = adjusted_roughness.as_actual_roughness();

    let light = glam_pbr::Light(average_light_direction / directional_length);
    let halfway = glam_pbr::Halfway::new(&view, &light);
    let view_dot_halfway = glam_pbr::Dot::new(&view, &halfway);

    let strength = spherical_harmonics[0] * directional_length;

    let f0 = glam_pbr::calculate_combined_f0(material_params);
    let f90 = glam_pbr::calculate_combined_f90(material_params);

    let fresnel = glam_pbr::fresnel_schlick(view_dot_halfway, f0, f90);

    let normal_dot_light = glam_pbr::Dot::new(&normal, &light);

    glam_pbr::specular_brdf(
        glam_pbr::Dot::new(&normal, &view),
        normal_dot_light,
        glam_pbr::Dot::new(&normal, &halfway),
        actual_roughness,
        fresnel,
    ) * strength
        * normal_dot_light.value
}

Here's a few screenshots:

I don't have a demo out yet but hopefully I will in a bit.

Very promising!

Nice, how expensive is it?

Nice, how expensive is it? (Time to render..) I am considering luxcore to do the rendering, but it means a lot of configuration beforehand..

The baking step for the light volumes in the screenshots was pretty fast. I bake out the direct and indirect lighting seperately and combine them later. I think I used around 15000 samples for the direct lighting and maybe 4096 for indirect? Took maybe 15-30m on my laptop's CPU. Using Cuda would naturally be faster.

That's really good Ashley 🙂


Add Pascal's Triangle Algorithm

add Pascal's Triangle Algorithm

[ ] please consider your file name to be changed to lowercase_lowercase.cpp
[ ] please put your code inside a function so it can be easier used by other users
[ ] Use main() to only run tests.

The file has been replaced according to the suggested conditions. Thank you for the information.

@leechiyun good work, next time please consider adding description to pull requests with all the to-do list.


Quic Bridging do not works when authentication activated

emqx docker: emqx/emqx:5.0.14
nanomq docker: emqx/nanomq:0.15-full
when authentication activated on emqx, eemqt client publish message over quic successfully
But using nanomq i have problems.
I have two docker container emqx and nanomq. Quic protocol is activated.
If I do not activate authentication for emqx server, nanomq quic bridging works fine.
If I activate authentication for emqx server, nanomq quic bridging not works and gives error below
connector settings in nanomq.conf/bridges.mqtt
{                                 server = "mqtt-quic://<IP_ADDRESS>:14567"                                 proto_ver = 4                                 username = test123                                 password = 123123                                 clean_start = true                                 keepalive = 60s                                 ssl {                                         enable = false                                         keyfile = "/etc/certs/key.pem"                                         certfile = "/etc/certs/cert.pem"                                         cacertfile = "/etc/certs/cacert.pem"                                 }                         }
docker logs when nanomq container starts
2023-01-22 17:42:32 [1] WARN  /home/runner/work/nanomq/nanomq/nng/src/supplemental/quic/quic_api.c:518 quic_connection_cb: [conn][0x55823bfde900] Resumption ticket received (1764 bytes):
2023-01-22 17:42:32 [1] WARN  /home/runner/work/nanomq/nanomq/nng/src/supplemental/quic/quic_api.c:372 quic_strm_cb: [strm][0x7fe0280281c0] Peer shut down
docker logs from nanomq container when pub from nanomq_cli
2023-01-22 17:41:04 [1] ERROR /home/runner/work/nanomq/nanomq/nanomq/apps/broker.c:197 bridge_handler: ctx id 7

It seems like you are using a self-defined certfile with QUIC.  Unfortunately, NanoMQ doesn't support that on QUIC, because QUIC has TLS 1.3 embedded and we haven't seen any customer needing it.  Plz open another issue we will see how to support this feature in next version.

But I suspect the problem is somewhere else. please provide authentication log from EMQX side.

Thanks for help.
I am testing directly quic protocol with below commands on my emqx server instead of nanomq bridging.
EMQX Server Ip: <IP_ADDRESS>
NanoMQ Ip: <IP_ADDRESS>:2283 (mapped 1883->2283 when container creating)
eemqt quic publish command
./emqtt_bench pub --quic true --host <IP_ADDRESS> -p 14567 -t topic1/test -u test123 -P 123123 -m '{"data":"eemqt"}'
This works fine(I check from emqx dashboard/Diagnose/WebSocket Client).
nanomq cli publish command
nanomq_cli quic pub mqtt-quic://<IP_ADDRESS>:14567 q topic1/test '{"data":"nanomq_cli"}'
This not works.(nanomq_cli tool, don't has username password args)
if i publish using nanomq bridging EMQX Server authentication logs:
2023-01-25T22:15:58.831412+00:00 [debug] line: 781, mfa: emqx_connection:handle_incoming/2, msg: mqtt_packet_received, packet: CONNECT(Q0, R0, D0),ClientId=nanomq-a11cb100, ProtoName=MQTT, ProtoVsn=4, CleanStart=true, KeepAlive=60, Username=test123, Password=undefined, peername: <IP_ADDRESS>:53986, tag: MQTT 2023-01-25T22:15:58.831923+00:00 [debug] clientid: nanomq-a11cb100, line: 356, mfa: emqx_channel:handle_in/2, msg: mqtt_packet_received, packet: CONNECT(Q0, R0, D0),ClientId=nanomq-a11cb100, ProtoName=MQTT, ProtoVsn=4, CleanStart=true, KeepAlive=60, Username=test123, Password=undefined, peername: <IP_ADDRESS>:53986, tag: MQTT 2023-01-25T22:15:58.832348+00:00 [warning] authenticator: <<"password_based:built_in_database">>, clientid: nanomq-a11cb100, exception: error, line: 667, mfa: emqx_authentication:do_authenticate/3, msg: authenticator_error, peername: <IP_ADDRESS>:53986, reason: function_clause, stacktrace: [{emqx_passwd,hash,[{sha256,<<"7dd48fe535be0d9de3d491093bea377e">>,suffix},undefined],[{file,"emqx_passwd.erl"},{line,80}]},{emqx_passwd,check_pass,3,[{file,"emqx_passwd.erl"},{line,76}]},{emqx_authn_mnesia,authenticate,2,[{file,"emqx_authn_mnesia.erl"},{line,176}]},{emqx_authentication,authenticate_with_provider,2,[{file,"emqx_authentication.erl"},{line,678}]},{emqx_authentication,do_authenticate,3,[{file,"emqx_authentication.erl"},{line,646}]},{emqx_authentication,authenticate,2,[{file,"emqx_authentication.erl"},{line,251}]},{emqx_hooks,safe_execute,2,[{file,"emqx_hooks.erl"},{line,200}]},{emqx_hooks,do_run_fold,3,[{file,"emqx_hooks.erl"},{line,180}]},{emqx_access_control,authenticate,1,[{file,"emqx_access_control.erl"},{line,144}]},{emqx_channel,do_authenticate,2,[{file,"emqx_channel.erl"},{line,1714}]},{emqx_channel,handle_in,2,[{file,"emqx_channel.erl"},{line,360}]},{emqx_connection,with_channel,3,[{file,"emqx_connection.erl"},{line,790}]},{emqx_connection,process_msg,2,[{file,"emqx_connection.erl"},{line,466}]},{emqx_connection,process_msg,2,[{file,"emqx_connection.erl"},{line,472}]},{emqx_connection,handle_recv,3,[{file,"emqx_connection.erl"},{line,428}]},{proc_lib,wake_up,3,[{file,"proc_lib.erl"},{line,236}]}], tag: AUTHN 2023-01-25T22:15:58.833108+00:00 [debug] clientid: nanomq-a11cb100, line: 252, mfa: emqx_authentication:authenticate/2, msg: authentication_result, peername: <IP_ADDRESS>:53986, reason: chain_result, result: {ok,{error,not_authorized}}, tag: AUTHN 2023-01-25T22:15:58.833534+00:00 [debug] clientid: nanomq-a11cb100, line: 827, mfa: emqx_connection:serialize_and_inc_stats_fun/1, msg: mqtt_packet_sent, packet: CONNACK(Q0, R0, D0),AckFlags=0, ReasonCode=5, peername: <IP_ADDRESS>:53986, tag: MQTT 2023-01-25T22:15:58.834179+00:00 [debug] clientid: nanomq-a11cb100, line: 630, mfa: emqx_connection:terminate/2, msg: emqx_connection_terminated, peername: <IP_ADDRESS>:53986, reason: {shutdown,not_authorized}, tag: SOCKET 2023-01-25T22:15:58.834619+00:00 [info] clientid: nanomq-a11cb100, line: 635, mfa: emqx_connection:terminate/2, msg: terminate, peername: <IP_ADDRESS>:53986, reason: {shutdown,not_authorized}

You are correct. nanomq_cli quic doesn't use username & password now, will implement this in the next version.
Thanks for reporting this issue.

However, nanomq quic bridging has username & password params, and some of our clients are using them, Could you confirm this issue is only with nanomq_cli?

I have also tested our emqx server using eemqt client. I have published a message successfully to emqx server over quic protocol using eemqt client. But with nanomq bridging unsuccessfully.
Password show undefined in emqx server logs when using nanomq bridging and my nanomq briding config
server = "mqtt-quic://<IP_ADDRESS>:14567" username = test123  password = 123123

However, nanomq quic bridging has username & password params, and some of our clients are using them, Could you confirm this issue is only with nanomq_cli?

I have also tested our emqx server using eemqt client. I have published a message successfully to emqx server over quic protocol using eemqt client. But with nanomq bridging unsuccessfully.
Password show undefined in emqx server logs when using nanomq bridging

Lots of customers are using this feature and it is working fine. There should be sth wrong in your config file. Plz share your config file so that we can debug for you.

I solved problem.
username and password is not between quote character in default configs nanomq.conf
like
username = user
password = pwd
but if I change config like below
username = "user"
password = "pwd"
bridging works fine

Glad you figure it out. Will update the docs also


Fix task_setup race condition

Summary
When a large number of threads are created in SMP, malloc in nxtask_assign_pid may cause thread switching and create new threads. This may lead to accessing invalid pointers.
Impact
Testing

@Gary-Hobson is there some way to trigger the race condition before this patch? I think it could be important to create a ostest avoid this issue happening again in the future

@anchao Do you mean leave_critical_section before all malloc/free?
This has been modified, but the functionality of this method seems to have no difference
Because of the check, calling malloc/free in the critical section will not have any effect

@anchao Do you mean leave_critical_section before all malloc/free?
This has been modified, but the functionality of this method seems to have no difference Because of the check, calling malloc/free in the critical section will not have any effect

In SMP, holding critical_section and then holding mm_lock may cause ABBA deadlock. For example, critical_section is used in the lower half of mm implementation:
enter_critical_section(spin_lock)
mm_lock
enter_critical_section(spin_lock) <-- deadlock

Please make sure that there is no habit of repeated locking in the code path, which may cause serious issues.

@anchao Do you mean leave_critical_section before all malloc/free?
This has been modified, but the functionality of this method seems to have no difference Because of the check, calling malloc/free in the critical section will not have any effect

In SMP, holding critical_section and then holding mm_lock may cause ABA or ABBA deadlock. For example, critical_section is used in the lower half of mm implementation:
enter_critical_section(spin_lock)
mm_lock
enter_critical_section(spin_lock) <-- deadlock

Please make sure that there is no habit of repeated locking in the code path, which may cause serious issues.

Thanks for the explanation, I will pay attention

@Gary-Hobson is there some way to trigger the race condition before this patch? I think it could be important to create a ostest avoid this issue happening again in the future

I tried it, and this case is not easy to add to ostest
It only happens occasionally when a large number of threads are created and destroyed
I can't think of any way to make it happen every time without hacking the kernel code
We can reproduce it with lots of stress testing, but it takes a long time


fix: Unable to view details of product after scanning

What
Fixes Unable to view details of the product after scanning.
Screenshot

Fixes bug(s)

#1725

Part of

https://github.com/openfoodfacts/smooth-app/issues/525
(please be as granular as possible)

Codecov Report

Merging #1726 (04534eb) into develop (2ea0da3) will decrease coverage by 0.50%.
The diff coverage is 0.68%.

@@            Coverage Diff             @@
##           develop   #1726      +/-   ##
==========================================
- Coverage     8.86%   8.35%   -0.51%
==========================================
  Files          161     165       +4
  Lines         6623    7121     +498
==========================================
+ Hits           587     595       +8
- Misses        6036    6526     +490

Impacted Files
Coverage Δ

...h_app/lib/cards/category_cards/abstract_cache.dart
0.00% <0.00%> (ø)

...p/lib/cards/category_cards/asset_cache_helper.dart
0.00% <0.00%> (ø)

...p/lib/cards/category_cards/raster_async_asset.dart
0.00% <0.00%> (ø)

...oth_app/lib/cards/category_cards/raster_cache.dart
0.00% <0.00%> (ø)

..._app/lib/cards/category_cards/svg_async_asset.dart
0.00% <0.00%> (ø)

...smooth_app/lib/cards/category_cards/svg_cache.dart
0.00% <0.00%> (ø)

...t_cards/knowledge_panels/knowledge_panel_card.dart
0.00% <0.00%> (ø)

...t_cards/knowledge_panels/knowledge_panel_page.dart
0.00% <0.00%> (ø)

...knowledge_panels/knowledge_panel_summary_card.dart
0.00% <ø> (ø)

...s/knowledge_panels/knowledge_panel_table_card.dart
0.00% <0.00%> (ø)

... and 53 more

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 9ee733a...04534eb. Read the comment docs.

Hi @monsieurtanuki,
I've moved the ContinuousScanModel to main.dart and added if (isRemovable && !isSelectable) to product_title_card.dart to remove cross when SummaryCard is in full screen.
SummaryCard in full screen(cross not required)

SummaryCard not in full screen(cross required to remove from carousel)

I also checked the impact at onboarding which caused #1720 and everything works fine there.

Hi @monsieurtanuki,
I apologize as I'm unable to understand what you are trying to convey but I understood that there should be only one call of await ContinuousScanModel().load(localDatabase) and I can confirm that it is called only once i.e. in scan_page. Please let me know if I'm missing something.

I think what he means it that we now have two Providers of type ContinuousScanModel but only one should be in the whole widget tree

Thanks, @monsieurtanuki,
I'm really thankful for all your support and guidance during this PR, I was able to get a better understanding of the provider and app code.
On a side note, I feel this may not impact the screenshot generation because we are using 2 different init's in main.dart .

On a side note, I feel this may not impact the screenshot generation because we are using 2 different init's in main.dart

I don't think it's appropriate to use logic regarding screenshot generation. Just painful experiments do the trick. Believe me!
Actually we're using 2 inits just because it seemed to work that way. Don't ask me why.


Undo codecov comment for codegen tool.

Coverage numbers are:
?   	istio.io/mixer/tools/codegen/cmd/mixgenbootstrap	[no test files]
?   	istio.io/mixer/tools/codegen/cmd/mixgeninventory	[no test files]
?   	istio.io/mixer/tools/codegen/cmd/mixgenproc	[no test files]
ok  	istio.io/mixer/tools/codegen/pkg/bootstrapgen	0.078s	coverage: 75.9% of statements
?   	istio.io/mixer/tools/codegen/pkg/bootstrapgen/template	[no test files]
ok  	istio.io/mixer/tools/codegen/pkg/interfacegen	0.067s	coverage: 71.4% of statements
?   	istio.io/mixer/tools/codegen/pkg/interfacegen/template	[no test files]
ok  	istio.io/mixer/tools/codegen/pkg/inventory	0.026s	coverage: 81.8% of statements
ok  	istio.io/mixer/tools/codegen/pkg/modelgen	0.041s	coverage: 90.9% of statements
Not that great. I am glad the modelgen though has reasonally cov since it is the main stuff. Will work in the coming weeks to bumpup the codecov numbers.
cmd dir is the main file so, I think no test there is fine.
Release note:

This change is

/lgtm

@guptasu if you haven't added those to requirement file, I have a coming pr that will update and add all requirements.

When you ready for merge, simply add release-note part in pr description and remove "do-not-merge" label and you are good to go.

@yutongz I will let your PR add the code coverage numbers to the required file. Thanks.

@geeknoid @ZackButcher @yutongz Review again pls. The requirement file will be updated via @yutongz's PR

/lgtm


Support asynchronous API call of OpenAIBasedEvaluator.get_score()

Motivation
The bottleneck of the OpenAI-based evaluator is IO time. This PR introduces an asynchronous API call option for each metric evaluation.

I ran the following code in my local environment and get this result:
import time

from dotenv import load_dotenv
from langcheck.metrics.en import toxicity

load_dotenv()

generated_outputs = [
    "You look beautiful",
    "You look ugly",
    "You are a good person",
    "You are a bad person",
    "I have a pen",
    "I have an apple",
    "I have a pine apple",
    # "I have a gun", # Intentionally cause error.
]

# Async
start = time.time()
toxicity_value = toxicity(
    generated_outputs,
    model_type="azure_openai",
    openai_args={"model": "gpt-4-turbo"},
    use_async=True,
)
print(f'Async call: {time.time() - start}[s]')

# No async
start = time.time()
toxicity_value = toxicity(
    generated_outputs,
    model_type="azure_openai",
    openai_args={"model": "gpt-4-turbo"},
    use_async=False,
)
print(f'No async call: {time.time() - start}[s]')

Async call: 27.088413953781128[s]
Intermediate assessments (1/2): 100%|████████████████| 7/7 [01:09<00:00,  9.96s/it]
Scores (2/2): 100%|█████████████████████████| 7/7 [00:17<00:00,  2.44s/it]
No async call: 86.82365489006042[s]

Sure, I overlooked them. I updated the code.

@liwii I updated all the metric function which we can pass use_async options. PTAL.

Seemingly the server is back, so let me merge this PR now. Thanks!!


Images are showing while downloading or view in other browser

Images are not showing while downloading the PDF or in any other browser except chrome.
I have changed how the images rendered in react-pdf-html with this:

Images with Image Urls are now showing perfectly fine only in chrome not in other browsers (not even while download the pdf using the chrome).
Used the S3 URLs for Images.

Same problem with firebase. Just fix it by

Latest code has 'Access-Control-Allow-Origin': '*'


Is there any popular type-c to ethernet dongle chip supporting usb NCM?

Is there any popular type-c to ethernet dongle chip supporting usb NCM?

I know that Dell D3000 and D6000 dock have Ethernet chip inside that support NCM. I don't have a full list so there may be others that I'm not aware of

I found that one rare at this moment chip supports NCM.
RTL8154 2.5GBE , was released last year. Some dongles with it are already on taobao


Cannot Find path to unity Executable

Hi @safu9
I'm getting error with finding unity executable path error.
bundle exec fastlane test
 [✔] 🚀
[21:04:19]: WARNING: fastlane requires your locale to be set to UTF-8. To learn more go to https://docs.fastlane.tools/getting-started/ios/setup/#set-up-environment-variables
+-----------------------+---------+--------+
|               Used plugins               |
+-----------------------+---------+--------+
| Plugin                | Version | Action |
+-----------------------+---------+--------+
| fastlane-plugin-unity | 1.0.1   | unity  |
+-----------------------+---------+--------+

[21:04:21]: ------------------------------
[21:04:21]: --- Step: default_platform ---
[21:04:21]: ------------------------------
[21:04:21]: Driving the lane 'android test' 🚀
[21:04:21]: -------------------
[21:04:21]: --- Step: unity ---
[21:04:21]: -------------------
+------------------+--------------+
|          Lane Context           |
+------------------+--------------+
| DEFAULT_PLATFORM | android      |
| PLATFORM_NAME    | android      |
| LANE_NAME        | android test |
+------------------+--------------+
[21:04:21]: Cannot find path to unity executable!

+------+------------------+-------------+
|           fastlane summary            |
+------+------------------+-------------+
| Step | Action           | Time (in s) |
+------+------------------+-------------+
| 1    | default_platform | 0           |
| 💥   | unity            | 0           |
+------+------------------+-------------+

[21:04:21]: fastlane finished with errors

[!] Cannot find path to unity executable!

Please use unity_path or unity_version option.
For example,
unity(unity_path: 'path/to/unity', ...)
# or
unity(unity_version: '2019.4.6f1', ...)

Note that unity_version option only works with Unity Hub of default settings.

Thank you. That's working.
Now what is the default build path where build apk is generated? Can't seem to find it under Project Folder.

I think you are just launching unity, not building.
You need to write a few lines of code to build apk, like this post.
Basically, create a static method and call BuildPipeline.BuildPlayer in it.
And, call the method by execute_method option of this plugin.
Build path must be passed to BuildPipeline.BuildPlayer as an argument.

So it will be like this to build for Android.
unity(
  unity_path: 'path/to/unity',
  build_target: 'Android',
  execute_method: 'YourClass.MethodToBuildAndroid',
  # other options here
)

Thank you so much. It's working.
Sorry for late reply. I've been busy with other work.


Typescript complains about the reducer

In the counter example, we have our reducer like Redux explains us to have:
export default (state:number = 0, action:any) => {
  ...
}

the problem is that Webstorm complains about having a required parameter after an optional one. It is not like it is optional, it is more as a default value in case of undefined.
Still, I guess it is right, we shouldn't do that (nor Redux) should do it.
Now my editor is all about red wiggles.

This is valid TS code with typescript 1.6, see Default initializers on required parameters.
You probably just need to upgrade your TypeScript version. Not sure if webstorm supports 1.6 yet though.

Oh, nice, one problem less.

@Foxandxss hey! Did you manage to make the error go away in webstorm? I have the latest WS11 installed which should support "the latest 1.6 features" but I get the same error on my reducer functions http://blog.jetbrains.com/webstorm/2015/11/webstorm-11-released/

@Foxandxss @wbuchwalter  ah no - seems this is not in 1.6 yet https://github.com/Microsoft/TypeScript/issues/4066


Fix invite link

r? @maxtaco

:mag_right: No visual changes found as a result of these commits.

👍


Fix #1076 Fixed Download Instructions.

This is my first commit and pull request for this repo. Please let me know if I have done something wrong and I'll improve upon it.

I'm not sure if the second commit is necessary.

I agree that the second commit isn't necessary. We probably want to change this for OS X as well, seeing as that is command line too.

This commits are just for OSX. I'll push another one for Linux in a few hours.

ok to test

ok to test

Hey, sorry to bother, but what does ok to test mean?? Do I have to test it? or would you deploy it in your test servers? I'm new to contributing here.


Firebase does not work inside of my unity build for PC, but works fine in my editor

Please fill in the following fields:
Unity editor version: 2019.3.1f1
Firebase Unity SDK version: 6.11.0
Firebase plugins in use (Auth, Database, etc.): Auth, Database
Additional SDKs you are using (Facebook, AdMob, etc.): None
Platform you are using the Unity editor on (Mac, Windows, or Linux): Windows
Platform you are targeting (iOS, Android, and/or desktop): desktop
Scripting Runtime (Mono, and/or IL2CPP): Mono
Please describe the issue here:
(Please list the full steps to reproduce the issue. Include device logs, Unity logs, and stack traces if available.) I built my application and attempted to use the same login information that I use inside of my unity editor to log in through the built application but it does not log me in. Furthermore, if attempt to sign up a new user, the user's details are not added to the authentication database either.
Please answer the following, if applicable:
Have you been able to reproduce this issue with just the Firebase Unity quickstarts (this GitHub project)?
What's the issue repro rate? (eg 100%, 1/5 etc)

Hi,
I haven't had any luck reproducing this on my end.  Have you seen this with the quickstarts?  In the Build Settings, what options are you using?
Thanks

This is the build settings I use for my app. I also was unsure what was implied by quick starts sorry Im fairly new to coding

Hi @cs17wwt, the quickstart is the project in this github repository. Can you try cloning this project and reproducing the issue? If you can isolate the specific lines of code where the issue is occuring with a minimal reproduction case we can have a look, but we don't have enough information about your project to effectively diagnose the issue.


Implement new send command syntax

The current send command is very limited. It only lets you send a command code to a pre-defined target recipient. That's only a sliver of the functionality we actually want.
Recall that a message has several different properties:

The sender ID: Who is sending the message.
The recipient ID: Who is the target recipient.
Priority: Used in arbitration. Lower values are higher priority.
Command code: The command that's being issued.
Message body: Extra payload data if applicable for the issued command. (max 7 bytes)
Acknowledgement Flag: Indicates whether the message is simply echoing a previous message for the purposes of acknowledging its receipt.

Some notes about these:

The sender ID and recipient ID can be one of CDH, PWR, ADCS, and PLD.
the command code will be one of the 45 possible values.

The new send command should make it possible (and ideally easy) to configure all of these properties, so that testers have complete control over the messages they are transmitting.
New Syntax:
send <recipient> <command> [data] [options]

Examples:
send PWR PWR_SET_SUBSYSTEM_POWER 0x03 0x01
send PLD PLD_TEST_LEDS sender=CDH
send ADCS ADCS_GET_MAGNETORQUER_DIRECTION sender=CDH priority=0
send PLD 0x23 ack=true

Note that both command names and command codes should be valid for the command argument.
To reduce typing, the sender option can be omitted and will default to the value from the most recent setid command. By the way, perhaps it's time to give it a better name. How about iamnow? (no I'm serious- 🤨)
iamnow CDH
send PLD PLD_TEST_LEDS

Let me know if you have any questions or suggestions.

As a bonus, you should also delete the dest field from COMM_INFO and just make use of the user-defined sender IDs. This will have the side-effect of fixing the crash that occurs when trying to send a command with None for the target recipient.

Good write-up. Do you think the non-common commands should have a default recipient (like the current dest), or should it always be specified by the user?
I was trying to fit the verb theme with setid but iamnow is good, especially when the recipient is variable as well.

Yeah, the issue with setid is there's two ID's involved (three if you consider the command ID). You could also have set-sender and that would be logical, but iamnow is shorter and more fun.
Good question. Actually, keeping the default destinations for the non-common commands could be useful in reducing typing for the vast majority of situations. It's quite rare that you would want to send ADCS commands to Power after all. So, yeah I think we should keep the dest fields. So maybe the syntax can just be:
send <command> [data] [options]

And you can specify to= as an option. For common commands it would be required or else you get a warning.

I think argparse would be the simplest approach for this, unless there's objections. The syntax would have to be more like this:
send PWR_SET_SUBSYSTEM_POWER --data 0x03 0x01 --from CDH

We could, but it's pretty easy to make our own parser with .split(). Here's a good start:
def parse_send(args: str):
    parts = args.split()

    cmd_id = parse_cmd_id(parts[0])
    data = []
    options = {}

    # Parse remaining parts
    has_data: Bool = False
    for index, part in enumerate(parts[1:]):
        if index == 1 and not "=" in part: # Detect if the data argument is provided.
            has_data = True

        if '=' in part:  # Check if key-value pair.
            key, value = part.split('=')
            options[key] = value
        elif has_data:  # Data
            data.append(part)
        else: # Invalid.
            raise SyntaxError(f"Unknown argument '{part}'")

    # Now data and options are parsed. Just need to process it.
    return {"cmd": cmd_id, "data": data, "options": options}

Sounds good, I'll try getting that syntax working. Thanks for starting on it.
If you want to check it out, I did the argparse version on this branch, which seems to be working (but only accepts command names and doesn't handle bad input).

I haven't implemented the is_ack flag yet, I'm assuming that is dependent on #24? If so, I'd rather just leave that out of this issue for now.
We can go over it next meeting, but if you're curious I did open the PR (#28) to compare the changes @Koloss0.

Yep, we can leave it for #24. I took a look and your changes look very good. Nice job!


Add ability to share collections

It would be nice if we had the ability to share our collection with someone else via a link. It would make searching for someone else's cards for trading much easier.

I want to include a button in the profile page, to show the users collection and later on even trade with other users that way. But it didn't fit in my last update :)
But this one is coming back again!


DO_NOT_MERGE_[NP-4531] Add support to restrict domain login to users that belong to a set of spids

*Foam PR : https://github.com/kgrgreer/foam3/pull/453
*Nanopay PR : https://github.com/nanoPayinc/NANOPAY/pull/12872
*Ticket : https://nanopay.atlassian.net/browse/NP-4531, https://nanopay.atlassian.net/browse/NP-4740
*Description

NanopayUserAndGroupAuthService and LoginAttemptAuthService were updated to use getUser() method from "UserLocator" service.
Added new models (UserLocatorService, FilterBySpidService, and PreventDuplicateEmailLoginService).
Updated nanopay/src/services.jrl , foam3/src/services , foam3/src/files.js, and  foam3/tools/classes.js
Updated foam/nanos/auth/UserPropertyAvailabilityService.js - this allows users to create the same accounts in the different spids.

*Test Screenshots (bpp)
User Not Found

AuthenticationApiTest Fix
Needs to be merged after: https://github.com/kgrgreer/foam3/pull/429

you need to also use your userLocator in foam's UserAndGroupAuthService login method - that's what causing the login bug

you need to also use your userLocator in foam's UserAndGroupAuthService login method - that's what causing the login bug
@penzital  thank you! Because of getLocalUserDAO()?, If yes, how about other methods in this file which are using the "getLocalUserDAO()"?


[tflite] allow gpu delegate to run quant model in tflite demo

GPU delegate can handle quantized model since 40088b87ee0

@srjoglekar246 Before the PR, as expected, no numbers were reported when trying to mobilenet v1 quant on GPU. If allowing it to be run without calling setQuantizedModelsAllowed(), TFLite interpreter number was reported (because failing to apply GPU delegate). After setQuantizedModelsAllowed(), as expected, I got numbers close ones I got when running the float model. The app doesn't report stable average numbers. Roughly, I got

device
CPU 1xthread
GPU delegate

Pixel 4
28 ms
13 ms

Dimensity 1000+ dev board
14 ms
7 ms

Dimensity 820 dev board
15 ms
15 ms

Note that numbers on dev boards are for reference only :-) The CPU number of Pixel 4 should be much better. But that's what I got from the app. I actually got much better number from benchmark_model.

@freedomtan Awesome, thanks for confirming!


Object Picking not working under Mesa

As mentioned in mosra/magnum#80, the object picking example is apparently working only on NVidia binary drivers -- on Mesa clicking objects does nothing but the scene is rendered correctly.
The error might be related to the behavior noted in #12 (after getting it to somewhat working state I couldn't pick any object).

Fixed with 9f05e1c42ae5849f88e8e691ae1b8c86dbe1f933 some time ago.


Broken link

This link is not working.   Azure SDK for Python package index [https://github.com/Azure/azure-sdk-for-python/blob/master/packages.md]

Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: d6044da4-64e4-09c8-81c8-653f43448121
Version Independent ID: 621581bd-0b83-6458-863d-28e1dd026bfd
Content: Azure SDK for Python
Content Source: python/python-sdk-azure-overview.md
Product: azure-python
GitHub Login: @kraigb
Microsoft Alias: kraigb

Thanks for pointing that out. It looks like the package.md file was removed, so the link should go to the SDK docs at https://azure.github.io/azure-sdk-for-python/. I'll make that fix.


[SRVLOGIC-196] Rollout operator's deployment when custom configuration changes

Description of the change:
Use annotations to rollout the Deployment in prod profile, when the properties ConfigMap changes. In particular, under spec.template.annotations:

checksum/config: holds the sha256 encoded string of the application.properties key of the properties ConfigMap
sonataflow.org/restartedAt: the timestamp when the last restart was requested

Motivation for the change:
To update the workflow application whenever the user configuration is updated on the cluster.
Checklist

[X] Add or Modify a unit test for your change
[X] Have you verified that all the tests are passing?

How to backport a pull request to a different branch?

In order to automatically create a backporting pull request please add one or more labels having the following format backport-<branch-name>, where <branch-name> is the name of the branch where the pull request must be backported to (e.g., backport-7.67.x to backport the original PR to the 7.67.x branch).

NOTE: backporting is an action aiming to move a change (usually a commit) from a branch (usually the main one) to another one, which is generally referring to a still maintained release branch. Keeping it simple: it is about to move a specific change or a set of them from one branch to another.

Once the original pull request is successfully merged, the automated action will create one backporting pull request per each label (with the previous format) that has been added.
If something goes wrong, the author will be notified and at this point a manual backporting is needed.

NOTE: this automated backporting is triggered whenever a pull request on main branch is labeled or closed, but both conditions must be satisfied to get the new PR created.

@dmartinol can u rebase? The problem was fixed in #332

@dmartinol can u rebase? The problem was fixed in #332

done and also fixed the checksum annotation (twice, sorry). updates ADR accordingly

@dmartinol can u rebase? The problem was fixed in #332

done and also fixed the checksum annotation (twice, sorry). updated ADR accordingly

No worries! That's why I suggested checksumConfig, I've had this validation error before 😅

@ricardozanini @wmedvede any further feedback?

@domhanak will verify this PR, @dmartinol

Thanks! Works well I did not run into issues.
Here is apart of the deployment description after I updated its configMap with quarkus.log.level=DEBUG
You can see the new annotations.
Namespace:              sonataflow-operator-system
CreationTimestamp:      Wed, 17 Jan 2024 13:42:12 +0100
Labels:                 app=greeting
                        sonataflow.org/workflow-app=greeting
Annotations:            deployment.kubernetes.io/revision: 3
Selector:               app=greeting,sonataflow.org/workflow-app=greeting
Replicas:               1 desired | 1 updated | 1 total | 1 available | 0 unavailable
StrategyType:           RollingUpdate
MinReadySeconds:        0
RollingUpdateStrategy:  25% max unavailable, 25% max surge
Pod Template:
  Labels:       app=greeting
                sonataflow.org/workflow-app=greeting
  Annotations:  sonataflow.org/checksum-config: 42894021dcc8d31a6efc8a2b7faa9d0dc1d777e646ba2d6b141544dfce983f0d
                sonataflow.org/restartedAt: 2024-01-17T12:45:59Z


Provide broken-down FESAPI version as numbers

Is your feature request related to a problem? Please describe.
When upgrading from FESAPI 2.2 to FESAPI 2.3, I had to make some code changes.  It would have been useful to be able to have my code conditionally build for either version.  However, as far as I can see, the only FESAPI version is a string.
Describe the solution you'd like
I would suggest that the FESAPI version string be built up from numbers so the C preprocessor could do comparisons.  Something like
#define FESAPI_MAJOR_VERSION 2
#define FESAPI_MINOR_VERSION 3
#define STR_HELPER(x) #x
#define STR(x) STR_HELPER(x)
#define FESAPI_VERSION STR(FESAPI_MAJOR_VER) STR(FESAPI_MINOR_VER)

Describe alternatives you've considered
I don't think there's a way to do comparisons with strings in the C preprprocessor.
Additional context
I am not too clever about using the C preprocessor so I got the syntax above from here.

For extra information:

I decided to stringify the FESAPI version using CMAKE instead of the C preprocessor. I don't really like the C preprocessor indirection.
If one wants to stringify a macro, gsoap provides such a functionality (same as described above) => SOAP_XSTRINGIFY in stdsoap2.h


ScriptUserDefinition GetUserData() caches first persons permission

Odd problem...
I've modified GetUserData to retrieve permissions from Active Directory as below
public ScriptUserDefinition GetUserData()
        {

            PrincipalContext yourDomain = new PrincipalContext(ContextType.Domain, Authorization.Username.Split('\\')[0]);
            UserPrincipal userPrincipal = UserPrincipal.FindByIdentity(yourDomain, Authorization.Username.Split('\\')[1]);

            var result = new ScriptUserDefinition();
            var user = Authorization.UserDefinition as UserDefinition;

            if (user == null)
            {
                result.Permissions = new Dictionary<string, bool>();
                return result;
            }

            result.Username = Authorization.Username; //user.Username;
            result.DisplayName = user.DisplayName;

            result.Permissions = TwoLevelCache.GetLocalStoreOnly("ScriptUserPermissions:" + user.Id, TimeSpan.Zero,
                //UserPermissionRow.Fields.GenerationKey, () =>
                "ScriptUserPermissions:" + user.Id, () =>
                {
                    var permissions = new Dictionary<string, bool>(StringComparer.OrdinalIgnoreCase);

                    //if (permissionsUsedFromScript == null)
                    if (permissionsUsedFromScript.Count == 0)
                    {
                        //permissionsUsedFromScript = new UserPermissionRepository().ListPermissionKeys().Entities
                        //    .Where(permissionKey =>
                        //    {
                        //        // this sends permission information for all permission keys to client side.
                        //        // if you don't need all of them to be available from script, filter them here.
                        //        // this is recommended for security / performance reasons...
                        //        return true;
                        //    }).ToArray();

                        if (userPrincipal != null)
                        {
                            PrincipalSearchResult<Principal> groups = userPrincipal.GetAuthorizationGroups();

                            foreach (Principal p in groups)
                            {
                                // make sure to add only group principals
                                if (p is GroupPrincipal)
                                {
                                    try
                                    {
                                        var account = p.Sid.Translate(typeof(NTAccount));

                                        permissionsUsedFromScript.Add(account.Value);
                                    }
                                    catch
                                    {

                                    }
                                }
                            }
                        }
                    }

                    foreach (var permissionKey in permissionsUsedFromScript)
                    {
                        //if (Authorization.HasPermission(permissionKey))
                            permissions[permissionKey] = true;
                    }

                    TwoLevelCache.Remove("ScriptUserPermissions:" + user.Id);
                    return permissions;
                });

            return result;
        }

the problem I seem to be getting now is the very first person who logs on, their permission seems to be used for everyone else until I reset iis or wait some time. It sounds like a cache but as a test I've explicitly removed the case at the end. Any ideas?

This is only a method used to generate data for client side permissions. Are you sure you didn't modify PermissionService etc. ?

yep understand it's for client side permission only.
I'm using the below code in xyzDialog.ts to enable\disable an item based on Active Directory permission
        afterLoadEntity() {
            super.afterLoadEntity();
            if (!Authorization.hasPermission("mydomain\\team-deskside-ldn")) {
                this.form.Permanent.getGridField().toggle(false);
            }
        }

As I debugged the code I noticed this..
The first time run serenity the calls to methods are like so
!Authorization.hasPermission("mydomain\team-deskside-ldn") -> Q.getRemoteData('UserData') -> UserDefinition GetFirst()
on subsequent runs the calls to method are like this
!Authorization.hasPermission("mydomain\team-deskside-ldn") -> Q.getRemoteData('UserData')
it never calls GetFirst again which means it doesn't build the permissions for any other users.
What decides when GetFirst is called?

Users are cached by their name. So no need to call GetFirst if same user is requested second time. I guess you don't have negative expiration value on your GetUserData method. e.g. [NonAction, DataScript("UserData", CacheDuration = -1)]
Or, somehow Authorization.UserId or Authorization.Username doesn't change etc.

I figured it out, because I had changed permissionUsedFromScript to a List object it was being reused, this contained the permission from previous user.
        //private static string[] permissionsUsedFromScript;
        private static List<string> permissionsUsedFromScript = new List<string>();

I amended code to include
permissionsUsedFromScript.Clear();
this resolved the issue. I now have a fully integrated Active Directory serene environment using single sign on!
I just need to improve my implementation of GetUserData() as querying AD is slooooow compared to database, of course that's not a serenity issue.
Thanks as usual for the help Volkan.


Energy per hour sensor ?

Question
I am trying to calculate the cost of a charging session using hourly rates and the energy per hour sensor from this integration.
I am having a bit of trouble figuring out what value the energy per hour sensor exposes.  It seems to be update every hour around 10 mins past the hour but the time does not seem to be consistent.  Smetimes it updates at 5 minutes past.
Is the sensor value the total charge energy since the last update or is it in the last "clock hour"  ?
What version of the integration are you using?
manua installation easee (opening the configuration panel give an error)
Anything in the logs that might be useful for us?
Not that i can think of.

Additional information
No response

There is no exact timing when sensors update, this is just how the easee cloud works, it does not push out updates to all connected clients at the same time because that would use far too much bandwidth.
The value is supplied from easee cloud and we do not really know the exact algorithm behind calculating it.
But from the way it behaves I would assume that it is showing the amount of between hour marks.
PS. It would be nice to know what kind of problem you are seeing with the configuration panel?

Im kinda hijacking this thread, but its like the same question.
I have a sensor nordpool_kwh_dk2_dkk_3_10_025, that give me this output 1.971 DKK/kWh
Is it possibel to get it to write it to the EHTEYW8B Cost per kWh sensor? so the hourly would match?
Could be nice with a script like this.

Yes, you can use an automation to write the current price to Easee.
I do not think that will mean that the price will be logged correctly throughout a charging session.
I think the price that is set when the charging starts is the one it will use for the whole session.
Not 100% sure though.
- id: update_easee_price
  alias: Easee price
  trigger:
  - platform: state
    entity_id: sensor.nordpool_kwh_dk2_dkk_3_10_025
  action:
  - service: easee.set_charging_cost
    data:
      cost_per_kwh: {{ states('sensor.nordpool_kwh_dk2_dkk_3_10_025') }}
      vat: 0
      device_id: xxxxxx

Seems to be on the right track. When i run the script, this happens.
alias: Price
description: ""
trigger:

platform: state
entity_id:

sensor.nordpool_kwh_dk2_dkk_3_10_025
condition: []
action:

service: easee.set_charging_cost
data:
cost_per_kwh:
"[object Object]": null
vat: 0
device_id: cfcdc7cdf0eb5625e3341a9f62845bd1
So it report back is zero to easse.

I get the same error when using sensor.
cost_per_kwh:
"[object Object]": null
Can anyone help with that? :)

Can you show how your automation looks?

Can you show how your automation looks?

Right now it looks like this:
alias: "Easee Set Charging Price "
description: ""
trigger:
  - platform: state
    entity_id:
      - sensor.energi_data_service_buy
condition: []
action:
  - service: easee.set_charging_cost
    data:
      cost_per_kwh:
        - entity_id: sensor.energi_data_service_buy
      vat: 0
      device_id: 890d81a5ec62c64014c8e2beb0e231b6
      currency_id: DKK

And the entity looks right.
But I get this error:

You can not use an entity_id: as input to cost_per_kwh.
You must provide a value, and you can do that with a template, similar to what I wrote above.
In your case it would probably be: {{ states('sensor.energi_data_service_buy') }}

You can not use an entity_id: as input to cost_per_kwh.
You must provide a value, and you can do that with a template, similar to what I wrote above.
In your case it would probably be: {{ states('sensor.energi_data_service_buy') }}

I tried using the suggested template, but that does not seem to work :(
service: easee.set_charging_cost
data:
  cost_per_kwh:
    '[object Object]': null
  vat: 0
  device_id: blabla...

Full automation:
alias: "Easee Set Charging Price "
description: ""
trigger:
  - platform: state
    entity_id:
      - sensor.energi_data_service_buy
condition: []
action:
  - service: easee.set_charging_cost
    data:
      cost_per_kwh:
        "[object Object]": null
      vat: 0
      device_id: 890d81a5ec62c...

This works for me:
- id: elbil_laddkostnad
  alias: Elbil laddkostnad
  trigger:
  - platform: state
    entity_id: sensor.elpris_total
  action:
  - service: easee.set_charging_cost
    data:
      charger_id: EHxxxxxx
      cost_per_kwh: "{{ states('sensor.elpris_total') }}"
      vat: 0

Your sensor has a different name of course, so your template will be different.
In your code above you have "[object Object]": null instead of a template.
If the automation editor does not allow you to create it the correct way, you need to edit the automation manually.

This works for me:
- id: elbil_laddkostnad
  alias: Elbil laddkostnad
  trigger:
  - platform: state
    entity_id: sensor.elpris_total
  action:
  - service: easee.set_charging_cost
    data:
      charger_id: EHxxxxxx
      cost_per_kwh: "{{ states('sensor.elpris_total') }}"
      vat: 0

Your sensor has a different name of course, so your template will be different.
In your code above you have "[object Object]": null instead of a template.
If the automation editor does not allow you to create it the correct way, you need to edit the automation manually.

I probably missed the quotation marks around the states(...) - it works now.
Thank you very much, @olalid

Hi Olalid
Below works for me but the slave charger has a delay for about 5 minutes
before it changes. Master update directly when new hour.
alias: Elpris Easee Garaget Utsida
description: ""
trigger:

platform: state
entity_id:

sensor.nordpool_buy
condition: []
action:

service: easee.set_charging_cost
data:
cost_per_kwh: "{{ states('sensor.nordpool_buy') }}"
device_id: b2b21358e8e36127da43d458d0c93d5c
mode: single

Den ons 25 okt. 2023 kl 00:55 skrev Ola Lidholm @.***>:

This works for me:

id: elbil_laddkostnad
alias: Elbil laddkostnad
trigger:

platform: state
entity_id: sensor.elpris_total
action:
service: easee.set_charging_cost
data:
charger_id: EHxxxxxx
cost_per_kwh: "{{ states('sensor.elpris_total') }}"
vat: 0

Your sensor has a different name of course, so your template will be
different.
In your code above you have "[object Object]": null instead of a template.
If the automation editor does not allow you to create it the correct way,
you need to edit the automation manually.
—
Reply to this email directly, view it on GitHub
https://github.com/fondberg/easee_hass/issues/183#issuecomment-1778181513,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/A5V43TWBL5U3D5PRPEX26QLYBBBPRAVCNFSM5VMFXHY2U5DIOJSWCZC7NNSXTN2JONZXKZKDN5WW2ZLOOQ5TCNZXHAYTQMJVGEZQ
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

Ok, I do not think there is anything we can do about that.
What we do is call the API to change the price setting and monitor changes sent back from Easee cloud.
If the cloud delays the response for a slave charger it is just the way it is.
You can complain with Easee about if you want, but they typically have intentional (random) delays in sending out data so that things that happens at specific times are not sent out to all clients at exactly the same time to avoid bandwidth issues. So my guess it is not a bug, it is by design.

Ok. Not a big problem.Just wanted to report what I been seeing👍Skickat från min iPad25 okt. 2023 kl. 16:42 skrev Ola Lidholm @.***>:
Ok, I do not think there is anything we can do about that.
What we do is call the API to change the price setting and monitor changes sent back from Easee cloud.
If the cloud delays the response for a slave charger it is just the way it is.
You can complain with Easee about if you want, but they typically have intentional (random) delays in sending out data so that things that happens at specific times are not sent out to all clients at exactly the same time to avoid bandwidth issues. So my guess it is not a bug, it is by design.
—Reply to this email directly, view it on GitHub, or unsubscribe.You are receiving this because you commented.Message ID: @.***>


Negative plan node duration

can you please submit the plan which caused this bug? thanks

Can't do that, sorry.

Ah, I get it, the explain.depesz.com exclusive time is not the difference of the actual start and end time, but the difference between the inclusive time of this node minus the inclusive time of the subnodes.

I think what happens is that pev subtracts the execution time for the CTEs from the execution time of the sort, but instead these should be ignored, because they are already included in the total times of the subnodes referencing the CTEs.

Here is a much shorter example that shows the problem (the query doesn't make any sense, it's just for illustration), PEV shows -87% in the final aggregate node:
[
  {
    "Plan": {
      "Node Type": "Aggregate",
      "Strategy": "Plain",
      "Startup Cost": 407544.79,
      "Total Cost": 407544.80,
      "Plan Rows": 1,
      "Plan Width": 0,
      "Actual Startup Time": 7232.094,
      "Actual Total Time": 7232.094,
      "Actual Rows": 1,
      "Actual Loops": 1,
      "Output": ["count(*)"],
      "Shared Hit Blocks": 323,
      "Shared Read Blocks": 29748,
      "Shared Dirtied Blocks": 0,
      "Shared Written Blocks": 0,
      "Local Hit Blocks": 0,
      "Local Read Blocks": 0,
      "Local Dirtied Blocks": 0,
      "Local Written Blocks": 0,
      "Temp Read Blocks": 45795,
      "Temp Written Blocks": 71001,
      "I/O Read Time": 0.000,
      "I/O Write Time": 0.000,
      "Plans": [
        {
          "Node Type": "Sort",
          "Parent Relationship": "InitPlan",
          "Subplan Name": "CTE extras_cte",
          "Startup Cost": 373884.66,
          "Total Cost": 377250.68,
          "Plan Rows": 1346405,
          "Plan Width": 139,
          "Actual Startup Time": 5643.506,
          "Actual Total Time": 6631.646,
          "Actual Rows": 1346394,
          "Actual Loops": 1,
          "Output": ["extras.id", "extras.engine_id", "extras.category_name", "extras.option_id", "extras.option_code", "extras.option_type", "extras.label", "extras.price_net", "extras.price_gross", "extras.dbnames"],
          "Sort Key": ["extras.category_name"],
          "Sort Method": "external merge",
          "Sort Space Used": 201848,
          "Sort Space Type": "Disk",
          "Shared Hit Blocks": 323,
          "Shared Read Blocks": 29748,
          "Shared Dirtied Blocks": 0,
          "Shared Written Blocks": 0,
          "Local Hit Blocks": 0,
          "Local Read Blocks": 0,
          "Local Dirtied Blocks": 0,
          "Local Written Blocks": 0,
          "Temp Read Blocks": 45795,
          "Temp Written Blocks": 45795,
          "I/O Read Time": 0.000,
          "I/O Write Time": 0.000,
          "Plans": [
            {
              "Node Type": "Seq Scan",
              "Parent Relationship": "Outer",
              "Relation Name": "extras",
              "Schema": "public",
              "Alias": "extras",
              "Startup Cost": 0.00,
              "Total Cost": 43532.05,
              "Plan Rows": 1346405,
              "Plan Width": 139,
              "Actual Startup Time": 0.059,
              "Actual Total Time": 392.022,
              "Actual Rows": 1346394,
              "Actual Loops": 1,
              "Output": ["extras.id", "extras.engine_id", "extras.category_name", "extras.option_id", "extras.option_code", "extras.option_type", "extras.label", "extras.price_net", "extras.price_gross", "extras.dbnames"],
              "Shared Hit Blocks": 320,
              "Shared Read Blocks": 29748,
              "Shared Dirtied Blocks": 0,
              "Shared Written Blocks": 0,
              "Local Hit Blocks": 0,
              "Local Read Blocks": 0,
              "Local Dirtied Blocks": 0,
              "Local Written Blocks": 0,
              "Temp Read Blocks": 0,
              "Temp Written Blocks": 0,
              "I/O Read Time": 0.000,
              "I/O Write Time": 0.000
            }
          ]
        },
        {
          "Node Type": "CTE Scan",
          "Parent Relationship": "Outer",
          "CTE Name": "extras_cte",
          "Alias": "extras_cte",
          "Startup Cost": 0.00,
          "Total Cost": 26928.10,
          "Plan Rows": 1346405,
          "Plan Width": 0,
          "Actual Startup Time": 5643.509,
          "Actual Total Time": 7126.421,
          "Actual Rows": 1346394,
          "Actual Loops": 1,
          "Output": ["extras_cte.id", "extras_cte.engine_id", "extras_cte.category_name", "extras_cte.option_id", "extras_cte.option_code", "extras_cte.option_type", "extras_cte.label", "extras_cte.price_net", "extras_cte.price_gross", "extras_cte.dbnames"],
          "Shared Hit Blocks": 323,
          "Shared Read Blocks": 29748,
          "Shared Dirtied Blocks": 0,
          "Shared Written Blocks": 0,
          "Local Hit Blocks": 0,
          "Local Read Blocks": 0,
          "Local Dirtied Blocks": 0,
          "Local Written Blocks": 0,
          "Temp Read Blocks": 45795,
          "Temp Written Blocks": 71001,
          "I/O Read Time": 0.000,
          "I/O Write Time": 0.000
        }
      ]
    },
    "Planning Time": 0.715,
    "Triggers": [
    ],
    "Execution Time": 7512.649
  }
]

WITH extras_cte AS (SELECT * FROM extras ORDER BY category_name) SELECT COUNT(*) FROM extras_cte;

Explain on explain.depesz.com: http://explain.depesz.com/s/6G4s

@felixbuenemann thank you so much for all this information, it was very helpful. I'm working on a fix, should be pushed up shortly.

Great, btw I noticed the CTE nodes are marked as "Parent Relationship": "InitPlan" while the other plans are marked as "Parent Relationship": "Outer".

yeah, that’s an interesting observation.
On March 5, 2016 at 12:04:05 PM, Felix Bünemann<EMAIL_ADDRESS>wrote:
Great, btw I noticed the CTE nodes are marked as "Parent Relationship": "InitPlan" while the other plans are marked as "Parent Relationship": "Outer".
—
Reply to this email directly or view it on GitHub.

I just tried on master and the calculations still seem to be wrong.
explain.depesz.com lists the exclusive time at 114ms, which is the difference between the inclusive time of the cte scan node and the inclusive time of the aggregate node, but leaves a gap of 343 ms to the total execution time of the query of 7700 ms.
In PEV it now calculates the actual duration of the aggregate node as 600 ms, which when added to the 7.13 s of the cte scan node sums up to 7.73s, but the total execution time is only 7.51s and the difference between the total times of the cte scan node and the aggregate node is only 105ms.

Hmm, so it’s not as simple as just excluding CTE time from the parent. i’ll need to think about it some more,
On March 5, 2016 at 12:25:55 PM, Felix Bünemann<EMAIL_ADDRESS>wrote:
I just tried on master and the calculations still seem to be wrong.
explain.depesz.com lists the exclusive time at 114ms, which is the difference between the inclusive time of the cte scan node and the inclusive time of the aggregate node, but leaves a gap of 343 ms to the total execution time of the query of 7700 ms.
In PEV it now calculates the actual duration of the aggregate node as 600 ms, which when added to the 7.13 s of the cte scan node sums up to 7.73s, but the total execution time is only 7.51s and the difference between the total times of the cte scan node and the aggregate node is only 105ms.
—
Reply to this email directly or view it on GitHub.

I have the same problem

Could this issue be reopened?

Since I read CTEs mentioned above, I rewrote the query to not use any CTEs (instead subqueries), but it's still happening :/

@felixfbecker Have you heard about https://github.com/dalibo/pev2 ?
I'd be interested to know if you get negative durations on this new tool as well. If so, please share your plan.

Nope, it works there! I had not heard of it, it looks awesome!


Merriweather is not loaded.

I found this line in /layouts/partials/head.html
<link href='//fonts.googleapis.com/css?family=Merriweather:400,700' rel='stylesheet' type='text/css'>
I also tried to add https in front of the url, or remove 400,700.
Is there any other place I can check to make sure the font is loaded.
Thank you.

Sorry, but I couldn't reproduce your issue here. All my browser loaded the font from Google Fonts normally. Have you checked the Google Fonts Troubleshooting page?
BTW, Adding the https might be a better practice nowadays anyway.


Fix bug which occurs when option value has deep structure

In current version, a change of option value doesn't reflect to Chosen when option value has deep structure. This pull request fix the bug.

As I know, $watchCollection has better performance than deep $watch. I believe $watchCollection is enough for a select.
Could you please show me an example on plunkr/codepen/jsfiddle? thanks