Investigate using Selector of NSInvokation to re-enable controller openUrl

iOS 18 made the KeyboardInputViewController's openUrl function stop working, since it uses a now disabled openURL: selector.
The replacing selector is openURL:options:completionHandler: but I haven't been able to get this to work in Swift. If someone can figure out how this (non-working) code should look, we could re-enable it:
open func openUrl(_ url: URL?) {
     guard let url else { return }
     let selector = sel_registerName("openURL:options:completionHandler:")
     var responder = self as UIResponder?
     while let r = responder, !r.responds(to: selector) {
         responder = r.next
     }
     let args: [String: Any] = [:]
     let completion: (Bool) -> Void = { _ in }
     _ = responder?.perform(selector, with: (url, args, completion)) // <- Format of arguments?!
}

The above code properly resolves the responder, but performing the selector with the arguments in that format leads to a crash. So the question is how to pass the three values to the selector.
This is how you can use NSInvokation in Objective-C to get this to work, but it's not available in Swift:
- (void)triggerURL:(nonnull NSURL *)url {
    SEL selector = @selector(openURL:options:completionHandler:);

    UIResponder* responder = self;
    while (responder) {
        if([responder respondsToSelector:selector] == YES) {
            NSMethodSignature *signature = [responder methodSignatureForSelector:selector];
            NSInvocation *invocation = [NSInvocation invocationWithMethodSignature:signature];
            [invocation setSelector:selector];
            [invocation setTarget:responder];

            NSDictionary* opts = nil;
            void (^done)(BOOL) = nil;
            [invocation setArgument:&url atIndex:2];  // starting from index 2, since 0 and 1
            [invocation setArgument:&opts atIndex:3]; // are reserved for `self` and `_cmd`
            [invocation setArgument:&done atIndex:4];

            [invocation invoke];
            return;
        }
        responder = [responder nextResponder];
    }
}”

From @X.app on Twitter:

This has been fixed in another way, which makes the controller able to open URLs once again.


Consider removing version_check

This crate currently uses version_check to support Rust versions older than 1.36.0. This is ancient history by Rust's standards, so perhaps it is worth it to remove build.rs and version_check altogether. The motivation being compilation-time performance --- one less deb and one less build.rs would shave off some milliseconds. Not a huge win, of course, but still a meaningful reduction, given crate's popularity.

Removed in #70


Compatibility table for hot reloading support / image support

[kind/Documentation]

What did you find missing in the documentation?
We should have a "matrix" table that lists what images are compability, whether they support hot reloading or not.
As well as:

What images support binaries (Java)
What images to use when using certain frameworks (Django, Ruby on Rails, etc.)
Compatibility support for Python 2.7 or 3.0 modules and what images support what.

What is the relevance of it?
More openness as to what's available and compatible.

The only images that we officially support are Java and NodeJS, and only those that are based on the images specified here. Everything else is just as-is, we don't provide any guarantees there.

The PR was merged and hence we can close this issue.


Basics of Python and ML model code with Explanations

Hello sir , what I do from open contribution. please accept my request

@SurajPawar15-smart go for it

@Niketkumardheeryan sir please assign the issue #70 under LGMSOC21 to me. I want to contribute in this

@SuryanshNaugraiya only add Basics of Machine learning ...

& Deep learning too...

@Niketkumardheeryan should i add all the ipynb files in one folder called Notes, or should i separately upload all the files?

add a folder named Basics of ML and Dl and put ur all files into it..

ok


Enemies can be hit with NaN damage

The issue potentially has to do with the damage calculators, specifically: let final = thp - damage;
Something to do once I begin adding more enemies/levels.

More stress testing with stats is necessary, perhaps setting undefined/null and NaN to 0 would be helpful to prevent damage calculate errors.


Improve offline logging

Improve offline logging through the following:

Don't mark cache as found when logging offline. setVisitDate was marking cache as found. This is incorrect. Cache is marked found in the code that posts log online. This is why if you logged an offline visit and then went back to cache list, there would be a green bar.

Handle data changed to show status message. Handler was being set in onResume, but cache is always null here because the LoadCacheHandler thread hasn't finished yet

Set cache logged offline. This ensures orange bar will show up.

Make an option to sort them via their found-status. (green-orange-red-nothing)
I logged somes caches offline and must search the very long list for the orange bars.

@Gacksi Please submit this as a separate Issue so it can be marked appropriately and worked on when a developer has time.

I don't understand the improvement here. If I go on a caching trip for the whole day and log 20 caches offline during that day, I clearly want them to be shown as found. If they wouldn't get marked, the whole idea of offline logs would be useless to me. Or does your change make offline logged caches show only orange (but not orange-green as of now)?

This makes them get marked only orange (which in my understanding means offline logged). As they haven't been marked found on gc.com, they should not be green.

In this case it sounds meaningful to me.

To be clear, this pull request is a bug fix, not new features.
Bugs were:

View a list of caches
Select a cache and then log offline. Not that status is not updated in the detail view (entire field is probably not even shown since it was blank when first loaded). Bug #1.
Go back to the list. Cache has a green bar instead of orange. Bug #2.
After fixing Bug #2, the marker wouldn't show unless list was closed and opened again. This was Bug #3.


How to perform Inference using the fine-tuned model ?

Hi @prajdabre, I pre-trained a very small BART model on a new language and the pre-training is almost done.
I'm going to fine-tune the model on a downstream task and would want to perform inference using that fine-tuned model.
I can see the fine-tuning code in your repository but not the inference code.
Can you please tell me how to perform inference using the fine-tuned model?
Also, is it possible to use Huggingface Pipeline with the trained model to do the inference like the rest of the transformer models?
Thank you

Decoding command example is given here: https://github.com/prajdabre/yanmtt/blob/main/examples/decode_or_probe_model.sh


Flux not triggered by Minio bucket (Minikube single cluster)

Hi !
I'm playing with Kratix, using the single cluster instructions. I tried out the jenkins example, the promise get installed, the request is applied  , the pipeline run successfully but then nothing happen. I can see in the minio pod (in '/data') that the output is written but it looks like that flux never picks it up.
I also tried with a custom promise, same result.
Any idea ?
I'm on Mac ARM (M1) , minikube v1.28.0 with Docker driver.

I have the same behaviour using a multi cluster (using kind and your './scripts/quick-start.sh' script), could the problem be MinIO ?

Okay, I think it's a problem on my side with my custom promise that breaks all the rest. It might be 'cert-manager' messing things up. Will update on this hopefully tomorrow

Ok sorry for the noise, it turned out that I had to add namespace: default to my output yaml otherwise Kustomize goes crazy ... At least it's working now

Thanks for opening the issue @sebastienblanc. I'm glad you managed to resolve the issue.

Ok sorry for the noise, it turned out that I had to add namespace: default to my output yaml otherwise Kustomize goes crazy ... At least it's working now

This is a common issue that creeps up unfortunately, I think it will be worth us adding some docs to the on how to debug this sort of issue! Thanks for raising it.
Just to explain what I think is happening is that Kratix is pushing the resources from the Promise to the MinIO bucket and at that point Kratix's work is done. Flux is the GitOps agent running on the worker cluster that is responsible for reconciling the state and it has a lot of opinions about what structure the resources should be, including that every resource must specify the namespace. It won't assume default if its unspecified which differs from the traditional kubectl experience, it also won't create the namespace if it doesn't exist. I believe it is possible to toggle this off on Flux (I believe this wasn't the default behaviour on previous versions) and this may differ with other GitOps agents like ArgoCD. I think however for best practises always specifying the namespace is every resource is the best pattern.

Okay, I think it's a problem on my side with my custom promise that breaks all the rest.

This is another issue thats on a radar! The quick-start only ever sets up one Kustomization on the worker cluster to pull in all the resource, so one invalid Promise prevents all other resources from being scheduled since Flux takes an all-or-nothing approach to apply the resources. We are thinking about adjusting how the worker cluster is configured so that Kratix creates granular Kustomization resources per Promise, preventing one broken Promise affecting the others. Curious what your thoughts on this potential fix would be? Thanks 😄

@aclevername Hi ! Thx for the detailed explanation and this confirms more or less what I was suspecting :)
For more granular Kustomization resources, I don't know enough about Flux but for instance in ArgoCD you have the concept of an Application that encapsulate all the resources for a particular "project", if you could do the same for Flux and have each promise in a application that could make it more resilient.

I don't know enough about Flux but for instance in ArgoCD you have the concept of an Application that encapsulate all the resources for a particular "project", if you could do the same for Flux and have each promise in a application that could make it more resilient.

A Flux Kustomization is very similar to an Application in Argo from what I understand so thats useful feedback, thanks!

Going to close this issue out as we have noted down some actions on our side to improve Kratix. Feel free to re-open if needed 😄


test

Thank you for submitting this issue. As it has been inactive for an extended period of time, we are closing it. If you believe this issue still exists or needs further discussion, please feel free to reopen this issue or create a new one. Thank you for your understanding and support!

Thanks for this issue. As it has been inactive for a long time, we would close it. If you has any questions, please feel free to reopen or new issue, and we will follow up and resolve it.


RequireJS Support

Do you have any plans to have this work with RequireJS at all? I use proxyquire for the server, but we use RequireJS and I'd really like to use this with it.

Definitely no plans, sorry.


chore(main): release mqtli 0.7.1

:robot: I have created a release beep boop
0.7.1 (2024-12-30)
Adjust release process to new manifest release. No functional changes are in this release.
Miscellaneous Chores

Release 0.3.0 (99e33ef)
Release 0.4.0 (70d0310)

This PR was generated with Release Please. See documentation.

:robot: Created releases:

mqtli-v0.7.1
:sunflower:


Support multi-arch images

Currently, the images of OPNI are only for linux/amd64.
It will be nice to be added support for arm64 as well.

Hey @Kristian-ZH, is your use case for arm64 agents only or both agents and central opni components?

Both

You will have to build the images yourself for now, since we don't yet build them in our CI. To build the images:

download dagger v0.2.36 here
clone opni and checkout the latest tag (0.10.0)
run dagger do load to build the images to your local docker daemon.
tag and push the images, then update the opni helm chart to replace the repository with your own.

Thanks!

To this issue can be included also the Logging stack images.


refactor : Use Operation Interface

Signed-off-by: Shubham Gupta<EMAIL_ADDRESS>

Closing, done.


Error when using sample RUI location

On Firefox, I get an error when trying to use sample-kidney-registration.json:

PS: Same issue when creating a RUI location on the spot.

Should be fixed now. Had some AWS issues that caused this.


fix: update pdt and vaccination samples

Story: https://www.pivotaltracker.com/story/show/179503837

Update wrapped and unwrapped samples to include notarisationMetadata.signedEuHealthCerts
Get notarisationMetadata in vaccination schema to reference https://schemata.openattestation.com/sg/gov/tech/notarise/1.0/schema.json#/properties/notarisationMetadata
Update vaccination tests

:tada: This PR is included in version 1.15.6 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Build integration with ROR identifiers

As an organizational admin or super user creates a new organization in Roadmap this should ping the ROR API and record the associated identifier.
Ideally, we should also record the ROR for the Principle Investigator & Data Contact Person.
Outstanding question:

For the DMPTool the organizational information is generated/recorded prior to authentication; for DMPOnline it is after. So, we'll need to determine corresponding workflows with this in mind.

There are several areas where we can update the current text field/autocomplete selection boxes with this ROR lookup functionality.

After a Shibboleth login (non-DMPTool workflows) and the user tells us which Org they belong to.
On the Org details page allowing Org Admins and Super Admins to assign/correct ROR selections
On the Project details page (as noted above) when the user is entering PI and Data Contact info
On the Edit Profile page to allow a user to assign/change their Org affiliation

Other questions:

We will run a script to attach ROR ids for existing Orgs in the database. Do we want to replace our current Org names with the official ROR names?
We will have to allow the user to type in the name of a non-ROR Org (ROR only has research organizations ... no funder, etc.). Do we want to add the Org to the Orgs database table or continue assigning them to the is_other Org?

Ok this turned out to be a lot more work than initially expected.
Database changes:

Removed is_other Org and replaced with actual Org records
Added a managed flag to Orgs (flag is now used everywhere we were previously checking the is_other flag
Consolidated separate org_identifiers and user_identifiers table into a single identifiers table
Added the ROR and Fundref identifier_schemes
Added flags to help contextualize identifier schemes for_auth, for_orgs, for_plans and for_users
Added a funder_id and org_id field to the Plans table

User Account Creation Screenshots:
New user account showing search results from ROR. The system will combine both local database results and ROR results (in situations where we have the same result for both, it shows the local database version ... e.g. 'University of California, Berkeley (UCB)' is shown instead of ROR's 'University of California, Berkeley (berkeley.edu)'

New user account creation showing the scenario where neither the local DB or ROR had a match. It warns the user but still allows them to continue:

User Functionality Screenshots:
Example of the new user's dashboard. It created the 'Example Test University' Org as an 'unmanaged' Org and attached the user to it.

Screenshot of the same Org selection box on the Edit Profile page. Allowing the user to select a local DB Org, one from the ROR registry or entering free text (this will also create an Org using the same logic the create user account uses):

Screenshot of the Create Plan page. This page continues to ONLY allow the user to select Orgs stored in the local database.

Screenshot of the Project Details page showing the new Funder selection box (This replaces the old funder_name field). If the template that was used to create the plan does not belong to the Funder the user specified on the create Plan page (e.g. user selected Funder 'ABC' which has no template so the default template was used) then the user will be allowed to change the Funder selection here:

Screenshot of the same page but for a scenario where the specified funder matches the creator of the template (e.g. Funder 'XYZ' was specified and the 'XYZ' template was used). The user is not able to change the Funder in this situation:

Super Admin Screenshots:
Screenshot of the Super Admin's Organizations page with a search for one of the new 'unmanaged' Orgs:

Screenshot of the Super Admin's view when editing an Org. Note the new 'Managed?' flag and 'Identifiers' section at the bottom. Also note that it was able to retrieve the URL from ROR.
The identifiers section allows an Org Admin to search the ROR registry and attach ROR and FUNDREF ids to the Org (note this action will NOT replace the name, abbreviation or url)

Screenshot of the Super Admin page to create a new Org. The 'Organization Lookup' box allows the admin to select one of the orgs from the ROR registry or enter free text if the org does not happen to be in the registry:

Org Admin Screenshots:
Screenshot of an Org Admin's view of their Org details. Note that in order for a user to be able to access the Admin menu (e.g. usage, users, etc.) their Org needs to be 'managed' and the user must have Org Admin privileges:

Testing instructions from Brian:
account creation - Select an existing Org (e.g. UCOP)
account creation - Select a ROR Org (will have a URL domain)
account creation - Enter free text
edit the user profile and change Orgs (its the same control as account creation so no need to test all 3 scenarios)
Create a new plan. Select USGS or NSF and select a template
Create a new plan. tick the 'no funder' checkbox and then select a funder on the project details page
As a Super Admin - go to the Org Details page and change the managed flag
As a Super Admin - go to the Org Details page and lookup and Org in the Identifiers section and then save it (make sure the ROR and FUNDREF ids changed)
As a Super Admin - create a new Org by selecting a ROR entry
As a Super Admin - create a new Org but enter free text
As an Org Admin - make sure you do not see the managed flag but make sure you DO see your ROR and Fundref ids

When creating a plan there is a very long lag between the step to "Select the primary funding organization" and the Create Plan button being enabled. Is the time delay because it is calling to the ROR API? I'm not sure what else has changed that is causing the delay.

No, there are no ROR calls on this page. It does make an ajax call back to the server to determine what templates are relevant to the user's selections.
The ajax call is trigger when the org/funder fields lose focus (or checkboxes get clicked). Maybe we need to change it to fire when the org/funder fields 'change'

instructions work well from Maria, however I am unablel to replicate the following step:

Hi @magdalenadrafiova I updated your privileges for your Glasgow and Edinburgh uni accounts so that you have both Org Admin and Super Admin privileges (a super admin needs both). You should have access now.

Sarah, Magdalena & I tested this together today. We are concerned with the number of duplicate orgs that will be created in this new process. When a user is about to create a new org we would like to modify the warning text to read:
"A  new entry will be created for the organization you have named above. Please double check that your organization does not already appear in the list in a slightly different form."

Also, @xsrust can you deploy this to https://dmponline-test.dcc.ac.uk/ so Sarah/Magdalena can have some DMPOnline users test this out?

We've been doing testing on RoR and it looks good. We'll push it out to our users to look at too.
I noticed that the comment @mariapraetzellis made above to flag that a new org would be added to the database is not in the version we're testing

apologies. missed that change request. Will push it out today.

Text changes requested above are waiting on pull request https://github.com/DMPRoadmap/roadmap/pull/2485

New text showing and looks good. Closing out


Storyshots and jest --watch

Hi,
There are features in Jest that prevent from running the whole test suite if only a single file has been modified (see -o, --watch, --findRelatedTests ...)
I have setup Storyshots on my project, but for example running jest --watch -o does seem to trigger all the storyshot test suite even if I touch a single file.
Can Storyshots and Jest work correctly this way or it's too hard for Jest to track correctly the dependencies when using initStoryshots?

@slorber did you come up with a solution for this? unfortunatly, the stale bot closed the issue

There are already few open issues about this. But meanwhile no progress

no, not working on that project anymore. Note if you think it's still not fixed and there's no open issue you may try to reopen a new one as closed issue comments are often ignored


use regex for data retrieval?

as of sqlalchemy-datatables 0.2.1 queries from multi-select field type are not supported (e.g., from yadcf, see http://stackoverflow.com/questions/32855901/yadcf-with-select2-puts-empty-selected-option)
the actual "non-support" is for columns where regex is True, coming from dataTables client
regex is supported by sqlalchemy for some dialects, e.g., see http://stackoverflow.com/questions/27228635/how-can-a-sqlalchemy-query-use-mysqls-regexp-operator
not sure if it would be sufficient to support | (OR) operator through hard coding, which will allow multi-selects
for my current need, hard coded support of OR operator, or mysql support of regex would be sufficient, but that is not a complete solution

I'm working on a pull request.
But see http://datatables.net/forums/discussion/33699/search-regex-sub-expression-error

Sorry for not having the time before now to look into that, but go on with
the pull request and will help asap! Thanks
On Mar 8, 2016 8:14 PM, "Lou King"<EMAIL_ADDRESS>wrote:

I'm working on a pull request.
But see
http://datatables.net/forums/discussion/33699/search-regex-sub-expression-error
—
Reply to this email directly or view it on GitHub
https://github.com/Pegase745/sqlalchemy-datatables/issues/40#issuecomment-193923756
.

Thanks. I have two pull requests in now, for #38 and this issue
Not sure how much you will like this one because it makes use of special features provided by mysql and postgresql dialects
Also not handled well is invalid regex from table search box, query outstanding to dataTables. I can continue working on this aspect or maybe it's a dataTables change depending on Allan's answer.


Modularize the runtime

Not to require too much from different targets some parts of the runtime should be made modular with a way to query for different capabilities:

actor model,
RBS,
embedded compiler.

Needs #55


Buggy static analyse with phpstan/phpstan-doctrine 1.2.6 - 1.2.8

Version: 1.2.6 to 1.2.8
Very buggy static analyse - sometimes PHPStan is ok and sometimes reports manz errors
Example code:
<?php declare(strict_types = 1);

namespace App\Entities;

use Doctrine\ORM\Mapping as ORM;
use App\Repositories\CountryRepository;

#[ORM\Entity(repositoryClass: CountryRepository::class)]
#[ORM\Table(name: 'countries')]
class Country
{

	#[ORM\Id]
	#[ORM\Column(type: 'integer')]
	#[ORM\GeneratedValue]
	private int $id;

	#[ORM\Column(type: 'string', nullable: false)]
	private string $code;

	#[ORM\Column(type: 'string', nullable: false)]
	private string $country;

	public function getId(): int
	{
		return $this->id;
	}

	public function getCode(): string
	{
		return $this->code;
	}

	public function getCountry(): string
	{
		return $this->country;
	}

	public function setCode(string $code): void
	{
		$this->code = $code;
	}

	public function setCountry(string $country): void
	{
		$this->country = $country;
	}

}
?>

<?php declare(strict_types = 1);

namespace App\Repositories;

use App\Entities\Country;
use App\Model\EntityRepository;

/**
 * @extends EntityRepository<Country>
 */
final class CountryRepository extends EntityRepository
{

}
?>

<?php declare(strict_types = 1);

namespace App\Model;

use Doctrine\ORM\EntityRepository as DoctrineEntityRepository;

/**
 * @template TEntityClass of object
 * @extends  DoctrineEntityRepository<TEntityClass>
 */
abstract class EntityRepository extends DoctrineEntityRepository
{

}

tests/object-manager.php
<?php declare(strict_types = 1);

return App\Bootstrap::boot()
	->createContainer()
	->getByType(App\Model\EntityManagerDecorator::class);

phpstan.neon
parameters:
	level: 8

	doctrine:
		repositoryClass: App\Model\EntityRepository
		objectManagerLoader: tests/object-manager.php

composer packages versions:
beberlei/doctrineextensions	v1.3.0
contributte/console v0.9.1
contributte/di	v0.5.1
doctrine/annotations	1.13.2
doctrine/cache	1.12.1
doctrine/collections	1.6.8
doctrine/common	3.2.1
doctrine/dbal	2.13.7
doctrine/deprecations	v0.5.3
doctrine/event-manager	1.1.1
doctrine/inflector	2.0.4
doctrine/instantiator	1.4.0
doctrine/lexer	1.2.2
doctrine/orm	2.11.1
doctrine/persistence	2.3.0
latte/latte	v2.10.8
nette/application	v3.0.8
nette/bootstrap	v3.0.2
nette/caching	v3.0.2
nette/component-model	v3.0.2
nette/di	v3.0.12
nette/finder	v2.5.3
nette/forms	v3.0.7
nette/http	v3.0.7
nette/mail	v3.1.8
nette/neon	v3.3.2
nette/php-generator	v3.6.5
nette/robot-loader	v3.4.1
nette/routing	v3.0.2
nette/safe-stream	v2.5.0
nette/security	v3.0.6
nette/schema	v1.2.2
nette/tokenizer	v3.1.0
nette/utils	v3.2.7
nettrine/annotations	v0.7.0
nettrine/cache	v0.3.0
nettrine/dbal	v0.7.0
nettrine/extensions-beberlei	v0.2.0
nettrine/orm	v0.8.2
psr/cache	3.0.0
psr/container	2.0.2
symfony/console	v5.4.3
symfony/deprecation-contracts	v3.0.0
symfony/polyfill-ctype	v1.24.0
symfony/polyfill-intl-grapheme	v1.24.0
symfony/polyfill-intl-normalizer	v1.24.0
symfony/polyfill-mbstring	v1.24.0
symfony/polyfill-php72	v1.24.0
symfony/polyfill-php73	v1.24.0
symfony/polyfill-php80	v1.24.0
symfony/service-contracts	v3.0.0
symfony/string	v6.0.3
tracy/tracy	v2.7.8

Dev Packages
nette/tester	v2.4.1
phpstan/extension-installer	1.1.0
phpstan/phpstan	1.4.4
phpstan/phpstan-deprecation-rules	1.0.0
phpstan/phpstan-doctrine	1.2.8
phpstan/phpstan-nette	1.0.0
phpstan/phpstan-strict-rules	1.1.0

Error report:
 ------ -----------------------------------------------------------------------
  Line   app/Entities/Country.php
 ------ -----------------------------------------------------------------------
  16     Property App\Entities\Country::$id is never written, only
         read.
         💡 See:
         https://phpstan.org/developing-extensions/always-read-written-propert
         ies
 ------ -----------------------------------------------------------------------

So sometimes you see the error in Country.php and sometimes you don’t? That’s really weird.
Can you try running with bleedingEdge too? https://phpstan.org/blog/what-is-bleeding-edge

With bleedingEdge PHPStan report no errors.

Try to run it for a while, my point was that you should see more errors when PHPStan also fails with never written, only              read.. Because my suspicion is that reading the metadata silently fails but bleedingEdge would show it thanks to EntityMappingExceptionRule being enabled.

Also try it without objectManagerLoader, you might not need it anymore.

parameters:
	level: 8

	doctrine:
		repositoryClass: App\Model\EntityRepository
		#objectManagerLoader: tests/object-manager.php

includes:
	- vendor/phpstan/phpstan/conf/bleedingEdge.neon

always show error:
 ------ ----------------------------------------------------------------------------------
  Line   app/Entities/User.php
 ------ ----------------------------------------------------------------------------------
  20     Property App\Entities\User::$id is never written, only read.
         💡 See: https://phpstan.org/developing-extensions/always-read-written-properties
 ------ ----------------------------------------------------------------------------------

It is very interesting most my entities are not reported.

no, enties are loaded by Nette RobotLoader

composer.json
{
	"name": "petrparolek/some-project",
	"description": "",
	"type": "project",
	"require": {
		"php": ">= 8.0.0",

		"nette/application": "~3.0.0",
		"nette/bootstrap": "~3.0.0",
		"nette/caching": "~3.0.0",
		"nette/di": "~3.0.5",
		"nette/finder": "^2.5",
		"nette/forms": "~3.0.0",
		"nette/http": "~3.0.0",
		"nette/mail": "^3.0",
		"nette/robot-loader": "^2.4 || ^3.0",
		"nette/safe-stream": "^2.4",
		"nette/security": "~3.0.0",
		"nette/tokenizer": "^3.0",
		"nette/utils": "^3.2",
		"latte/latte": "~2.10.0",
		"tracy/tracy": "~2.7.0",

		"nettrine/dbal": "~0.7.0",
		"nettrine/orm": "~0.8.0",
		"nettrine/extensions-beberlei": "^0.2.0"
	},
	"require-dev": {
		"phpstan/phpstan": "^1.0",
		"phpstan/phpstan-deprecation-rules": "^1.0",
		"phpstan/phpstan-doctrine": "^1.0",
		"phpstan/phpstan-nette": "^1.0",
		"phpstan/phpstan-strict-rules": "^1.0",
		"phpstan/extension-installer": "^1.0",

		"nette/tester": "~2.4.0"
	},
	"autoload": {
		"psr-4": {
			"App\\": "app"
		}
	},
	"minimum-stability": "stable",
	"config": {
		"allow-plugins": {
			"phpstan/extension-installer": true,
			"dealerdirect/phpcodesniffer-composer-installer": true
		}
	}
}

That’s it, I’m not surprised it doesn’t work.
You need to load them in Composer, or create a custom script that registers RobotLoader, and pass it to PHPStan via bootstrapFiles.

Thanks if I loaded all classes by Composer, there bno error reported


In parallel.isolated(), allow to execute the function in the same process

In blueetl_core.parallel.isolated(), execute the function in the same process if BLUEETL_JOBLIB_JOBS is set to 1.

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 88.71%. Comparing base (9b7c7ba) to head (d481a64).

Additional details and impacted files
@@            Coverage Diff             @@
##             main      #11      +/-   ##
==========================================
+ Coverage   88.65%   88.71%   +0.05%
==========================================
  Files           6        6
  Lines         379      381       +2
  Branches       86       87       +1
==========================================
+ Hits          336      338       +2
  Misses         24       24
  Partials       19       19

Flag
Coverage Δ

pytest
88.71% <100.00%> (+0.05%)
:arrow_up:

Flags with carried forward coverage won't be shown. Click here to find out more.

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Win32: Expose native HDC with glfwGetWGLContextDC

OpenXR requires both HDC and HGLRC, so I added getter for HDC.

I suppose GetDC(glfwGetWin32Window()) would do so this is probably not needed.

Yes, GetDC will work fine and will return the same DC as the GLFW function would, as our window gets its own private one. That needs to be noted (at least) in the documentation for the Win32 native access functions, though.

Closing this as fixed by the documentation update showing the GetDC solution above.


What's the bitrate?

Hi this looks like something I really wanted, but I'm not sure what's the bitrate you achieved? I'm looking to transfer some "big" data files (say over 10MB) via audio so not sure if this project will work for me?

Understand that bitrates will be different under different profiles. I think the cable profile should have the highest bitrate? but not sure what it is?

Hi @jungleau
The cable profile goes about 64 kbps. If you're looking to transfer files 10MB+, you should use BLE or WiFi.

Hi @brian-armstrong
Thanks for the quick response. I actually think 64kbps is OK for me as it means that 10MB data can be transferred in about 21 minutes. Unfortunately using the 3.5mm audio jack is only option to transfer data in my situation. Thanks so much! I will try it out

Why do the cable-64k profile only sends 7500 characters for me and then stops (interestingly it coincides with "frame_length": 7500 in quiet-profiles.json) ?

Honestly this information belongs prominently displayed in the projects main page documentation as it's the very essence of the purpose of this code's practical usage.


is v0.0.52 available on bioconda?

Hi, I wonder if epic2 v0.0.52 is available on bioconda? We tried both updating and re-installing the epic2 package, but the version was still 0.0.41, and the "--guess-bampe" option that we would like to use seemed unavailable on 0.0.41 version. Our environment is Linux bash 4.2.46(2) with python 3.6. Thanks!

got the issue fixed, switched into the conda-forge channel and also updated the version of libgcc-ng package, which reported as a conflict

I just upload to PyPI and conda-bot takes care of adding it to bioconda. So
it should be there. I'm happy you found the solution. Hope epic2 works for
your use case :)
On Fri, Nov 26, 2021 at 7:58 PM tingliu-uhn @.***>
wrote:

got the issue fixed, switched into the conda-forge channel and also
updated the version of libgcc-ng package, which reported as a conflict
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/biocore-ntnu/epic2/issues/56#issuecomment-980302473,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AEHURUQHYLGCMJRZY2DOHIDUN7KGXANCNFSM5I3DYNBA
.
Triage notifications on the go with GitHub Mobile for iOS
https://apps.apple.com/app/apple-store/id1477376905?ct=notification-email&mt=8&pt=524675
or Android
https://play.google.com/store/apps/details?id=com.github.android&referrer=utm_campaign%3Dnotification-email%26utm_medium%3Demail%26utm_source%3Dgithub.

thanks!


Create nextjs project

Project created
https://github.com/bedirhanyildirim/fsmvu.com/commit/a896df46ea90ba20227ae3de1e96ee572eda5ccb


Makefile: fix clean target

We were trying to crean the wrong yml images.

We actually define them as variables here. Can we just use the var names in the clean: target?

Ah correct. I did define that. Yes much better.


Minecraft add prompt files、control_primitives and control_primitives_context

The corresponding code files were migrated from voyager, including the contents of the three folders prompt,control_primitives and control_primitives_context. Prompt was migrated to metagpt/prompt/minecraft. control_primitives and control_primitives_context were migrated to metagpt/action/minecraft.

Ok, LGTM


FlatList landscape mode bugs getItemLayout

After orientation mode === LANDSCAPE currentIndex = 0.
I have grid item, after select item - open carousel(FlatList) on currentIndex, and if i rotate device my current item in carousel set 0.
This example
slider.js
componentDidMount() {
    const wait = new Promise(resolve => setTimeout(resolve, 500));  // Smaller number should work
    wait.then(() => {
      this.list.scrollToIndex({
        viewPosition: 0.5,
        index: this.props.page || 0,
        animated: false,
      });
    });
    this._setScrollTarget(this.props);
  }

componentWillReceiveProps(nextProps) {
    if (...) {
      this._setScrollTarget(nextProps);
    }
  }
_setScrollTarget(props) {
    const {
      width,
      page,
    } = props;
    this.list.scrollToOffset({
        x: ((width) * page),
        y: 0,
        animated: false,
      });
  }
_getItems = (media, width, height) => {
    const { MediaItem, page } = this.props;
    const items = [];
    for (let i = 0; i <= media.length - 1; i++) {
      const item = media[i];
      items.push(
          <MediaItem
            key={`page-${i}`}
            screen={{ width, height }}
            currentIndex={page}
            {...item}
          />,
      );
    }
    return items;
  };
 ...
 const items = this._getItems(media, width, height);
    return (
      <FlatList
        ref={(ref) => { this.list = ref; }}
        style={{
          flex: 1,
        }}
        horizontal
        pagingEnabled
        scrollEnabled={enabled}
        removeClippedSubviews={false}
        scrollToEnd={this._onScrollEnd}
        data={items}
        renderItem={({ item }) => item}
        getItemLayout={this._getItemLayout}
        shouldItemUpdate={this._shouldItemUpdate}
      />
    );

Main.js
...
return (
<View
style={{flex: 1}}
onLayout={this._onLayout} // change width/height orientation
>
 <MediaSlider
          media={files} // data files
          MediaItem={FileViewer} // files
          page={selectedIndex} // currentIndex
          width={this.state.layout.width}
          height={this.state.layout.height}
        />
</View>
)

this video - http://take.ms/DHdyO
Additional Information
React Native version: v0.43.1
Platform: Both
Operating System: MacOS

I had the exact same issue, it's not an easy one to solve. You basically wanna force a rerender after the rotation with onLayout. This however does not really work reliably. What we ended up opting for was writing native bridging components to give us the rotation value from 0 to 270 through listeners and based on that do a non-native rotation through transforms.

You didn't include your _getItemLayout implementation - it's hard to figure out what's wrong with incomplete code.

const { height, width } = Dimensions.get('window');

class FileSlider extends PureComponent {
  constructor() {
    super();
    this.state = {
      isLandscape: false,
      layout: {
        height,
        width,
      },
    };
  }

  _onLayout = (event) => {
    this.setState({
      layout: {
        height: event.nativeEvent.layout.height,
        width: event.nativeEvent.layout.width,
      },
    });
  };

return (
      <View
        style={{
          position: 'relative',
          flex: 1,
          backgroundColor: 'black',
        }}
        onLayout={this._onLayout}
      >
        <MediaSlider
          media={files}
          MediaItem={FileViewer}
          selectedIndex={selectedIndex}
          enabled={!videoPlay}
          width={this.state.layout.width}
          height={this.state.layout.height}
          onPageChanged={onItemSelected}
        />
    </View>
)

@sahrens
The only solution at the moment,
slider.js
componentWillReceiveProps(nextProps) {
    if (
      nextProps.width !== this.props.width
      || nextProps.media !== this.props.media
    ) {
      setTimeout(() => {
        this.list.scrollToIndex({
          viewPosition: 0.5,
          index: this.props.selectedIndex,
          animated: false,
        });
      }, 0);
    }
  }

But in this solution there is 1 big minus - this is a delay, and flickering(((

Hi there! This issue is being closed because it has been inactive for a while. Maybe the issue has been fixed in a recent release, or perhaps it is not affecting a lot of people. Either way, we're automatically closing issues after a period of inactivity. Please do not take it personally!
If you think this issue should definitely remain open, please let us know. The following information is helpful when it comes to determining if the issue should be re-opened:

Does the issue still reproduce on the latest release candidate? Post a comment with the version you tested.
If so, is there any information missing from the bug report? Post a comment with all the information required by the issue template.
Is there a pull request that addresses this issue? Post a comment with the PR number so we can follow up.

If you would like to work on a patch to fix the issue, contributions are very welcome! Read through the contribution guide, and feel free to hop into #react-native if you need help planning your contribution.


Fix hash of ndarrays, add dtype in simple stats

Codecov Report
All modified and coverable lines are covered by tests :white_check_mark:

Project coverage is 43.66%. Comparing base (11f2834) to head (1967aaa).

Additional details and impacted files
@@            Coverage Diff             @@
##           master       #8      +/-   ##
==========================================
+ Coverage   41.90%   43.66%   +1.76%
==========================================
  Files           6        6
  Lines         284      284
==========================================
+ Hits          119      124       +5
+ Misses        165      160       -5

:umbrella: View full report in Codecov by Sentry.
:loudspeaker: Have feedback on the report? Share it here.


Add a test with roles mapping specifying only user

Description
Adding a test to check create role mapping specifying only user
Issues Resolved
#191
By submitting this pull request, I confirm that my contribution is made under the terms of the Apache 2.0 license.
For more information on following Developer Certificate of Origin and signing off your commits, please check here.

Thanks @rblcoder LGTM.


Exact stock level shouldn't be exposedto the end client

As we discussed, front-end shouldn't be aware of exact stock level for particular product.
This is work in progress - cart quantity widget should be upated and it shouldn't allow user to submit a form when quantity is wrong.

@benekex2 could you take a look and update cart line quantity widget on cart details view?

I think we're sacrificing user experience for the sake of faux secrecy. As a customer I can still trivially determine the exact amount left in stock by trying to add increasingly lower number.

@patrys Docs updated.


[SPARK-44322][CONNECT] Make parser use SqlApiConf instead of SQLConf.

What changes were proposed in this pull request?
This makes the AbstractParser use SqlApiConf instead of SQLConf, and it moves the appropriate configurations.
Why are the changes needed?
We are moving (datatype) parsing into the sql/api package. This does not use SQLConf, but uses SqlApiConf instead.
Does this PR introduce any user-facing change?

How was this patch tested?
Existing tests.

cc @amaliujia @zhenlineo

Merging this. Test is flaky.


Verify that all managed dlls are signed and have the same public key token

We need this verification once https://github.com/aspnet/dnx/issues/2615 is completed.

/cc @ajaybhargavb @cesarbs
@muratg - please triage accordingly

@ajaybhargavb this is something the verifier tool do, right?

Yes, but not sure if it verifies public key tokens.

This is not urgent, but we'll need to do it at some point to ensure the identity of the packages stay the same in the future.  We may need to add the functionality to read the public key tokens, and compare them with a single hardcoded token.

The tool verifies that they are strong-name signed, but I think not the specific token. Can move the bug to DnxTools...

aspnet/DnxTools@feda5f471c847ce3d0cb51242aab3c8ecf97f9ba


Questions on Silifuzz

Hi,
We are testing silifuzz to detect defects/bugs on the CPU. I am writing to ask few questions, which I have listed down below:

The Corpus provided https://github.com/google/silifuzz#using-pre-generated-corpus, what type of instructions are included in the corpus.
Can you update the WIKI for the latest code change.
In this commit d9056056306b9871798fc8f318e30f3cc1d3fe4b, supported platform included intel-sapphire-rapids, does unicorn also support saphire-rapids new instructions.

Hey @jafarsarif10, thanks for reaching out.

The corpus was generated based on the included unicorn proxy. It likely includes the basic x86/x87 instructions + limited SSE/AVX  (based on what the emulator supports). Definitely no AVX512
I believe the README is up-to-date. Is there anything specific that it's missing?
The "support" (quoted b/c it's limited to being able to recognize the platform) for SRP predates that commit. The included unicorn proxy does not support any SRP instructions.

Hey @jafarsarif10 ,
the --shard_list_file flag expects a file name containing a list of shard paths separated by line breaks. E.g. in your case  the following should work:
./orchestrator/silifuzz_orchestrator_main --duration=30s --runner=./runner/reading_runner_main_nolibc --shard_list_file=shards.txt

where shards.txt contents is
/tmp/wd/runnable-corpus.00001


Ability pass a Sinon Sandbox

My project has a Sinon sandbox used to restore all stub/spies/mocks on a afterEach global hook.
I would like to configure mockClient to use it like mockClient(Client, { sandbox: mySandbox }) or any other configuration method

I like the idea of having a single point of resetting all mocks.
I've added the ability in v3.1.0-beta.0. You can test it if you have a moment.
The API is exactly as you suggested: mockClient(client, { sandbox: mySandbox })


feat(Modal): create TwoScreenModal variant

Overview

create new TwoScreenModal variant

the /account/billing page in the monolith uses two modals that have an initial screen with a continue button, then a confirm screen within the same modal. this variant is to make sure this two screen modal pattern is more accessible, in that when you click the continue button, the x button at the top right of the modal should be selected and the new title of the modal should be announced.
for example, the change plan modal:

BEFORE: ☹

when you click Continue button to go to the confirm screen of the modal, the Upgrade button at the bottom of the modal is highlighted and the new modal title is not announced
NOW: 😄

when you click the Continue button to go to the confirm screen of the modal, the new modal title is announced and the X button at the top is highlighted
PR Checklist

[ ] Related to designs: https://www.figma.com/file/DeETaHGvA6uAXDZwGyjCFH/Upgrade-Downgrade-Pause
[ ] Related to JIRA ticket: EGG-2633
[ ] I have run this code to verify it works
[ ] This PR includes unit tests for the code change
[ ] This PR includes testing instructions tests for the code change
[ ] The alpha package of this PR is passing end-to-end tests in all relevant Codecademy repositories

Testing Instructions

Don't make me tap the sign.
PR Links and Envs

Repository
PR Link
PR Env

Monolith
Monolith PR
Monolith Env

📬Published Alpha Packages:@codecademy/gamut-kit@0.6.153-alpha.47a396.0@codecademy/gamut-labs@32.4.1-alpha.47a396.0@codecademy/gamut@48.1.0-alpha.47a396.0@codecademy/monaco@0.6.56-alpha.47a396.0<EMAIL_ADDRESS>
🚀 Styleguide deploy preview ready!https://62c480e2c3fe5608fb82f1cd--gamut-preview.netlify.appDeploy Logs

📬Published Alpha Packages:@codecademy/gamut-kit@0.6.153-alpha.2c149b.0@codecademy/gamut-labs@32.4.1-alpha.2c149b.0@codecademy/gamut@48.1.0-alpha.2c149b.0@codecademy/monaco@0.6.56-alpha.2c149b.0<EMAIL_ADDRESS>
📬Published Alpha Packages:@codecademy/gamut-kit@0.6.153-alpha.713bde.0@codecademy/gamut-labs@32.4.1-alpha.713bde.0@codecademy/gamut@48.1.0-alpha.713bde.0@codecademy/monaco@0.6.56-alpha.713bde.0<EMAIL_ADDRESS>
🚀 Styleguide deploy preview ready!https://62c48e19c1a03d18a0d03d2e--gamut-preview.netlify.appDeploy Logs

📬Published Alpha Packages:@codecademy/gamut-kit@0.6.153-alpha.1c0e5e.0@codecademy/gamut-labs@32.4.1-alpha.1c0e5e.0@codecademy/gamut@48.1.0-alpha.1c0e5e.0@codecademy/monaco@0.6.56-alpha.1c0e5e.0<EMAIL_ADDRESS>
🚀 Styleguide deploy preview ready!https://62c5964f7a1b98008f2b68ee--gamut-preview.netlify.appDeploy Logs

🚀 Styleguide deploy preview ready!https://62c5a4a68cc4580fe187a806--gamut-preview.netlify.appDeploy Logs

📬Published Alpha Packages:@codecademy/gamut-kit@0.6.153-alpha.4b5cb5.0@codecademy/gamut-labs@32.4.1-alpha.4b5cb5.0@codecademy/gamut@48.1.0-alpha.4b5cb5.0@codecademy/monaco@0.6.56-alpha.4b5cb5.0<EMAIL_ADDRESS>
🚀 Styleguide deploy preview ready!https://62c5ab34274ef41722cd9a8a--gamut-preview.netlify.appDeploy Logs

📬Published Alpha Packages:@codecademy/gamut-kit@0.6.153-alpha.45d5c6.0@codecademy/gamut-labs@32.4.1-alpha.45d5c6.0@codecademy/gamut@48.1.0-alpha.45d5c6.0@codecademy/monaco@0.6.56-alpha.45d5c6.0<EMAIL_ADDRESS>
🚀 Styleguide deploy preview ready!https://62c5add6355c3018d1ab6202--gamut-preview.netlify.appDeploy Logs

📬Published Alpha Packages:@codecademy/gamut-kit@0.6.164-alpha.fc5532.0@codecademy/gamut-labs@32.7.7-alpha.fc5532.0@codecademy/gamut@48.3.0-alpha.fc5532.0@codecademy/monaco@0.6.59-alpha.fc5532.0<EMAIL_ADDRESS>
🚀 Styleguide deploy preview ready!https://62d72663b37fce29836ee9d9--gamut-preview.netlify.appDeploy Logs

🚀 Styleguide deploy preview ready!https://62d80fecb335a1603ef85eb9--gamut-preview.netlify.appDeploy Logs

📬Published Alpha Packages:@codecademy/gamut-kit@0.6.164-alpha.ba27f8.0@codecademy/gamut-labs@32.7.7-alpha.ba27f8.0@codecademy/gamut@48.3.0-alpha.ba27f8.0@codecademy/monaco@0.6.59-alpha.ba27f8.0<EMAIL_ADDRESS>
🚀 Styleguide deploy preview ready!https://62d81888f8cea603300de14d--gamut-preview.netlify.appDeploy Logs

📬Published Alpha Packages:@codecademy/gamut-kit@0.6.164-alpha.e0701e.0@codecademy/gamut-labs@32.7.7-alpha.e0701e.0@codecademy/gamut@48.3.0-alpha.e0701e.0@codecademy/monaco@0.6.59-alpha.e0701e.0<EMAIL_ADDRESS>
🚀 Styleguide deploy preview ready!https://62d81f6c3e5ae30b7193e4bb--gamut-preview.netlify.appDeploy Logs


Fix typo on tables.

Sorry, I've overlooked wrong table formatting for markdown.
I fixed it.
Even though, it might be a trivial thing, would you please merge this fix?

LGTM !


Fix an incorrect env var in conversation-continuity.md

Changes the MANDRILL_INGRESS_API_KEY env var to MAILGUN_INGRESS_SIGNING_KEY, which is the correct one according to https://github.com/chatwoot/chatwoot/blob/develop/.env.example#L95

@lborgav Thanks for the changes


Authentication failed

I have been using this Sensi integration for a few weeks. Today I had a notification that the authorization for the Sensi integration was expired. I went to the Integrations page in Home Assistant and clicked "Re-configure" for the Sensi integeration.
A modal box with no text and just a "sleepy eyeball" appeared. I entered my Sensi account password. Authentication failed. I went to the mobile app on my phone and changed the password. I was able to log into the mobile app with the new password. I used the new password in the Sensi integration and again, authentication failed.

This started for me as well. Removed and reinstalled but cannot get past the credentials screen.
Authentication failed.

Most probably Sensi backend changed the verification, this has happened before https://github.com/iprak/sensi/issues/28.

+1 for ha ing this issue pop up today.

Same here, I got the auth request, tried my password, and then removed and reinstalled but cannot get past the credentials screen.

Same for me...

Issue started today for me as well.

Same here.....

Same issue for me too

same.

There is a new header required:
rct: xxxxxxx

It changes with every login based on MITMPROXY and Android app.
The code to create the value seems to be at least partially in com.emerson.sensi.util.recaptcha
So far I don't know yet how exactly it is calculated....

I had filtered to traffic with Sensi only, haha.
There are calls to:
https://www.recaptcha.net/recaptcha/api3/mri
https://www.recaptcha.net/recaptcha/api3/mrr
https://www.recaptcha.net/recaptcha/api3/mlg

It seems like the first one gets static data (mostly) and the response to mrr contains the header we need for rct.
Need some more digging but should be fairly straight forward.
Maybe someone finds docu for that API?
SEEMS to be Google Reccaptcha V3 (maybe)

Add me to the pile 😁

I am having this issue as well

I am also having this issue.

+1

+1 same issue

I really don't think any more +1 comments are really helping the issue. This is going to happen for EVERYONE!
I am pretty sure the repo owner got that point and maybe we should limit comments to things that are helpful to fixing the issue.

Key needed:
6LdS6SYpAAAAAFCti9uo4Yg47fSIGygzTGl_6lEV

This is from Android app...

+1 - but don't understand how to fix it.

The integration through homekit still works, but doesn't have as many options.

@troyboy27 @omarquis This cannot be addressed without code changes. The authentication at Sensi end has changed.

I am also investigating the  {"grant_type":"refresh_token","refresh_token": "some_random_string"} , if the refresh_token is long lived and how to acquire it.  More than likely it will rely on the aforementioned recaptcha.
Will report when I know more...

client_id="ios"

client_secret="8m7YoDninTVasvZ42;^nwrA}%FPWuVjH"

data = {
        "client_id": client_id,
        "client_secret": client_secret,
        "grant_type": "refresh_token",
        "refresh_token": refresh_token
    }

headers = {
        "accept": "*/*",
        "accept-language": "en-US,en;q=0.9",
        "content-type": "application/x-www-form-urlencoded; charset=utf-8",
        "user-agent": "Sensi/255 CFNetwork/1490.0.4 Darwin/23.2.0",
        "x-api-version": "2",
        "x-app-version": "8.6.2",
        "x-os-version": "17.2.1",
        "x-platform": "iOS"
    }

More than likely it will rely on the aforementioned recaptcha.

You get that as part of the auth process. You generally get the token and a refresh token. Once the token expires you exchange the refresh token for a new pair. That step requires the recaptcha as well.
BUT, Google has libraries that take care of that on Android, not sure if Sensi had to implement sth for iOS or if there is a library or even a different process...
Since it does not matter for us we might get lucky with iOS and the way it's done there.
Can you log traffice between the app and sensi/google? Using sth like MITM proxy or so.
That is how I found out about the recaptcha process...

I'll take some of what I said back... once you have the refresh tokoen you do not need recaptcha anymore!

have been using that in the sensi service for HA as a workaround.

I tried that and it is failing... how did you tell HA to use it? I tried to enter it into the box that asks for auth....
but not working.

looks like it does the following
https://www.recaptcha.net/recaptcha/api3/mri
https://firebaselogging-pa.googleapis.com/v1/firelog/legacy/batchlog
https://sensiapi.io/status
https://oauth.sensiapi.io/token?device=XXXX

have been using that in the sensi service for HA as a workaround.

I tried that and it is failing... how did you tell HA to use it? I tried to enter it into the box that asks for auth.... but not working.

I tested the methodology outside HA and then provided it via configurable variable inside the auth.py. Maybe @iprak can expose this variable in the configuration.

That makes sense....

From: Joe King @.>
Sent: Monday, March 11, 2024 1:43:06 PM
To: iprak/sensi @.>
Cc: Stephan Leuschner @.>; Comment @.>
Subject: Re: [iprak/sensi] Authentication failed (Issue #38)
have been using that in the sensi service for HA as a workaround.
I tried that and it is failing... how did you tell HA to use it? I tried to enter it into the box that asks for auth.... but not working.
I tested the methodology outside HA and then provided it via configurable variable inside the auth.py. Maybe @iprakhttps://github.com/iprak can expose this variable in the configuration.
—
Reply to this email directly, view it on GitHubhttps://github.com/iprak/sensi/issues/38#issuecomment-1989057015, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AAIUMSUVBUOK4K5WL77ON6LYXX3LVAVCNFSM6AAAAABEHWELPSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSOBZGA2TOMBRGU.
You are receiving this because you commented.Message ID: @.***>

WOW! Thanks for all the research Stephan and Joe! I'm more then willing to
test any code y'all come up with on my system.
On Mon, Mar 11, 2024 at 12:46 PM Stephan Leuschner @.***>
wrote:

That makes sense....

From: Joe King @.>
Sent: Monday, March 11, 2024 1:43:06 PM
To: iprak/sensi @.>
Cc: Stephan Leuschner @.>; Comment @.>
Subject: Re: [iprak/sensi] Authentication failed (Issue #38)
have been using that in the sensi service for HA as a workaround.
I tried that and it is failing... how did you tell HA to use it? I tried
to enter it into the box that asks for auth.... but not working.
I tested the methodology outside HA and then provided it via configurable
variable inside the auth.py. Maybe @iprakhttps://github.com/iprak can
expose this variable in the configuration.
—
Reply to this email directly, view it on GitHub<
https://github.com/iprak/sensi/issues/38#issuecomment-1989057015>, or
unsubscribe<
https://github.com/notifications/unsubscribe-auth/AAIUMSUVBUOK4K5WL77ON6LYXX3LVAVCNFSM6AAAAABEHWELPSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSOBZGA2TOMBRGU>.
You are receiving this because you commented.Message ID: @.***>
—
Reply to this email directly, view it on GitHub
https://github.com/iprak/sensi/issues/38#issuecomment-1989063594, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/ACHE2LI4VXFN7L7G5HDKDZLYXXUVXAVCNFSM6AAAAABEHWELPSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSOBZGA3DGNJZGQ
.
You are receiving this because you were mentioned.Message ID:
@.***>

All my work is based on the latest android version 8.6.3
You get the refresh_token as part of the auth flow. 'All' we need is the recaptcha value...

Oh I misread  that comment .. I thought that recaptcha value was not needed.
The Android client uses a WebView to host reCaptcha content. I will play with some Python libraries which offer reCaptcha implementation.

@macwriter
Sensi has removed previous authentication mechanism. Even the previous Android app 8.6.2 fails to login. My initial hope was that there was a fall back mechanism tied to the appVersion passed as header. Even faking "ios" did not help.
I am not seeing how would one get the refresh_token ?

It does not appear that the 'grant_type':'refresh_token' is working for me anymore.
The app is now using the {'grant_type': 'password'} with the rpt: header.

Not sure if this helps, but I went to there website and signed in with inspect open.  Did a search for token on the network and saw this for a device path listing.   The ***** after FL33T is my accounts username.
Headers Tab
Request URL:                     https://oauth.sensiapi.io/token?device=FL33T-*****-581025838
:path:                                 /token?device=FL33T-*****-581025838
Payload Tab
client_id: fleet

Which website?

From: Pheelix @.>
Sent: Tuesday, March 12, 2024 5:44:58 AM
To: iprak/sensi @.>
Cc: Stephan Leuschner @.>; Comment @.>
Subject: Re: [iprak/sensi] Authentication failed (Issue #38)
Not sure if this helps, but I went to there website and signed in with inspect open. Did a search for token on the network and saw this for a device path listing. The ***** after FL33T is my accounts username.
Headers Tab
Request URL: https://oauth.sensiapi.io/token?device=FL33T-*****-581025838
:path: /token?device=FL33T-*****-581025838
Payload Tab
client_id: fleet
—
Reply to this email directly, view it on GitHubhttps://github.com/iprak/sensi/issues/38#issuecomment-1991193041, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AAIUMSQTAWHQFJV4U2EDK63YX3MCVAVCNFSM6AAAAABEHWELPSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSOJRGE4TGMBUGE.
You are receiving this because you commented.Message ID: @.***>

https://manager.sensicomfort.com/
It's the same site someone would use if they paid for there subscription to access there thermostats from there site.

That's what I thought... Are you paying? I assume there is no functionality if you don't pay, right?

From: Pheelix @.>
Sent: Tuesday, March 12, 2024 7:45:17 AM
To: iprak/sensi @.>
Cc: Stephan Leuschner @.>; Comment @.>
Subject: Re: [iprak/sensi] Authentication failed (Issue #38)
https://manager.sensicomfort.com/
It's the same site someone would use if they paid for there subscription to access there thermostats from there site.
—
Reply to this email directly, view it on GitHubhttps://github.com/iprak/sensi/issues/38#issuecomment-1991464508, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AAIUMSQE6UXRTQB3EOT4OYLYX3TEZAVCNFSM6AAAAABEHWELPSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSOJRGQ3DINJQHA.
You are receiving this because you commented.Message ID: @.***>

nope, not paying, so no functionality.  But i figured it was worth a shot to see if it would help at all.  Tho atm I am using the Homekit method in HA to control my Sensi Touch.  But would be nice to see this up and running again.

It's definitely a good idea... Guess someone needs to pay to see what the actual API calls are and then test it with someone that's not paying to see if it works.

From: Pheelix @.>
Sent: Tuesday, March 12, 2024 7:48:45 AM
To: iprak/sensi @.>
Cc: Stephan Leuschner @.>; Comment @.>
Subject: Re: [iprak/sensi] Authentication failed (Issue #38)
nope, not paying, so no functionality. But i figured it was worth a shot to see if it would help at all. Tho atm I am using the Homekit method in HA to control my Sensi Touch. But would be nice to see this up and running again.
—
Reply to this email directly, view it on GitHubhttps://github.com/iprak/sensi/issues/38#issuecomment-1991469817, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AAIUMSS5VJO4XZSUOQCIARTYX3TR3AVCNFSM6AAAAABEHWELPSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSOJRGQ3DSOBRG4.
You are receiving this because you commented.Message ID: @.***>

site says first month is free, cancel any time. so I guess it could be tested without having to pay for it.

Actually, I don't think that is even needed. Just looked at the traffic....
The response looks VERY similar to the app and contains the required tokens.
@macwriter you already have modified sources... I think it would be super easy for you to check if the response tokens work.
Simply log into https://manager.sensicomfort.com/ and look at the traffic to grab the token from the oauth call.
I have a good feeling about this!
@Pheelix you might have solved the mystery for us...
@iprak  The website also uses recaptcha but it is fully browser based. I ASSUME that python can emulate a webbrowser in a way that you load the login page and let it do it's thing to take care of the recaptcha?

I can confirm, the tokens work!
Changed auth.py around line 67
    refresh_token = "copied from browser response"
    client_id = "fleet" # instead of android
    client_secret = "JLFjJmketRhj>M9uoDhusYKyi?zUyNqhGB)H2XiwLEF#KcGKrRD2JZsDQ7ufNven" # different secret

    post_data = {
        #"username": config.username,
        #"password": config.password,
        #"client_id": CLIENT_ID,
        #"client_secret": CLIENT_SECRET,
        #"grant_type": "password",
        "client_id": client_id,
        "client_secret": client_secret,
        "refresh_token": refresh_token,
        "grant_type": "refresh_token",
    }

Error in HA goes away after a restart...
I guess if @iprak can simulate the browser login then we are back in action!
I guess worst case solution would be to have the user login to the website and copy the refresh token and have that as an external config value that we have to paste. I guess other add-ons do the same where the user needs to create an account with company X and provide some keys manually.
I guess my manual fix will stop working as soon as my current token expires since I hard-coded the refresh token and it only works once. But if we can feed the initial refresh_token and than the addon keeps managing it like in the past it should work long term.
@Pheelix amazing catch!

@iprak I just looked at the code and noticed that it seems like you never really use the refresh_token. Is that right?
If I understood it right you are sending user/pwd again when the original token expires using "grant_type": "password".
That is not the intention of OAuth... Ideally your addon would never know my user/pwd and only save the 2 tokens.
Once the access token expires you ask for a fresh one using "grant_type": "refresh_token" and the saved refresh_token value.
That will give you a new pair and you repeat.
You only ever need user/pwd ONCE at the very beginning.... Then never again.
With this changed flow the user could provide a single valid refresh_token and no user/pwd and you don't have to worry about recaptcha since that seems to be needed only for the user/pwd exchange!

Python cannot emulate reCaptcha, some library attempt to do that but they either implement v2 or are paid. reCaptcha involves a rotating sort of token which is generated by reCaptcha library.
Sensi uses the latest google reCaptcha. In web, this
e.g. https://www.google.com/recaptcha/enterprise.js?render=6LebYk0pAAAAAIUlMrqCdXOq83pY2O4u-CxuTh28
returns an executing block which returns the token.
The ideal way to address would be to change the initial authentication itself. This is how authentication is implemented for 3rd party verification e.g. https://sensiapi.io/authorize
In my experimentation, extracting token from web and passing to Python did not work. There might be additional headers/cookies.
Yes, you are right about refresh_token. I just login in again; I could not confirm when refreshing would be adequate.

You refresh when the page rejects the auth token. So instead of login again, you refresh.
Can Python emulate a webbrowser? If so, it would be easy to load the login page, fill in user/pwd and grab the tokens.
Not sure why you said using the extracted token in python does not work? See my prior comment.. it DOES work 100%!
But you need more than the token! There are 2 other values that change. Both are in my code snippet.
From: Indu Prakash @.>
Sent: Tuesday, March 12, 2024 9:09 AM
To: iprak/sensi @.>
Cc: Stephan Leuschner @.>; Comment @.>
Subject: Re: [iprak/sensi] Authentication failed (Issue #38)
Python cannot emulate reCaptcha, some library attempt to do that but they either implement v2 or are paid. reCaptcha involves a rotating sort of token which is generated by reCaptcha library.
Sensi uses the latest google reCaptcha. In web, this
e.g. https://www.google.com/recaptcha/enterprise.js?render=6LebYk0pAAAAAIUlMrqCdXOq83pY2O4u-CxuTh28
returns an executing block which returns the token.
The ideal way to address would be to change the initial authentication itself. This is how authentication is implemented for 3rd party verification e.g. https://sensiapi.io/authorize
In my experimentation, extracting token from web and passing to Python did not work. There might be additional headers/cookies.
Yes, you are right about refresh_token. I just login in again; I could not confirm when refreshing would be adequate.
—
Reply to this email directly, view it on GitHubhttps://github.com/iprak/sensi/issues/38#issuecomment-1991615784, or unsubscribehttps://github.com/notifications/unsubscribe-auth/AAIUMSWPQTCC3BF4UWIFMQDYX35ANAVCNFSM6AAAAABEHWELPSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSOJRGYYTKNZYGQ.
You are receiving this because you commented.Message ID<EMAIL_ADDRESS>

I see possible solutions here:
A: Change the setup flow to ask the user for a refresh_token. Explain that the user can get it by logging into https://manager.sensicomfort.com/ and then copying the value using the browser developer tools. This step is needed ONCE to setup. After that the refresh_token can be exchanged for an auth_token and a new refresh_token. Whenever sensi complains about expired credentials simply exchange again. This is the simplest impementation and would not require much change I think?!
B: Have python emulate a webwroser and login to https://manager.sensicomfort.com/ using username/pwd and then grab the refresh_token from the web traffic. Would be easy in and Android WebView, not sure if Python can do that.
Once you have that token the flow should be like in A. Don't store user/pwd but only refresh_token and renew when needed.
This hardcoded snippet DOES work until the token expires (hard coded refresh_token works only once.
But by replacing the hard-coded token with one initially provided by the user and then updated on every refresh this really works.
I see all my thermostats in HA as we speak!
auth.py around line 68ish
refresh_token = "copied from browser response"
client_id = "fleet" # instead of android
client_secret = "JLFjJmketRhj>M9uoDhusYKyi?zUyNqhGB)H2XiwLEF#KcGKrRD2JZsDQ7ufNven" # different secret

post_data = {
    #"username": config.username,
    #"password": config.password,
    #"client_id": CLIENT_ID,
    #"client_secret": CLIENT_SECRET,
    #"grant_type": "password",
    "client_id": client_id,
    "client_secret": client_secret,
    "refresh_token": refresh_token,
    "grant_type": "refresh_token",
}

I was just about to suggest using selenium and chrome webdriver for the browser interactions. I know the workload can be containerized, as well. But honestly, I feel like @stleusc's first suggested solution is far straighter forward.

The tokens are JWT. Paste them at jwt.io to see their contents. The expiration date for my refresh_token is way out into 2034, but it does report as an Invalid Signature. Stleusc, how does yours report?

@akseidel learned something new today about JWT :-)
Yes, the refresh_token is valid for 10 years. Which is the idea behind it. The access_token is short lived, the refresh_token is long lived. HOWEVER, you generally can only use it ONCE to convert to a new access_token. You have 10 years to do that, but can do it only one time.
I guess what I stated above depends on the implementation. In other words, if we get a refresh_token in the reponse, I would update to that one (also gives 10 more years). If there is none in the response, keep the old one.
Other sites that I worked with in the past that used OAuth allowed only one exchange...
If everything checks out, the service can [generate an access token](https://www.oauth.com/oauth2-servers/access-tokens/access-token-response/) and respond. The server may issue a new refresh token in the response, but if the response does not include a new refresh token, the client assumes the existing refresh token will still be valid.

Regading signature: Signature Verified

The tokens are JWT. Paste them at jwt.io to see their contents. The expiration date for my refresh_token is way out into 2034, but it does report as an Invalid Signature. Stleusc, how does yours report?

The access token reports invalid sig, the refresh token valid sig.
I think the page needs to know the secret for checking the sig and we did not enter that!

Actually, I don't think that is even needed. Just looked at the traffic.... The response looks VERY similar to the app and contains the required tokens.
@macwriter you already have modified sources... I think it would be super easy for you to check if the response tokens work. Simply log into https://manager.sensicomfort.com/ and look at the traffic to grab the token from the oauth call. I have a good feeling about this!
@Pheelix you might have solved the mystery for us...
@iprak The website also uses recaptcha but it is fully browser based. I ASSUME that python can emulate a webbrowser in a way that you load the login page and let it do it's thing to take care of the recaptcha?

Yes, works for me with the updated information (client_id, client_secret,refresh_token). Great job finding this!
def test(client_id,client_secret,refresh_token):
    params=()
    data = {
            "client_id": client_id,
            "client_secret": client_secret,
            "grant_type": "refresh_token",
            "refresh_token": refresh_token
        }

    headers = {
            "accept": "*/*",
            "accept-language": "en-US,en;q=0.9",
            "content-type": "application/x-www-form-urlencoded; charset=utf-8",
        }

    _response = requests.post("https://oauth.sensiapi.io/token", params=params, data=data, headers=headers)
    print(_response)
    print(_response.json().keys())

test(**options_from_Sensi_Manager)

<Response [200]>
dict_keys(['access_token', 'refresh_token', 'token_type', 'expires_in', 'password_reset', 'eula_accepted', 'offers', 'alerts', 'user_id'])

You all are amazing! I'm hoping someone can help someone with mid-level
programming knowledge. lol
Thanks again for all of you digging into this for those of us who can't.
On Tue, Mar 12, 2024 at 11:27 AM Joe King @.***> wrote:

Actually, I don't think that is even needed. Just looked at the
traffic.... The response looks VERY similar to the app and contains the
required tokens.
@macwriter https://github.com/macwriter you already have modified
sources... I think it would be super easy for you to check if the response
tokens work. Simply log into https://manager.sensicomfort.com/ and look
at the traffic to grab the token from the oauth call. I have a good feeling
about this!
@Pheelix https://github.com/Pheelix you might have solved the mystery
for us...
@iprak https://github.com/iprak The website also uses recaptcha but it
is fully browser based. I ASSUME that python can emulate a webbrowser in a
way that you load the login page and let it do it's thing to take care of
the recaptcha?
Yes, works for me with the updated information (client_id,
client_secret,refresh_token). Great job finding this!
def test(client_id,client_secret,refresh_token):
params=()
data = {
"client_id": client_id,
"client_secret": client_secret,
"grant_type": "refresh_token",
"refresh_token": refresh_token
}
headers = {
        "accept": "*/*",
        "accept-language": "en-US,en;q=0.9",
        "content-type": "application/x-www-form-urlencoded; charset=utf-8",
    }

_response = requests.post("https://oauth.sensiapi.io/token", params=params, data=data, headers=headers)
print(_response)
print(_response.json().keys())

test(**options_from_Sensi_Manager)
<Response [200]>
dict_keys(['access_token', 'refresh_token', 'token_type', 'expires_in', 'password_reset', 'eula_accepted', 'offers', 'alerts', 'user_id'])
—
Reply to this email directly, view it on GitHub
https://github.com/iprak/sensi/issues/38#issuecomment-1992070982, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/ACHE2LPFWJ34JS7BAJNXZFDYX4UI7AVCNFSM6AAAAABEHWELPSVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSOJSGA3TAOJYGI
.
You are receiving this because you were mentioned.Message ID:
@.***>

I think we have all we need to get this working again....
My option A from above should be pretty easy to implement and we already tested all the elements that are involved.
Now we just need to hope that @iprak finds the time to work on it.

B: Have python emulate a webwroser and login to https://manager.sensicomfort.com/ using username/pwd and then grab the refresh_token from the web traffic.

Ironically, this could be foiled by recaptcha! lol
But maybe not.

@bperry11 using something like an Android WebView would work since that is basically the component used to build browser apps. Of course Python would be different...
I personally prefer A ;-)

Sorry for late response, this integration usually only gets my attention on weekends.
When I wrote this extension, my aim was to provide an easy to setup integration with the ultimate goal to have it be integrated in Core release.
While solution "A" makes it work, I do not think it is the right approach. It certainly puts the extension out of non-developers or folks just using mobile device.
I do not think browser emulation is possible in Python without using something like Selenium which makes it a quite heavy integration. This also might not work well not work in the constraints of HomeAssistant.
There are 3rd party subscription based libraries for solving reCaptcha but that again might nor work since reCaptcha is tied to the site.
Sensi does have external integration support e.g. Whoosh Air, SmartThings and electricity providers. I personally have Sensi integrated via the last 2 paths. My hope is that Sensi's external integration could be used to pass back the authentication information via webhook. But I don't know enough yet about the implementation. https://sensiapi.io/authorize however is the site for establishing external integration.
I understand that this issue is a headache for many. I do not think this integration is subtainable due to the additional restrictions imposed at Sensi end. I will try to get refresh_token based authentication out soon but I won't be making any more updates to this extension unless I can establish the authentication to be more standard.

While 'A' is not ideal, there are certainly many other integrations that are more complicated. Eg https://www.home-assistant.io/integrations/smartthings/.
And I also don't think that there have been any changes in recent years that would have broken that approach.
I assume you could contact Sensi and see if they allow you to become a partner, but I have a feeling they would not.
That being said, thank you for your continued support. I hope you change your mind and keep supporting this great integration!

Those two do have some setup but those are using established public facing workflows. Launching DevTools is at a different level.
One can link Sensi from SmartThings app which establishes authentication via https://sensiapi.io/authorize and this gives me hope that such a possibility might be there. The initial call does pass in a different token and a callback, if that is not locked down then the callback could be HomeAssistant webhook (same as SmartThings) to receive the token.

It was Homebridge, but I had to do very similar process to integrate Google Nest. Login, open devtool, grab the cookie / or token, and paste into homebridge. At least for the time being, it wouldn't be too big of a deal IMO. Either way, thanks for your work on this!

I tried to do what's shown in this comment but it still wasn't working. I'm guessing the refresh_token I was using was wrong. What exactly does it look like?

I tried to do what's shown in this comment but it still wasn't working. I'm guessing the refresh_token I was using was wrong. What exactly does it look like?

Mine's a 333 characters of upper and lowercase letters, digits, and symbols. Did you also get the client_secret? You'll need to put that in the auth.py file as well.
Find and change the following in the asnyc def login() function around line 48. (I commented out the old and put the new underneath:
post_data = {
        # "username": config.username,
        # "password": config.password,
        # "client_id": CLIENT_ID,
        # "client_secret": CLIENT_SECRET,
        # "grant_type": "password",
        "client_id": "fleet",
        "client_secret": "<INSERT_YOUR_ NEW_CLIENT_SECRET>",
        "grant_type": "refresh_token",
        "refresh_token": "<INSERT_YOUR_RESFRESH_TOKEN>",
    }

    headers = {
        # "Content-Type": "application/x-www-form-urlencoded; charset=utf-8",
        # "x-platform":"android",
        # "accept": "*/*",
        "accept": "*/*",
        "accept-language": "en-US,en;q=0.9",
        "content-type": "application/x-www-form-urlencoded; charset=utf-8",
        }

Thanks @bperry11, I was copying the wrong refresh_token but I got it figured out now. Cheers mate


Fix for when compliance status is nil

ref: https://issues.redhat.com/browse/ACM-7264
Followup to:

#143

There are five other type assertions remaining which I think are safe since they appear to be performed on known types?
https://github.com/stolostron/insights-client/blob/3b2d8863dc13bd2c6da8c1988f223d05c510ede2/pkg/processor/reportprocessor.go#L170
https://github.com/stolostron/insights-client/blob/3b2d8863dc13bd2c6da8c1988f223d05c510ede2/pkg/processor/reportprocessor.go#L226
https://github.com/stolostron/insights-client/blob/3b2d8863dc13bd2c6da8c1988f223d05c510ede2/pkg/processor/reportprocessor.go#L249
https://github.com/stolostron/insights-client/blob/3b2d8863dc13bd2c6da8c1988f223d05c510ede2/pkg/processor/reportprocessor.go#L266
https://github.com/stolostron/insights-client/blob/3b2d8863dc13bd2c6da8c1988f223d05c510ede2/pkg/processor/reportprocessor.go#L287

/cc @mprahl @gparvin

/unhold
Thanks for the reviews! I've made some updates based on the feedback--please take another look when you have a moment.


Is this ready for production use?

Hi, I've been looking at this library and it looks promising.
Is it ready for production use yet?
I've given it a tentative try to set it up but it doesn't seem to work well - maybe there's something missing from the documentation for installation?

This is far from ready. Its based on some really bad engineering choices. You should probably give up on it.

@rollue this is a beta version of the Stream API, a new websocket-based service that enables developers to receive events as they occur across our marketplace.
We’ve built the Stream API to support a range of use cases that rely on dynamic data, such as price fluctuation, listings, bids, and ownership changes. Instead of polling for updates, you subscribe to receive events as they occur.
Developer docs: https://docs.opensea.io/reference/stream-api-overview
The Stream API makes it easier to build new features such as:

Push notifications to alert people when they receive new bids
Activity feed that provides a timeline of sales from a collection
A real-time dashboard that visualizes key trends and metrics

Here is an example where we’ve used the Stream API to send events to a Discord webhook: https://github.com/ProjectOpenSea/opensea-stream-discord-webhook
To learn more, check out our blog post: https://nft.mirror.xyz/HhXSvsS7ZhVns6FuJB1rUGP53gW-qDVCv5gfx9cDGco
Reach out on Discord if you have any questions, issues, or feedback. We can’t wait to see what you build! https://discord.gg/opensea
Closing this ticket, if you need additional help or if this did not answer your question, please feel free to reply.


androidx-migration

nao consigo fazer a migraçao no meu android Studio para androidX estou utilizando o flutter para fazer meu aplicativo

Unless there is a specific issue you are having, then there is not much we can do. See also https://flutter.dev/docs/development/androidx-migration


Provide a testing builds of the Podman Desktop to be used across our CI

Is your enhancement related to a problem? Please describe
Right now we are mostly running e2e tests against podman desktop built in development mode. We would like to expand the e2e tests to be run also against production builds of Podman Desktop. We need to enable electron inspect flag during the build to produce such builds. these builds then can be use during e2e test in a way, where we will simply download the bits and we will not be building whole project from scratch everywhere.
Describe the solution you'd like
Similar to standard nightly builds of Podman Desktop we are releasing to https://github.com/containers/podman-desktop-prereleases repository, we could create repository, ie. podman-desktop-testing-prereleases where we would publish podman desktop production builds with ELECTRON_ENABLE_INSPECT option enabled, so that we can use them in the e2e testing workflow/pipelines.
Create a repository, add/adjust step to builds also nightly with this env.var set and publish it in given repo from within particular nightly workflow.
Describe alternatives you've considered
No response
Additional context
No response

I have run the workflow on demand, results: https://github.com/podman-desktop/testing-prereleases/releases/tag/v1.15.0-202412090748-1e7963abeec
And also nightly build has produced expected results: https://github.com/podman-desktop/testing-prereleases/releases/tag/v1.15.0-202412100227-5a8f9963ec1


⚠ TROJAN 🇮🇩 Indonesia IDJ 1 has degraded performance

In 6a35cf2, TROJAN 🇮🇩 Indonesia IDJ 1 (https://idt-1.opensvr.net/) experienced degraded performance:

HTTP code: 200
Response time: 8909 ms

Resolved: TROJAN 🇮🇩 Indonesia IDJ 1 performance has improved in 524350d.


argument error of gunicorn

A very interesting work! However, When I try to launch AIDE with the command './AIDE.sh start ', an error occur as the picture shows. Here is the screenshot:

I also attach my setting file
settings.txt
Anyone who has some suggestions on it?

Hi!
Thanks for opening the issue. The only explanation I could have is that your environment variable AIDE_CONFIG_PATH points to a different settings ﬁle. Are you using Docker? Then you have to modify the docker/settings.ini ﬁle, not the config/settings.ini ﬁle.
--
To make the system a bit more hiccup-proof, the latest commit now contains a fallback solution to the numWorkers argument if it cannot be found (defaults to 6).

Hi!
Thanks for opening the issue. The only explanation I could have is that your environment variable AIDE_CONFIG_PATH points to a different settings ﬁle. Are you using Docker? Then you have to modify the docker/settings.ini ﬁle, not the config/settings.ini ﬁle.
--
To make the system a bit more hiccup-proof, the latest commit now contains a fallback solution to the numWorkers argument if it cannot be found (defaults to 6).

Hi!
Thanks for opening the issue. The only explanation I could have is that your environment variable AIDE_CONFIG_PATH points to a different settings ﬁle. Are you using Docker? Then you have to modify the docker/settings.ini ﬁle, not the config/settings.ini ﬁle.
--
To make the system a bit more hiccup-proof, the latest commit now contains a fallback solution to the numWorkers argument if it cannot be found (defaults to 6).
settings.txt
terminal_logs.txt

Thank you for your reply. The problem is solved! Yes when I use docker I can start the server and log in. I tried to run AIDE on one machine however, when I tried to label the images I uploaded and use built-in model to learn them, I have some questions:

All of my labels cannot be saved. After I finished labeling some images and quit, I cannot find the labels I did anymore. Is it because of some configuration problems in setting.ini file?
How can I apply built-in models automatically? I make some configurations under AI model->setting in GUI but nothing happened. The model does not run when I do the labeling. I tried to find answers in build-in model.md but I am sorry I still feel confused what I should do to make it run. What is the configuration JSON file for and how can I use it?
Here are some files I think might help you to understand my questions. Thank you again!

Hi!
Thanks for opening the issue. The only explanation I could have is that your environment variable AIDE_CONFIG_PATH points to a different settings ﬁle. Are you using Docker? Then you have to modify the docker/settings.ini ﬁle, not the config/settings.ini ﬁle.
--
To make the system a bit more hiccup-proof, the latest commit now contains a fallback solution to the numWorkers argument if it cannot be found (defaults to 6).
settings.txt
terminal_logs.txt

Thank you for your reply. The problem is solved! Yes when I use docker I can start the server and log in. I tried to run AIDE on one machine however, when I tried to label the images I uploaded and use built-in model to learn them, I have some questions:

All of my labels cannot be saved. After I finished labeling some images and quit, I cannot find the labels I did anymore. Is it because of some configuration problems in setting.ini file?
How can I apply built-in models automatically? I make some configurations under AI model->setting in GUI but nothing happened. The model does not run when I do the labeling. I tried to find answers in build-in model.md but I am sorry I still feel confused what I should do to make it run. What is the configuration JSON file for and how can I use it?
Here are some files I think might help you to understand my questions. Thank you again!

Hi!

Your annotations should be saved automatically whenever you click "Next" (or "Previous") or leave the browser page. AIDE tries to maximize the diversity of images annotators get to see; you therefore won't see already checked images again as long as there are unlabeled ones. However, if you are a project administrator you can still take a look at your labels, either by clicking "review annotations" in the bottom right of the main labeling interface screen (below the label class list), or by clicking the tab "Data management" in the configuration page (in your screenshot above)—in there, you can list images and sort them by number of annotations, for example.
A little while ago I started to re-write the automated training procedure, as it was a bit unstable. For the time being, automated model training is disabled for this reason; models can currently only be used (training, prediction, etc.) manually by launching tasks through the Workflow designer. Sorry about that. However, the next major release is coming soon, and in there automated model training will be enabled and configurable again through the "AI model" > "Settings" tab. You can take a sneak peek at this on the respective branch.

Hi!

Your annotations should be saved automatically whenever you click "Next" (or "Previous") or leave the browser page. AIDE tries to maximize the diversity of images annotators get to see; you therefore won't see already checked images again as long as there are unlabeled ones. However, if you are a project administrator you can still take a look at your labels, either by clicking "review annotations" in the bottom right of the main labeling interface screen (below the label class list), or by clicking the tab "Data management" in the configuration page (in your screenshot above)—in there, you can list images and sort them by number of annotations, for example.
A little while ago I started to re-write the automated training procedure, as it was a bit unstable. For the time being, automated model training is disabled for this reason; models can currently only be used (training, prediction, etc.) manually by launching tasks through the Workflow designer. Sorry about that. However, the next major release is coming soon, and in there automated model training will be enabled and configurable again through the "AI model" > "Settings" tab. You can take a sneak peek at this on the respective branch.


Search returns no data, but with no errors also.

Tried to implement the searchkick with elasticsearch,
Have no errors occurred but when the search button is clicked the table returns no data:

Search

While the server does response

Any suggestion is appreciated!

Hi @Yi3nz
Have you been able to resolve this issue? Please let us know if you still need assistance.
Emily

Hi @Yi3nz
I'm going to close this issue but feel free to open another one if you are still having trouble. Thanks
Emily


How to Activate Doorbell Trigger

So the addition of a doorbell trigger is really neat.... now the question becomes how to actually trigger the switch when the doorbell is pressed.  I have an August Doorbell, and my first thought was IFTT to a web hook but then I thought perhaps I am overcomplicating things.
Anyone have any ideas?

To trigger mine, I'm using a Home App automation.

Do you have a device that triggers the switch to turn on?

You can use any other switch in Homekit. I personally use a cheap 433MHz receiver that picks up the signal of my standard doorbell button and makes that a switch in HomeKit. Then I automated the bell switch to trigger when that 433 doorbell button is pressed. Voila, I see the postman :)


SAK-33388 - Update httpclient/httpcore to newest, have all tools use …

…shared version

Respondus LDB deploys these libs to shared but they said they'd look into making sure their tool is compatible with the newest versions here.


Updating license header using the updated license header conversion.

Files that are in active pull requests have been excluded from the pull request.

Looks good to me, please commit.

+1


ExpressionChangedAfterItHasBeenCheckedError

my html:
 <select2
              [data]="envData"
              [options]="envOptions"
              [width]="300"
            ></select2>

my component:
envData: Array<Object> = [];
 envOptions: Select2Options = {
    multiple: true
  };

after I select one or more options, then I change data of envData, Chrome would console this:
ERROR Error: ExpressionChangedAfterItHasBeenCheckedError: Expression has changed after it was checked. Previous value: 'true'. Current value: 'false'.
at viewDebugError (core.es5.js:8633) [angular]
at expressionChangedAfterItHasBeenCheckedError (core.es5.js:8611) [angular]
at checkBindingNoChanges (core.es5.js:8775) [angular]
at checkNoChangesNodeInline (core.es5.js:12329) [angular]
at checkNoChangesNode (core.es5.js:12303) [angular]
at debugCheckNoChangesNode (core.es5.js:12922) [angular]
at debugCheckDirectivesFn (core.es5.js:12824) [angular]
at Object.View_ProjectRedisAssignment_4.co [as updateDirectives] (ProjectRedisAssignment.html:124) [angular]
at Object.debugUpdateDirectives [as updateDirectives] (core.es5.js:12806) [angular]
at checkNoChangesView (core.es5.js:12123) [angular]
at callWithDebugContext (core.es5.js:13206) [angular]
at Object.debugCheckNoChangesView [as checkNoChangesView] (core.es5.js:12753) [angular]
at<EMAIL_ADDRESS>(core.es5.js:10222) [angular]
is there something wrong with my code? thank u~!

This is because you are changing the data that you are binding to a template element after said template has been checked by angular. I believe this is not going to cause problems in production, but in development angular throws this error message rightly so. There are ways to prevent it, but because your code is not available, I can't really give any good advice.
What you can do to go around this problem is inject ChangeDetectorRef in your component's constructor, and implement AfterViewChecked or AfterContentChecked and in there call ChangeDetectorRef's detectChanges() method.
export class YourComponent implements AfterViewChecked {

  constructor(private ref: ChangeDetectorRef) { }

  ngAfterViewChecked(): void {
    this.ref.detectChanges();
  }
}

@bgolyoo Thanks for your answer~！I will try :+1:

Sorry I am too dull to understand usage of ChangeDetectorRef, still met this error, I will tell u my code more specific:
I have a dropdown list in my html
 <select class="form-control" [(ngModel)]="envModel" (change)="changeEnvMode()">
              <option>online</option>
              <option>offline</option>
 </select>

<select2 [data]="envData"></select2>

and in component:
changeEnvMode() {  // yes, here I change the select's option
    this.envDataInit();
  }
envDataInit() {
    let temArray: Array<Select2OptionData> = [];
    if (this.envModel === 'offline') {
      this.envList.forEach(item => {
        if (item.indexOf('qa') !== -1 || item.indexOf('test') !== -1 || item.indexOf('uat') !== -1) {
          temArray.push({
            id: item,
            text: item
          })
        }
      })
    } else {
      this.envList.forEach(item => {
        if (item.indexOf('stage') !== -1 || item.indexOf('product') !== -1) {
          temArray.push({
            id: item,
            text: item
          })
        }
      })
    }
    this.envData = temArray; // here, I replace the old array to new array, and error comes
   // so, do u mean I should insert ` this.ref.detectChanges();` here? because I want trigger angular checking manually in here  I tried, but it doesn't work
  }

Could give me any suggestion? So much Thanks, my poor English, If u don't know what I write, just ask :)

So sorry, I add both of them, but still doesn't work : (
ngAfterContentChecked(): void {
    this.ref.detectChanges();
  }

  ngAfterViewChecked(): void {
    this.ref.detectChanges();
  }

I could not see Select2Options in the library. Could you please help me out?

@logeshthedev Sorry. What do u mean in the library

Sorry it was my bad.. I am able to access to select2options..
On another note, could you let me Know on how to do ngModel? Is this supported in this library??

a ha : ( I am not sure whether u can use ngModel in here... Maybe u can others for this, Sorry for that = =


Fix: fixed jest leak detector

jest-leak-detector declares a leak in some of our large projects,
a leak which does not exist. I have bisected it down to there
being too deep require() trees, and/or too many files loaded.
It is definitely not a timing issue; replacing the extra gc() with
a multi-second sleep does not fix it. Calling gc() from the app code
surprisingly does fix it, at least, for us. My working theory is that
the app's gc() takes out some of the actual garbage, leaving
leak-detector's gc() time to actually collect all of the code,
resulting, eventually, in no leak.
I realise this is hot garbage. I'm absolutely not going to try and
write a test for this, and I understand if you close the PR

Duplicate of #10994


remove required chef_version

+1

we might not want to do this, actually. It is a way for us to ensure we aren't building VMs using old tool versions (< chef v12.4).
https://github.com/berkshelf/berkshelf/issues/1499#issuecomment-249096953

The error was from using an older version of berkshelf. No need to merge this.


fix links to icons in manifest.json

script favicons generate invalid url's

https://github.com/alexstep/create-riot-app-ejected/commit/04fe2864de53ed7724780fca2819d5a4f6868797