Proposed RFC: Separate main and development branches for versioning

Separating main and development website branches
During the 2022-02-08 SIG meeting we discussed two ongoing issues: Website versioning (represented as an official SIG project) and the need to currently keep in-flight documentation for "next release" off of the website, while also accessible to users. There have been some stop-gap efforts such as using the o3de wiki, which fragments our documentation.
This proposal is to prepare for full website versioning by effectively beginning a separation between "last binary release" (main) and "in-flight work" (development). While there are issues with how features are selected for release, patch backporting, etc. we expect these problems to be discussed as part of the full website versioning proposal. This is an initial stage to enable minimal separation of the two workflows and enable our future versioning.
What is the relevance of this feature?
There are two primary issues which prompted the proposal for separating development and main:

Users may get unreliable information, as we expect at this point many of them will be using at minimum the 2111.2 QoL update, and in-flight feature documentation is not representative of this release - even if there are only minor adjustments to existing features, if they are updated for dev, any user running a binary (or built from git branch) release will likely encounter issues. Keeping main (and the live site) locked to "latest release" until a full versioning strategy is in place will be helpful to users.
Developers have difficulty getting work for in-flight features merged to main. This is because of the high standard of quality that we try to maintain on live documentation, especially for new documentation. We want to encourage engineer contributions as the subject matter experts on reference and in-depth feature knowledge, and a higher-velocity, lower-stabilization development branch enables this.

What are the advantages of the feature?

Separation of in-flight from released features, as described above.

Better user experience (documentation is "locked to release")
Better developer experience (developers have a lower bar of acceptance for in-flight feature docs; They aren't required to worry about "sitting on" docs until code is ready for a versioned release; They will be able to accept longer turn-around times in edit; It will be clearer where "bug fix" docs vs. "new feature" docs go)

Preparation for versioning strategy: A versioning strategy will include a plan for documenting o3de/development, which may be a different workflow than proposed in this RFC; However, it's expected that any versioning strategy will work off of git tags, branches, or another mechanism that enables easy versioning automation. The branch separation strategy also prepares our audience for the migration to a versioned website and will theoretically make the versioning even easier.

What are the disadvantages of the feature?

Representation of velocity. In the design description the practical infrastructure concerns lay this out, but until there is inline versioning on the website for docs in some capacity, we will want to stage main and development separately. This will put development on a subdomain, such as dev.o3de.org - separating visibility into in-flight features from released features. This is intentional and by design, as outlined in the proposal. The philosophical argument is that user experience on docs matters, and unless we have actionable telemetry, we must make assumptions on whether users are operating off development or a versioned release. Activity in Discord and on forums at this time is anecdata that many users are sticking with versioned releases.

MITIGATION: Actively directing users reading versioned documentation (main, o3de.org) to dev docs (development, dev.o3de.org) and vice-versa, at minimum on the /docs landing page index (and presumably the indexes of each major guide.)

Confusion in migration to full versioning. Full versioning of the website will require UI/UX integrations and potentially additional build infrastructure, and should not rely on subdomains. This proposal is for a stopgap measure to address what we see as an urgent need, as there is no current timeline for the implementation of website versioning. As a consequence, the technical design is as minimalist as possible.

MITIGATION: This is why 301 PERMANENTLY MOVED exists as an HTTP response status code. dev.o3de.org will redirect to the appropriate versioned documentation for development when full versioning is in place.

Feature design description
GitHub o3de.org changes

The creation of a development branch. The current state of main will be considered to be representative of 2111.2, although it has been updated with new features since that release.

Netlify changes

We would be publishing both main (as our production site) and development (as dev.o3de.org). See the Netlify branch publishing documentation. There is infrastructure support for supporting this feature.

Global search indexing

We should determine if site indexing should be disabled for dev.o3de.org, at the risk of making in-flight feature docs less discoverable. Keeping it enabled will pollute search results however, and likely lead to the same problem we experience now (users seeing bad information.)

Documentation changes

Contributor guides will need to clarify the purposes of main and development on documentation. This includes code contributors, as they are meant to be the primary submitters to development.
Signposting on dev.o3de.org indicating that the user is on the "development branch site" documenting the current code base, in the form of a site banner or other visible UI.
Signposting on specific o3de.org landing pages pointing users to the development site.

Technical considerations
Outlined above regarding implementation.
Are there any alternatives to this feature?

Full rollout of a versioned website, date TBD.
Separating development and 2111.2 into separate subdirectories on the site, but with no easy UX to navigate between them.

Are there any open questions?

Is dev.o3de.org an appropriate name?
Should we wait for full versioning?
Is this model going to be easy to migrate to a versioning system?
Should robots be prevented from indexing dev.o3de.org?
Which pages on o3de.org should have signposting for how to get to the development branch documentation?

I'm fully supportive of this RFC, sounds like a great idea. Thanks for putting this together so quickly @sptramer! 😄

I fully support this RFC as well. This RFC delivers even more than requested, with the ability to actually have a published version of development documentation in dev.o3de.org. Initially I was expecting that developers could download and see locally the development documentation, but having it online in a subdomain sounds fantastic.

I would prefer we version docs on releases. ie snapshot docs and mark as the docs for 2011RTE etc. The o3de.org should be latest docs that track against development IMHO.
We still have a high velocity of changes and are struggling to get docs into any state.  I want to ensure we are not constructing any new barriers/confusion about how to submit docs as features come in.
I also feel we will have to spend considerable effort get dev docs up to "release" quality under this initiative. I have concerns that we are not scaled, and SIGs will be asked to give up considerable time to "polish" dev to release.
I may be missing the use case for "currently keep in-flight documentation for "next release" off of the website, while also accessible to users. ".
What data do we have about where folks are consuming O3DE from? As an active developer I am biased towards development because thats where I work. Am happy to be shown data that the majority of users work from releases and so documentation should align with the primary way O3DE users are working with O3DE.

I would prefer we version docs on releases. ie snapshot docs and mark as the docs for 2011RTE etc. o3de.org should be latest docs that track against development IMHO. This introduces very little change in current process.

This is tracked as an official SIG project and there is a forthcoming RFC for a full versioning model. This is a stopgap RFC which is meant to address an immediate problem ("unstable docs between releases and high-velocity dev") without considering LTS. I would like @willihay to weigh in on this one briefly since he's doing the project work.

I would challenge to provide alternatives you have considered in this RFC.

This needs to be much more clearly articulated in the RFC, but we are limited by our usage of an OTS system which is owned as a platform and some restrictions that were discovered or advised by @willihay during his research for the upcoming RFC on general versioning. I can supplement the information on this RFC at a future date.

I also feel we will have to spend considerable effort get dev docs up to "release" quality under this initiative. I have concerns that we are not scaled for this, and SIGs will be asked to give up considerable time to "polish" docs when we need to migrate dev to mainline.

This is a legitimate concern, and a SIG policy regarding "documentation quality" isn't yet in place to set a standard bar between  in any meaningful way, let alone between a dev and main state. Stale/unedited content will unquestionably be a problem for us in any model, but you're correct, this could make it worse and needs to be addressed.

So what data do we have about where folks are consuming O3DE from? As an active developer I am biased towards development because thats where I work. Am happy to be shown data that the majority of users work from releases and so documentation should align with the primary way O3DE users are working with O3DE.

Currently, data about our userbase is driven by Discord, and the comments we see there are predominantly from users working with a box release rather than development, for better or for worse. It is an open question how splitting the docs here affects our "average user" at this stage, as called out in the RFC. I'd like some more advisement on this from @o3de/sig-release-maintainers and will have more concrete data by March.

I would prefer we version docs on releases. ie snapshot docs and mark as the docs for 2011RTE etc. o3de.org should be latest docs that track against development IMHO. This introduces very little change in current process.

This is tracked as an official SIG project and there is a forthcoming RFC for a full versioning model. This is a stopgap RFC which is meant to address an immediate problem ("unstable docs between releases and high-velocity dev") without considering LTS. I would like @willihay to weigh in on this one briefly since he's doing the project work.

From my research into the doc versioning problem space, I would categorize the consumers of the o3de.org docs into two major groups:

Cutting edge users who work off the development branch and are not afraid to pull the latest updates at any time.
Users who have installed a released version of O3DE from the Installer, or built the source from a tagged release.

Clearly the first group would benefit from - and often want (or at least understand and tolerate) - cutting edge updates to docs that reflect impactful and even breaking changes in the development branch. And our code contributors would certainly benefit from having a place to immediately make those doc changes.
However, these same cutting edge changes to the docs would periodically confuse the second group, serving them with incorrect or incomplete information. I feel that this sort of potential for confusion should not be part of the default doc experience (i.e. o3de.org). We already have enough problems with gaps and outdated information in this default set. ;-)
I'd like to also note that in the official SIG project that @sptramer mentioned, I will be proposing that the longer term website versioning include a doc version selector mechanism to easily switch between doc versions, and will likely use a browser cookie to remember the reader's choice. This should help readers self-select a doc set that fits their needs.

Additional note: There's nothing that prevents us from pre-staging and splitting main and development at this point, with the understanding that main is the only published branch. If this will help with resolving this conflict in a more urgent way, we can add that before RFC approval with the understanding that this RFC may be rejected in favor of a forthcoming full versioning RFC.

Additional note: There's nothing that prevents us from pre-staging and splitting main and development at this point, with the understanding that main is the only published branch. If this will help with resolving this conflict in a more urgent way, we can add that before RFC approval with the understanding that this RFC may be rejected in favor of a forthcoming full versioning RFC.

I'd be in favor of this if it makes it easier for teams to start adding documentation earlier! 🙂

ACCEPTED: RFC split of main/development
ACCEPTED: Publishing of development to:

Publish to default Netlify staging development--staging.o3deorg.netlify.app
Request no-indexing robots.txt on development
Provide version numbers / identifiers in headers for all docs sites from this point on
Still need to fully identify a release strategy for merging development -> main

Closed as accepted


/api/main_net/v1/get_claimed/ Throws Exception

This method has a problem with this version. It throws and exception.
I tried updating everything to the master, and master seems pretty bad as well.

@chrismpalmer let me know pls, if you can solve the problem. I have another problem.


feat: Button Group component

Description
Button Group component development
Rel: vAZbObs0rwNs
How has this been tested?

New unit- and integration tests
New screenshot tests on permutations

Review checklist
The following items are to be evaluated by the author(s) and the reviewer(s).
Correctness

Changes include appropriate documentation updates.
Changes are backward-compatible if not indicated, see CONTRIBUTING.md.
Changes do not include unsupported browser features, see CONTRIBUTING.md.
Changes were manually tested for accessibility, see accessibility guidelines.

Security

If the code handles URLs: all URLs are validated through the checkSafeUrl function.

Testing

Changes are covered with new/existing unit tests?
Changes are covered with new/existing integration tests?

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

@spugachev I contributed a fix for tooltip conditions: https://github.com/cloudscape-design/components/pull/2496

Submitted a fix for the failing test and more tests: https://github.com/cloudscape-design/components/pull/2516


Add initial english style guidelines

Do not merge
This pr is just a first draft meant for discussing. The final version will be integrated with the already existing markdown_style_guide.md.
@hackclub/staff Would love to get your thoughts on this. Please point our any guidelines that you feel should be added/dropped.

@MaxWofford, it seems that the discussion tag was applied and it says "Do not merge" but then someone's assigned to this pull request? It seems that people are usually assigned to pull requests when they are ready to be merged but it doesn't seem like this pull request is ready to be merged?

Perhaps we should specify what locale things should be written in (ie. American English vs British English vs Australian English).
Obviously it makes the most sense to use American English, as that is the default for most programming related endeavours

@paked Good point. I'll add that.

@paked I'm not to familiar with locale. Would you like to submit a PR for a section about it?

@MaxWofford I just mean what spelling/grammar system to use. I'll PR about it once this is learns.


Implement RFC0003: Publish Build Process Configuration Options

Summary
RFC0003 was approved. We should implement it.

Proposal
The build process of the dotnet-publish buildpack should be explicitly separated into 2 commands, dotnet restore and dotnet publish. Following this split, each command should be configurable using either the BP_DOTNET_RESTORE_FLAGS or BP_DOTNET_PUBLISH_FLAGS environment variables.

This has been partially implemented in #246. Splitting dotnet publish and dotnet restore broke offline builds for some reason (see #243 for context), so BP_DOTNET_RESTORE_FLAGS has been deferred for now.

@fg-j Is there anything that still needs to be done here?

I guess this is still open because BP_DOTNET_RESTORE_FLAGS was never implemented? Maybe we should just put in an amendment to the RFC and then close out this issue.


Can't download : ERROR 409: Public access is not permitted on this storage account.

I am having this issue while downloading using wget <link> or using command mentioned in the README (python download_training.py --output-dir OUTPUTDIR --flow --only-flow). Kindly help on this.
--2024-01-05 11:08:26--  https://tartanair.blob.core.windows.net/tartanair-release1/seasonsforest/Hard/flow_mask.zip
Resolving xen03.iitd.ac.in (xen03.iitd.ac.in)... <IP_ADDRESS>
Connecting to xen03.iitd.ac.in (xen03.iitd.ac.in)|<IP_ADDRESS>|:3128... connected.
Proxy request sent, awaiting response... 409 Public access is not permitted on this storage account.
2024-01-05 11:08:27 ERROR 409: Public access is not permitted on this storage account..

My bad, I was using the old download_training_zipfiles.txt that had outdated links. Now, the issue is resolved with the new links.


fix(controller-utils): Fix query function

Explanation
The query function was updated in #1266 to use hasProperty has part of an effect to improve the types being used. Unfortunately this had the unexpected affected of breaking this condition because hasProperty doesn't look up the prototype chain, but the method we were checking for was on the prototype. hasProperty is only meant to be used with plain objects.
The condition has been updated to use in, and the tests have been updated to use a more realistic EthQuery mock that has methods as prototypes.
References
Related to https://github.com/MetaMask/metamask-extension/issues/19735
Changelog
@metamask/controller-utils

FIXED: Fix bug where query function failed to call built-in EthQuery methods

Checklist

[x] I've updated the test suite for new or updated code as appropriate
[x] I've updated documentation (JSDoc, Markdown, etc.) for new or updated code as appropriate
[x] I've highlighted breaking changes using the "BREAKING" category above as appropriate

Whoops, a few more type errors to fix. Working on that now.


⚠ Bofrost.be has degraded performance

In 3d144fc, Bofrost.be (https://www.bofrost.be) experienced degraded performance:

HTTP code: 200
Response time: 2425 ms

Resolved: Bofrost.be performance has improved in 27130ba.


Basic 'attendees' slash command

 An 'attendees' command

I feel like this is now complete! Enhancements to be added later.


Handle exceptions better

We should be noting which ones come up where, so we can decide what to do about each one.

Catch MQTT exceptions and count them? What causes them? Can we reproduce?

#58 and #67 handle the ones at startup, which are by far the most common, but we should still look at the ones that happen later.

Added PR #73 to address MQTT intermittent failures

Testing #73 and my own similar attempt, it seems CircuitPython WiFi has some retry ability built in already, and we don't tend to recover from these network errors, so ignoring them temporarily just prolongs the misery.

See #114


Initial implementation pass of Vehicle subclass for generalized Keras…

@fywu85 Initial implementation of Vehicle subclass for generalized Keras-style kernel API, many methods have been skipped. Didn't test it but compiling goes through.

Oh! This is a neat idea. Obviously, some methods are missing but I'm down to rework things in this manner.

sort of stale (there is another version in progress). will close to minimize PR clutter


feat: allow discord forum thread creation

Closes #294
List view:

Gallery view:

Would it be possible (or wanted? I think it sounds interesting) to have this re-use a thread if the thread name is already taken? e.g. if the thread name template is set to [%TYPE%] %USERNAME%

Unfortunately automatically reusing threads with the same title is not possible without a discord bot; we don't receive thread_id upon creating a thread nor have a thread_name => thread_id mapping
Instead, folks can create those threads initially, and specify the thread_id manually for each override box to achieve that effect


Error: Pipelines introduction for KFP

Expected Behavior
Successfully run in vertex pipelines, by showing green in all nodes, since I'm following a tutorial that should work: https://github.com/GoogleCloudPlatform/vertex-ai-samples/blob/Fixed-the-component-versions/notebooks/official/pipelines/pipelines_intro_kfp.ipynb
Actual Behavior
Failing in the first node by the following error:
ERROR: No matching distribution found for kfp==1.8.19
Steps to Reproduce the Problem
1.Run the notebook inside vertex ai workbench.
Specifications

Version: Python==3.7.12
Platform: vertex ai workbench user-managed notebook.

Verified install works on Workbench:
! pip3 install --upgrade google-cloud-aiplatform
google-cloud-storage
kfp
google-cloud-pipeline-components


Test ign-gazebo6 using nightly debs

🦟 Bug fix
Not for merging, just testing CI to confirm a triggered publisher test failure
Summary

Checklist

[ ] Signed all commits for DCO
[ ] Added tests
[ ] Updated documentation (as needed)
[ ] Updated migration guide (as needed)
[ ] codecheck passed (See contributing)
[ ] All tests passed (See test coverage)
[ ] While waiting for a review on your PR, please help review another open pull request to support the maintainers

Note to maintainers: Remember to use Squash-Merge and edit the commit message to match the pull request summary while retaining Signed-off-by messages.

The failures here match the results from source on #1266 .
That PR also confirmed the fix from https://github.com/ignitionrobotics/sdformat/pull/809 works.


Duplicated tag in the DB

For a reason that I do not truly understand, there seems to have duplicated tags in the DB, as seen by scrolling any blog post.
For example:
https://www.gluster.org/?s=netbsd
I see cloud twice, events twice, several variation of "file systems", 2 KVM, 2 planet, 2 open source, 2 "puppet", Red hat and redhat, Screencast and screencasts and maybe others.
So variation are caused by the aggregation on the planet side and likely can't be fixed. But duplicate tags are weirder, so I wonder if there is some change in case somewhere down the line that do result in a bug.

There was an error in the tag import, they've been imported twice.
Want to help clean it up?

I deleted all of the empty categories, of which there were many. That took care of most of the dupes, and then I deduped the rest. I think we can close this one, but it might be worth thinking about the categores / tags structure in here moving forward.


cacert error on OS X

Summary: github3api fails on OS X as a result of rest3client hard-coding the path to the certificate file to a location specific to Linux.
Platform:
$ uname -a
Darwin M1-Air-2086 22.5.0 Darwin Kernel Version 22.5.0: Thu Jun  8 22:22:19 PDT 2023; root:xnu-8796.121.3~7/RELEASE_ARM64_T8103 x86_64

Code:
from github3api import GitHubAPI
client = GitHubAPI(bearer_token="fnord")

Shell:
$ python dependabot-alerts.py
cabundle "/etc/ssl/certs/ca-certificates.crt" is not accessible

Cause:
https://github.com/soda480/rest3client/blob/4dd69b5f9010f31266231cca7b3a9dd5381efde7/src/main/python/rest3client/restclient.py#L38
    cabundle = '/etc/ssl/certs/ca-certificates.crt'
        self.cabundle = RESTclient.get_cabundle(kwargs.get('cabundle'))

hi @lucasgonze ...
you can override the CA certificate default file location in two ways:

setting the REQUESTS_CA_BUNDLE environment variable or
passing it in via the GitHubAPI constructor:

client = GitHubAPI(bearer_token="fnord", cabundle='/location/to/your/cabundle')

please advise if this helps or if you prefer a different behavior.

Thanks. I'm able to use these workarounds to get my own usecase to work.
Is this documented anywhere?

@lucasgonze
CABundle override options have been documented here. Thanks.


[Docos] Add a new FAQ entry: "Why is @beartype spitting alien hieroglyphics at me?"

Howdo beartastic gatekeeper (i.e., @leycec )! I'm taking a stab at some rudimentary logging of the error messages sent to stdout to track the metadata around beartype's type check validations(because such a type-testing blessing would be such a waste if we didn't keep it around after clearing the command line), which you can see below (the test_func is commented out above for reference, but is being imported from a local .py file in the same directory).

However, the logging output got a little hairy with some artifact characters:

After a touch of investigation, I realised that they were due to coloring that the log was rendering as additional characters (yay plain text)! I had forgotten to set is_color to False in my Beartype_Conf instance and needed to explicitly set that in the beartyping context manager, like so:

While I understand this is a typical design pattern for boolean arguments and is rather convenient (because who doesn't want color when you're using your IDE and want to have your data validations errors pop in stdout so eye strain doesn't spell the death of you, without having to ask for it), given that the default behavior is raising this issue in a manner that is rather silent, I wonder somewhat aimlessly at the digital ether, and yourselves, how to amicably balance this colouring issue against how everyone else typically uses is_color. I don't necessarily think setting None to mean no color quite works, as that would make it state degenerate with False. Irrespectively, as there is no documentation section dealing with logging with beartype, or more generally, leveraging the potential metadata you can make with it effectually, I think having a section in the documentation dedicated to it would be helpful. However, as the issue doesn't itself throw any errors since it's more a problem of interfacing between plain and dynamic text environments, I feel a more explicit action than a remark is needed? Any thoughts?

OMG. It's my favourite NLP shenanigans researcher, @NLPShenanigans! Please take these profuse apologies for failing to respond to your justifiable outrage and confusion. It's been a fortnight. You've already forgotten all about this. The little that you remember fills you with unspeakable disappointment. But it happened... and I can explain.
Our issue tracker violently exploded after the release of @beartype 0.15.0, which was both gratifying and horrifying. This otherwise reasonable request was the casualty. The wages of sin are bugs, indeed. :disappointed:
ANSI: Alien Language in Our Midst or My Username Isn't @AlienBob
Just as you astutely suggest, let's add a new FAQ entry detailing:

ANSI escape sequences (i.e., the inscrutable alien hieroglyphics surely appropriated by ancient dolphin civilizations during the much-heralded Age of Porpoises circa 5,000,000BC).
More importantly, what to do about them. The ANSI, that is. Not the dolphins. They're fine. You can always trust Man's best aquatic friend when you need a helping flipper.

While configuring @beartype to simply avoid emitting ANSI escape sequences in the first place by passing is_color=False is certainly a valid and valuable solution, it's also more than a little heavy-handed. After all, ANSI is usually fine – and indeed desirable – when printing to a terminal. ANSI only becomes problematic when logging to an ANSI-unaware logger, right?
Behold! An alternative solution presents itself unbidden from the collective genius of StackOverflow: an ANSI-aware logger filter that efficiently strips all ANSI from logged messages. Oh, yes. It's happening.
from logging import Filter, getLogger

class FilterColor(logging.Filter):
    '''
    ANSI-aware logger filter efficiently stripping *all* ANSI from logged messages.

    See Also
    ----------
    https://stackoverflow.com/a/68402483/2809027
        StackOverflow answer strongly "inspiring" this implementation. Very well.
        StackOverflow answer from which this implementation was shamelessly stolen.
    '''

    def __init__(self):
        self.regex = re.compile(r'(\x9B|\x1B\[)[0-?]*[ -\/]*[@-~]')

    def filter(self, record: logging.LogRecord) -> int:
        record.msg = self._strip_esc(record.msg)
        if type(record.args) is tuple:
            record.args = tuple(map(self._strip_esc, record.args))
        return 1

    def _strip_esc(self, s):
        try: # string-like
            return self.regex.sub('',s)
        except: # non-string-like
            return s

# Add an instance of this filter to the root logger.
# Adjust as needed for pain.
getLogger().addFilter(FilterColor())

Have at you, root logger!  The next stable release of @beartype introduces our first environment variable: ${BEARTYPE_IS_COLOR}. By setting this variable to the string "False" somewhere in your shell, you too can globally disable @beartype colours across all Python processes: e.g.,
# Make the bad colors go away, Bear Daddy.
BEARTYPE_IS_COLOR=False python3 -m monochrome_retro_app.its_srsly_cool

Now you're playing with monochromatic power. This is why we @beartype. :muscle:  :bear:


Can these codes be used in mpii datasets

Yes, this repo is based on DarkPose. You need to change YAML configs for MPII.


Add error handling in device-code

Add error handling for deviceCodeClient use cases where the server may crash/polling may have failed for unexpected reasons.
Addresses PR #4507

Codecov Report

Merging #5033 (a4ab9c5) into dev (6220d0b) will increase coverage by 1.25%.
The diff coverage is n/a.

Flag
Coverage Δ

msal-angular
96.50% <ø> (ø)

msal-browser
86.69% <ø> (ø)

msal-common
?

msal-core
?

msal-node
82.99% <ø> (ø)

msal-node-extensions
76.03% <ø> (ø)

msal-react
94.50% <ø> (ø)

node-token-validation
88.88% <ø> (ø)

Impacted Files
Coverage Δ

lib/msal-common/src/client/DeviceCodeClient.ts

...on/src/authority/CloudInstanceDiscoveryResponse.ts

...b/msal-common/src/client/UsernamePasswordClient.ts

...ib/msal-common/src/cache/entities/AccountEntity.ts

lib/msal-common/src/authority/AuthorityFactory.ts

lib/msal-common/src/account/ClientInfo.ts

lib/msal-core/src/error/ServerError.ts

lib/msal-core/src/cache/AccessTokenKey.ts

lib/msal-common/src/error/JoseHeaderError.ts

...b/msal-common/src/client/ClientCredentialClient.ts

... and 97 more


Allow to getService by subtype string

Okay if there’s a reason not to do this, just seemed like it would be handy. I’m going to iterate services in client code to do the same thing. I suppose this could potentially be a breaking change, even with it as the last ||, but probably very unlikely that it would break anything.

@SphtKr can you elaborate on why you are trying to get the service back using subtype instead of display name?

Maybe that's what I should be doing, but here was my thought process:

There's no (technical) requirement for displayName to be unique, but subtype is required to be unique by design.
displayName is intended to be seen by humans and might be localized/internationalized somehow, while subtype should never be seen by humans and therefore does not need to be localized.
Anecdotally, in iOS apps, I'm not getting the result I'd expect from setting the displayName of a Service. I haven't played with it enough to figure out why yet, but for example Eve seems to make an odd choice about which name to display first (see attachment).

That last one could be something I'm doing wrong, and this isn't that important, a pull request was just the easiest way to ask the question. Thanks!

Since this one is unlikely to break anything and is indeed useful in some cases, I'll merge it ^^

Cool, thanks again!

alright, it's in hap-nodejs 0.3.1 now


[Workflow] How to run the workflows "distributed"?

Hi Dapr team,
I lately take a look into the new workflow feature of dapr.
And as far as I understand is an activity in an workflow not more then an actor.
And a workflow itself is like a component around the activities.
So for me every call of CallChildWorkflowAsync or CallActivityAsync goes to the sidecare. This looks into the placement lookup table (or updates his own copy) and send this request to the correct instance / node that hosts this Activity or workflow to run it.
It's also written in the CallChildWorkflowAsync documentation the following documentation:
     //    • You can distribute workflow logic across multiple compute nodes concurrently,
    //     which is useful if your workflow logic otherwise needs to coordinate a lot of
    //     tasks.

To make my issue easy to understand I created an example repo.
The example repo contains basicall 3 applications:

daprWorkflowDistributedIssue.ApiService

is exposed in dapr as WeatherApi
provides the Microsoft most common WeatherAPI sample with one single easy endpoint /weatherforecast

daprWorkflowDistributedIssue.DaprWorkflow1

a simple console app that starts an apphost and register some dapr things

a simple daprworkflow that contains just one activity called CallWeatherWorkflow
the activity will call the WeatherApi

daprWorkflowDistributedIssue.DaprWorkflow2

a simple console app that starts an apphost and register some dapr things

a simple daprworkflow  that will call the workflow CallWeatherWorkflow

The problem is now that the workflow CallWeatherWorkflow  works just okay. But when the workflow GetWeatherAndMood tries to call CallWeatherWorkflow you will get the following response:
{
  "instanceID": "fb8c3106-a8a0-4474-a3e2-832a7e5374ce",
  "workflowName": "CallWeatherWorkflow",
  "createdAt": "2024-02-23T13:01:49.870327683Z",
  "lastUpdatedAt": "2024-02-23T13:01:49.919064012Z",
  "runtimeStatus": "FAILED",
  "properties": {
    "dapr.workflow.custom_status": "",
    "dapr.workflow.failure.error_message": "No orchestrator task named 'CallWeatherWorkflow' was found.",
    "dapr.workflow.failure.error_type": "OrchestratorTaskNotFound",
    "dapr.workflow.input": ""
  }
}

It looks for me that I can only interact with workflows / activities that are hosted in the same instance of the application. But I can't call to other workflows hosted somewhere else in my dapr application.
This creates for me also the question how to scale these workloads or even better how to scale the activities. In special in the Fan-Out pattern.
Hope someone can help me to understand, what i miss here :)

It looks for me that I can only interact with workflows / activities that are hosted in the same instance of the application. But I can't call to other workflows hosted somewhere else in my dapr application.

@paule96 This is true, only the application that hosts a workflow can start one (and use only activities that have also been registered in that application).  To have other Dapr applications interact with them you must expose a new endpoint that can be called via, for example, Dapr service invocation.  That endpoint can then start/stop/manage the workflow.
With respect to scaling, I believe the note you mention refers to spreading execution across multiple replicas of the service (that registers the workflow).  That is, there is no affinity for running a workflow's activities to the same node that orchestrates the workflow itself.

Hi @philliphoff,
thanks for the explanation. So the actual activities will be run in the same application or they will be run "somewhere" inside of my dapr "network"?
Or does it just mean you have your sidecar for your application and you scale the application for example to 10 instances of your and it will spread the work to these 10 instances?

The activities will only run on the application (instances) in which they've been registered (along with the workflows themselves), but they will (should?) spread across those instances.

@philliphoff  This makes sense. Thanks for your explanation and clarification 👍


Tweaks to Azure Bicep definitions

@cmendible I noticed a couple things after I merged that we could probably tweak.  See what you think.

LGTM


"res0 must be always zero!" when reading an APK

Describe what you wanted to do
I wanted to get the app name from the manifest using Androguard, I used code like :
a = APK(args.PATH)
a.get_app_name()

When doing that, one legitimate Google APK (6245178b03a5375f49f74f3eb40caab746655d39ee35fbfbf62299fedba037dd  com.google.android.talk.apk) made my script crash.
Describe what actually happened
Crash
    'app_name': apk.get_app_name(),
  File "/home/user/env/default3/local/lib/python3.7/site-packages/androguard/core/bytecodes/apk.py", line 477, in get_app_name
    res_parser = self.get_android_resources()
  File "/home/user/env/default3/local/lib/python3.7/site-packages/androguard/core/bytecodes/apk.py", line 1512, in get_android_resources
    self.arsc["resources.arsc"] = ARSCParser(self.zip.read("resources.arsc"))
  File "/home/user/env/default3/local/lib/python3.7/site-packages/androguard/core/bytecodes/axml/__init__.py", line 1336, in __init__
    ate = ARSCResTableEntry(self.buff, res_id, pc)
  File "/home/user/env/default3/local/lib/python3.7/site-packages/androguard/core/bytecodes/axml/__init__.py", line 2584, in __init__
    self.key = ARSCResStringPoolRef(buff, self.parent)
  File "/home/user/env/default3/local/lib/python3.7/site-packages/androguard/core/bytecodes/axml/__init__.py", line 2659, in __init__
    raise ResParserError("res0 must be always zero!")
androguard.core.bytecodes.axml.ResParserError: res0 must be always zero!

System Information

Androguard Version: 3.3.5 from pipy
Python Version: 3.7.2rc1
Operating System : debian

it looks like the reserved byte isn't reserved anymore... quick fix: remove the check and hope nothing breaks

I have seen that bug several times recently too.

I'm seeing this with com.whatsapp Version Code 230905004, Version <IP_ADDRESS>, SHA-256 5f2a974da3d07803daf3cc29a63846d02e40d41c33c42f63f3e55ef14a07f55c.

Androguard from Debian/bookworm 3.4.0~a1-6
Python 3.11.2
Debian/bookworm

@adesnos how did you end up fixing it?  I'd like to backport a patch to get it into Debian.

This seems to work for v3.4.0:
--- a/androguard/core/bytecodes/axml/__init__.py
+++ b/androguard/core/bytecodes/axml/__init__.py
@@ -2664,7 +2664,7 @@ class ARSCResStringPoolRef:
         self.size, = unpack("<H", buff.read(2))
         self.res0, = unpack("<B", buff.read(1))
         if self.res0 != 0:
-            raise ResParserError("res0 must be always zero!")
+            log.warning("res0 must be always zero!")
         self.data_type = unpack('<B', buff.read(1))[0]
         # data is interpreted according to data_type
         self.data = unpack('<I', buff.read(4))[0]

I can parse the APK at least, I don't know what else will break.


Update BusWear with new version of EventBus

EventBus 3.0 has been released, update BusWear to use the new version.
With this update, investigate if EventBus can now be used a dependency vs a full inclusion of the code. This will allow quicker updates as new versions of EventBus are released.

I've started looking into this and it seems like EventBus is still locked down which makes it hard to include it as a dependency. I'm still playing around but it looks like it's still required to include EventBus in the project like it is currently.

@greenrobot Would it be in the pipeline to allow for easier extension of the EventBus library? Right now many methods and fields are private which makes it difficult to add additional features.

Thanks for responding @greenrobot but I think I was able to accomplish using the dependency only with the current EventBus library in PR #18. Took a bit of refactoring of the BusWear API but should provide the same functionality.


Change URL for docker binary download

I was getting an empty response from the io URL, leading to a confusing situation where docker was an empty script that silently did nothing with any arguments. get.docker.io now redirects to get.docker.com, so I'm updating that here.

Fixes https://github.com/spotify/docker-gc/issues/35

Thought I searched for the issue, sorry about that! :)

Thanks for the patch!


Infinite Loading with Ios Emulator

Hi, I don't have a physical ios device so I always use emulator with xcode to debug my code.
I've turn on "SignIn With Apple" inside capabilities in Xcode and I write the demo code in my app:
window.cordova.plugins.SignInWithApple.signin(
  { requestedScopes: [0, 1] },
  function(succ){
    console.log(succ)
    alert(JSON.stringify(succ))
  },
  function(err){
    console.error(err)
    console.log(JSON.stringify(err))
  }
)

If I tried to login with Apple Account the first two steps works good, but the third one after I insert the password remain in infinite loop loading. I don't find anything in the documentation. What could be the problem?

known issue for a very long time on the apple forums.
Sad but true.
https://developer.apple.com/forums/thread/651533
https://developer.apple.com/forums/thread/90718
You can try the suggestions they have there, but some of the options they mentioned aren't viable for me so I can't attest to success rate.

Ok so this is only a problem for simulator?

Definitely, does not work for me either on simulator. But on the device, 100% good and functional.
just have to plug in your ios phone and test on that, or use TestFlight.


Question: how to set up a landing page?

On https://tianqi.name/, you have a landing page in the root directory, and blog on  https://tianqi.name/blog
How should I configure my config.yml to achieve the same setup?

There are various ways to do that, two of which require you two first create a repository with the name .github.io and create your landing page there, and then either:

Fork this repo into your account into the gh-page branch with the name teXt. So now your landing page will be .github.io and blog will be at .github.io/teXt
Clone the repo into your system. Use Jekyll to generate the site data under the site folder and copy the folder into your .github.io repo with the appropriate name you want.

Thanks a lot, @xmehulx , I can't even express how grateful I am now. While I (almost) figured it out by myself, your reply has given me a push to finally complete my website in a way I want.


Message Task error after restore a postgres database

System information:

Ubuntu 20.20
DBeaver 7.1.1

Connection specification:

Postgres

Describe the problem you're observing:
When the restore process is over I get this error on the screen, even though he did the process successfully.

Other: When the backup process is over, the window with success message does not appear as the main window.

Other issue, when the task error window is active, if you try click on "Windows/Show Views/Errors " to see the logs, doesnt' works fine.

Oh, I believe that is can be an update feature.
When the restore is completed, do not refresh the "tables" tab, I need press F5 to reload with new restored tables.

thanks for the bug report

verified

Sirs, Can I comment here or I need to open a new issue? Is related on the same task.
Now we have a window with message success for backup and restore tools, but when these process are doned, the popups still behind the screen, like these examples:

and do not close the window? is it unavailable? I don't quite understand yet what the problem is

The problem is that the success window is behind the process window. I only found this out when I dragged the process window aside.
If the user is waiting for the success window it does not appear. It always seems to be processing something.|
Make sense?


Adding a ProgressBar when checking for updates

Description of the new feature / enhancement
Today, I checked the GitHub repo for PowerToys and noticed that there is an update. So, as a reasonable person, I headed back to the settings and clicked on "Check for updates," and then I waited. I thought it was stuck, so I assumed the update hadn't been rolled out yet for me. However, after a while, I came back, and I noticed that it had indeed received the update, but it took some time. There was no indication whatsoever of it doing so. So here I am, issuing a feature request.
Scenario when this would be used?
The scenario for using this feature request is when a PowerToys user initiates a manual check for updates through the application's settings. Currently, there is no clear indication or notification that an update is in progress, which can leave users uncertain about the status of the update. This feature would be used to provide users with real-time feedback and transparency during the update process, ensuring they are aware of what's happening and reducing potential confusion.
Supporting information
No response

/dup #24641


[Router] Refactor code

Replace 'a href' with 'Link' in the project where it's possible

Fixed in this PR #1336


Dynamic map bounds

What does this change?
Map now dynamically zooms out to fit the bounds of the user's location neighbours
How was this tested?
Manual testing
Accessibility
If applicable to your changes, have you:

[ ] Tested with screen reader
[ ] Checked to see if navigable by keyboard
[ ] Ensured that the colour contrast is passing

Documentation
If applicable to your changes, have you:

[ ] Added/edited the appropriate documentation
[ ] Added any component(s) to Storybook

oh — one other thing, this might break some of the end to end Cypress tests around the geolocation functionality. let me know if you want any pointers getting a end to end test environment to work locally

Oh yeah that would be helpful. I tried running cypress open but it doesn't recognise the cypress.config.ts and is always trying to create new ones :/

oh — one other thing, this might break some of the end to end Cypress tests around the geolocation functionality. let me know if you want any pointers getting a end to end test environment to work locally

Oh yeah that would be helpful. I tried running cypress open but it doesn't recognise the cypress.config.ts and is always trying to create new ones :/

i'd be happy to have a call with you to get you set up :)
sorry for all the update noise on the PR, it's the first time we've had an external contribution from a fork since setting up our new workflow, so have been changing a few things to get the GitHub Action workflows to run as expected


Centralization

Brings queue and worker supervision under Honeydew, instead of asking end users to supervise them.

This is great! The API is so much simpler.

やった！　＾＿＾

お見事です。:)


Feedback - Classification and Disambiguation

Hi, I have tried to pass my custom classification entity (albeit non-existing). It was not taken into account.
Here are step by step screen-shots and the used payloads and the result response in textual form:
https://drive.google.com/file/d/0B7AckGrBKzUtWV9QZ2sySnB4VVU/view?usp=sharing
https://drive.google.com/file/d/0B7AckGrBKzUtcFBvZG1HeERNZnc/view?usp=sharing
https://drive.google.com/file/d/0B7AckGrBKzUtYmdWZjZRcXZSclk/view?usp=sharing
https://drive.google.com/file/d/0B7AckGrBKzUtb3VXbDBlN1ZpVkU/view?usp=sharing
https://drive.google.com/file/d/0B7AckGrBKzUtTnBHQm1venQwRWc/view?usp=sharing
https://drive.google.com/file/d/0B7AckGrBKzUtMUVCc1RlaDNObVE/view?usp=sharing
https://drive.google.com/file/d/0B7AckGrBKzUtbTd1VlRwcDdOT3c/view?usp=sharing

Hi, I have tried to pass my custom classification entity (albeit non-existing). It was not taken into account.
Here are step by step screen-shots and the used payloads and the result response in textual form:
https://drive.google.com/file/d/0B7AckGrBKzUtWV9QZ2sySnB4VVU/view?usp=sharing
https://drive.google.com/file/d/0B7AckGrBKzUtcFBvZG1HeERNZnc/view?usp=sharing
https://drive.google.com/file/d/0B7AckGrBKzUtYmdWZjZRcXZSclk/view?usp=sharing
https://drive.google.com/file/d/0B7AckGrBKzUtb3VXbDBlN1ZpVkU/view?usp=sharing
https://drive.google.com/file/d/0B7AckGrBKzUtTnBHQm1venQwRWc/view?usp=sharing
https://drive.google.com/file/d/0B7AckGrBKzUtMUVCc1RlaDNObVE/view?usp=sharing
https://drive.google.com/file/d/0B7AckGrBKzUtbTd1VlRwcDdOT3c/view?usp=sharing

OK. So the reason was the incorrect name of the primary base (DBPedia vs. DBpedia). Thanks for pointing that out!
Still the feedback adoption is not yet entirely correct, as the suggested "Ble ble" entity appears in the result with incorrect scores (both in the candidates and chosen ones). Please fix that.

Taken back, @josef-janousek explained that the value is computed.


[1.2] watch certs directory instead of cert files to prevent breaking watch…

… in kubernetes (#14540) (#14618)

watch certs directory instead of cert files to prevent breaking watch in kubernetes

test case when file gets deleted

close tmpFile and remove check for duplicate values in map

close file after writing

use sync to ensure flushing data to disk

replace Errorf with Fatalf to exit early

move cancel before fatal

replace fatal with errorf in defer

defer cancel after initializing it

(cherry picked from commit 145b18a441045d6fad33d7916380d8642c7bf21d)
(cherry picked from commit cd379618370346b548533e90e08242399019d51d)
Replaces https://github.com/istio/istio/pull/14697 in backporting https://github.com/istio/istio/pull/14618, closing https://github.com/istio/istio/issues/14683

[APPROVALNOTIFIER] This PR is NOT APPROVED
This pull-request has been approved by: howardjohn
To fully approve this pull request, please assign additional approvers.
We suggest the following additional approver: zackbutcher
If they are not already assigned, you can assign the PR to them by writing /assign @zackbutcher in a comment when ready.
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

pilot/OWNERS

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment

[APPROVALNOTIFIER] This PR is APPROVED
This pull-request has been approved by: howardjohn, nmittler
The full list of commands accepted by this bot can be found here.
The pull request process is described here

Needs approval from an approver in each of these files:

pilot/OWNERS [nmittler]

Approvers can indicate their approval by writing /approve in a comment
Approvers can cancel approval by writing /approve cancel in a comment


ast in .json

Hi folks!
We're building a static analyzer and would love to have support for Fe from Day 1!
I was wondering, by any chance are you planning to add support for json output of the AST?

Hi @hacker-DOM! That would be sweet. We certainly can add support for json; here's a quick-and-dirty PR that does just that: #594, and a sample of what the output currently looks like: https://gist.github.com/sbillig/82f0f4db6c58d1b6075cd1de5c0a3ce5 (for this contract: https://github.com/ethereum/fe/blob/b2e06d42713a3b50a62648ff0a5a104332881817/crates/test-files/fixtures/demos/erc20_token.fe)
Does that format suffice? Note that this is just a direct encoding of the internal AST structures, and is guaranteed to change as we continue adding features to the language, and refining the guts of the implementation. We could try to define some stable-ish encoding of the AST someday, but that wouldn't make it to the top of our priority list for quite a while, I reckon.
Does this static analyzer exist in a public repo somewhere? What language are you implementing it in?

@sbillig Sorry for the long delay! In the end we decided to start with Solidity and add other langs later. Here's the repo https://github.com/Ackee-Blockchain/woke


Better Support for Object Types

Rather than mapping all user-defined types as nested, let the user choose object or nested as the type, and allow setting the configuration properties properly.
See: https://www.elastic.co/guide/en/elasticsearch/reference/current/object.html

Rather than generating our mappings through the macro, require the user do it, and take the mapping in the macro too:
struct MyType;

struct MyTypeMapping {
    fn name() -> &'static str {
        "my_type"
    }

    fn dynamic() -> Option<bool> {
        Some(true)
    }
}

impl_type_mapping(MyType, MyTypeMapping, [field1, field2])

This is going to mean changing the user-defined type mappings around, we also need an ElasticObjectMapping, which should be implemented and used when mapping the field:
pub trait ElasticObjectMapping
where Self : ElasticTypeMapping<()> + Sized + Serialize + Default + Clone {
    ...
}

This should be implemented along with ElasticUserTypeMapping, with similar field requirements.

Also rename user_type to just object, since it includes the object, nested and user-defined types

Not actually sure if the PUT Mapping API supports any fields besides properties, will need to test this.
If not, then the two mapping branches (field/type) for objects will be basically completely distinct.

We may need to add an ElasticObject<T, M: ElasticObjectMapping> struct so fields that need to override the mapping of their parent can do so.
This needs to be as transparent with T as possible; implement Into<T>, AsRef<T>, From<T> etc for ElasticObject<T, M>, so users don't need to explicitly do casting. This is not going to be the common case though, I've only rarely needed to change the defaults for object meta properties. And this is for the case where the same struct is reused differently on multiple structures.

So the current state of the object mapping is ok. It doesn't scale too well with nested types though. This is possibly because we have to allocate a default struct for each object field. So the same object graph will be allocated numerous times as we traverse. Not ideal:
test object::mapping_lrg          ... bench:       3,054 ns/iter (+/- 128)
test object::mapping_med          ... bench:       1,781 ns/iter (+/- 486)
test object::mapping_sml          ... bench:         610 ns/iter (+/- 19)

Happy with the state of this now. More enhancements will be added as separate issues


refactor(api): Add GEN2 pipettes to deck CLI

overview
This PR allows for any pipette single-channel model in deck CLI. You can also choose to do all of your calibration without a left channel pipette attached until immediately before mount calibration.
Other fun thing that snuck in is the ability to pick up tips instead of putting them on by hand. Closes #3612.
changelog

Utilize the pipettes already attached to the robot including GEN2 pipettes
Allow switching of pipette mount outside of other built in functions via s key press
Allow adding a pipette onto the left mount via the n key press
Pick up a tip by jogging to the location you want to pick up tips and then pressing the t key to initiate pick up

Known issue

The Z is about 5-6mm shorter than typical for gen2 pipettes in V1 and V2 (will continue investigating but decided it wasn't a blocker for this PR)
In V2 there is crashing in Z for the mount offset. I believe this is related to #1 and will continue investigating after.

review requests
Please test using any combination of single-channel pipettes (i.e. p300 and p10 or gen2 on one side and a p10 on the other etc) to verify that it doesn't require you to use a p300 single channel.
To test the pick up tip function, you can do:
python -m opentrons.deck_calibration.dc_main --pickupTip True
You must pick up tips before doing anything else if you pass in the above argument

The model offset thing looks good to me, but there is still that 5mm difference for v2 pipettes, and we can't merge it with head crashes in model offset.


Ranged+ranged pet archetype

Is your feature request related to a problem? Please describe.
Ranged AOO is not a thing, unless someone in melee triggers it for you.
Ranged pets are not a thing, and if they were, they wouldn't trigger AOO from any teamwork feats like current pets and thus be.. not great.
Describe the solution you'd like
A ranged pet - using spike as primary attack of course.  A manticore?  Idk, doesn't matter.
Protagonist/pet qualifying for triggering teamwork feats at ranged - without ya know.. going nuts with it.
More involved/harder I imagine - creating new teamwork feats specifically for ranged units.  Like an overwatch type of thing, step within X range triggers AOO.  If target changes focus or moves/runs away trigger AOO etc.

What kind of ranged pet and how does it fit to being an Isekai Protagonist?
A manticore does not seem that special nor like it would be the prefered pet of many a reincarnatee to me...

I mean a slime that uses watermagic or is a water elemental kineticist would probably make more sense as a special ranged pet rather than a manticore wouldn't it?
I think there were several Isekai anime recently that played with the slime as a pet concept...

ok, most have a dragon after a quick check...


R plot appears in VSCode panel, then panel turns blank gray.

Does this issue occur when all extensions are disabled?:
Scatterplot can be opened in external browser window without issue.

Should be reported to the R extension https://github.com/REditorSupport/vscode-R, please open a issue in their repo.


Publish to npm

and put a link to the actual package in the readme.
Publishing to npm would greatly improve the experience, especially when using a browserify setup. However currently the jsonapi-client package on npm is another library altogether, which makes it confusing.

Also looking for this. This library looks amazing, would love to use it within webpack without a shim

What do you think about renaming the repository and the npm package name to isomorphic-jsonapi-client to be able to publish it to npm?

This one bit me too. This library looks fantastically promising and I'm looking forward to using it. I only wish I'd found this earlier!

Hi, we would really love it if you could publish to npm as well. At the moment we are struggling to get the code to work properly in a React App.

+1 for publishing to NPM

Just to throw this out there since I didn't find it documented anywhere - the workaround for me was:
npm install --save git://github.com/holidayextras/jsonapi-client

Heads up, the existing package on NPM with the same name is NOT from this project: https://www.npmjs.com/package/jsonapi-client

@jokeyrhyme Indeed I accidentally installed that.
As a workaround install as:
npm install --save-dev jsonapi-client@holidayextras/jsonapi-client


useQuery: Reduce amount of retries

The default amount of retries the useQuery-hook executes are 3, and all of our widgets are using these default 3 retries. Whenever a nonexistent/error-prone URL is queried by useQuery, these 3 retries lead to pretty long loading times, which won't lead to anything.
Therefore, I suggest lowering the amount of retries to 2 or 1 to reduce the time a loading spinner is displayed.

We decided to keep the default of 3 retries.


inkscape: remove indefinite article

indefinite not infinitive

Your attention to detail is much appreciated! Thanks again :bow:


⚠ ClamAV has degraded performance

In c175a43, ClamAV (https://spamassassin.apache.org/) experienced degraded performance:

HTTP code: 200
Response time: 91 ms

Resolved: ClamAV performance has improved in 2525db0.


AppRailTile still requires "value" prop for pageState usage

Current Behavior
I'm currently using a pre-built theme (specifically, the crimson theme) along with the AppRailTile component. However, I've noticed that when I use the href prop instead of the value prop, the bg-primary-active-token class doesn't get removed when navigating away. This class is only removed if I also provide the value prop with the same value as the href prop, which seems unnecessary.
To clarify, when using the href prop without the value prop, the bg-primary-active-token class should be removed when navigating away, but this isn't happening. It's only removed if I also include the value prop with the same value as the href prop, which seems redundant.
Reproduction / Steps To Reproduce

Use 2 AppRailTile's and crimson theme (this may apply to other themes)
Add the following props

<AppRailTile
  tag="a"
  label="Home"
  href="/"
  class={"/" === $page.url.pathname ? "!bg-primary-500" : ""}
/>
<AppRailTile
  tag="a"
  label="Config"
  href="/config"
  class={"/config" === $page.url.pathname ? "!bg-primary-500" : ""}
/>

Navigate by clicking on the "Config" tile
Navigate back to the root page by clicking on the "Home" tile.
Watch as the active background persists on AppRailTile.

Anything else?
I believe the issue resides in the comparison made here: https://github.com/skeletonlabs/skeleton/blob/dev/src/lib/components/AppRail/AppRailTile.svelte#L46
Where the comparison is made again the value prop, even when using href.

I thought we had a similar issue, but it might have been a discussion on discord instead.
 When using anchor tiles you can now just opt for href and it'll take the place of value. Likewise this now supports passing a deferred store, which can be helpful when using the page store.
You can view the code changes here:
https://github.com/skeletonlabs/skeleton/pull/1402
And preview the documentation updates here:
https://skeleton-docs-git-fork-unlocomqx-feat-app-cbd12f-skeleton-labs.vercel.app/components/app-rail#page-state
I'd recommend you review this when it drops next week as I believe this may address your issue. If you continue to have issues, let me know and we'll gladly reopen this ticket.
Thanks!


Fix storage info for decl_storage

decl_storage still doesn't generate storage info (in case of partial storage info).
I missed to remove the early return in the macro in https://github.com/paritytech/substrate/pull/9246
This fix it and test it is correct.

bot merge


503 errors from canary service before rolling update

Hi,
I tested with below canary configuration. Canary test and deployment worked as expected, but several number of 503 errors were detected from canary service. Also, the higher maxWeight the higher number of 503 errors were observed. The 503 errors were observed only 1 seconds with below canary config, but I think you may be able to improve it.
I'm wondering that Flagger tore canary stack down too early before draining existing requests from the canary stack. I don't have too much knowledge of the project, but it may be able to be improved by delaying the canary stack termination until existing requests are responded.
Uploaded istio prometheus screenshot and vegeta plot.html. Let me know if you need more information from me.
Vegeta Test Load
150 qps of GET requests on a web page less than 200 Bytes.
Vegeta report from the result (54 503 errors):
Requests      [total, rate, throughput]  249974, 150.00, 149.96
Duration      [total, attack, wait]      27m46.5873736s, 27m46.486746486s, 100.627114ms
Latencies     [mean, 50, 95, 99, max]    110.489665ms, 100.59509ms, 115.350849ms, 288.51525ms, 5.100550775s
Bytes In      [total, mean]              60027002, 240.13
Bytes Out     [total, mean]              0, 0.00
Success       [ratio]                    99.98%
Status Codes  [code:count]               200:249920  503:54
Error Set:
503 Service Unavailable

Vegeta plot from the same test result:
[plot_origin_25p_canary.html.zip]
(https://github.com/weaveworks/flagger/files/3441024/plot_origin_25p_canary.html.zip)
Prometheus request count rate metrics on Istio gateway:

Canary template
---
apiVersion: flagger.app/v1alpha3
kind: Canary
metadata:
  name: {{.Chart.Name}}
  namespace: {{.Values.namespace}}
spec:
  provider: istio
  targetRef:
    apiVersion: apps/v1
    kind: Deployment
    name: {{.Chart.Name}} # this will generate a service with the same name
  progressDeadlineSeconds: 3600
  autoscalerRef:
    apiVersion: autoscaling/v2beta1
    kind: HorizontalPodAutoscaler
    name: {{.Chart.Name}}
  service:
    portDiscovery: true
    port: 8080
    gateways:
      - {{.Chart.Name}}
    hosts:
      - {{.Chart.Name}}.mytesthostname.com
  skipAnalysis: false
  canaryAnalysis:
    interval: {{.Values.releaseApprovalPollingInterval}}
    threshold: {{.Values.releaseApprovalPollingCount}}
    # max weight should be bigger than step weight to prevent releasing the new version before release-approval-check returns.
    maxWeight: 50
    stepWeight: 25
    webhooks:
      - name: release-approval-check
        type: rollout
        url: http://webhook.kube-system/release-approvals/check
        timeout: 10s
        metadata:
          token: {{.Values.version}}
      - name: log-release-version
        type: post-rollout
        url: http://webhook.kube-system/released-apps
        timeout: 10s
        metadata:
          token: {{.Values.version}}

Hi @cmoonExpedia
Can you please do the same tests with podinfo and see if you get any 503s? Flagger does not deal with draining, this is all managed by Kubernetes. If your app doesn't react to SIGTERM then you need a preStop hook like:
        lifecycle:
          preStop:
            exec:
              command:
              - /bin/sh
              - -c
              - sleep 3

Flagger could run one more loop before scaling down the canary deployment, but I'm not sure this would help if SIGTERM is not handled. What I think it happens, is that your app doesn't wait for the inflight requests to finish.


wget: unable to resolve host address ‘bin.equinox.io’

I have been trying all day to download and extract Cloudflare:
wget https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-arm.tgz && tar -xvzf cloudflared-stable-linux-arm.tgz
I keep getting wget: unable to resolve host address ‘bin.equinox.io’
I've tried changing the namerserver, I've refreshed and started over. Nothing seems to work. I can't find a solution.

I have been trying all day to download and extract Cloudflare:
wget https://bin.equinox.io/c/VdrWdbjqyF/cloudflared-stable-linux-arm.tgz && tar -xvzf cloudflared-stable-linux-arm.tgz
I keep getting wget: unable to resolve host address ‘bin.equinox.io’
I've tried changing the namerserver, I've refreshed and started over. Nothing seems to work. I can't find a solution.

link is currently working for me.. it looks like a internet connection issue with you.. try
 ping google.com

and see if you have a proper connection

Pinging google.com does not work work but <IP_ADDRESS> works.

Pinging google.com does not work work but <IP_ADDRESS> works.

well something is wrong with connection to internet on device, what os and hardware are you using?

PRETTY_NAME="Raspbian GNU/Linux 10 (buster)" NAME="Raspbian GNU/Linux" VERSION_ID="10" VERSION="10 (buster)" VERSION_CODENAME=buster ID=raspbian ID_LIKE=debian
I think this is on a Rpi 3b+. I'm trying to setup this SD before transferring it to my pi-hole raspberry (Rpi 4b+) running my current DNS.

PRETTY_NAME="Raspbian GNU/Linux 10 (buster)" NAME="Raspbian GNU/Linux" VERSION_ID="10" VERSION="10 (buster)" VERSION_CODENAME=buster ID=raspbian ID_LIKE=debian
I think this is on a Rpi 3b+. I'm trying to setup this SD before transferring it to my pi-hole raspberry (Rpi 4b+) running my current DNS.

ohh so if fresh install os image and do a ping test do you get same issue.. is it ethernet cable or wifi?.

I've done 1 fresh install. I'd have to try again. It is ethernet cable.

PRETTY_NAME="Raspbian GNU/Linux 10 (buster)" NAME="Raspbian GNU/Linux" VERSION_ID="10" VERSION="10 (buster)" VERSION_CODENAME=buster ID=raspbian ID_LIKE=debian
I think this is on a Rpi 3b+. I'm trying to setup this SD before transferring it to my pi-hole raspberry (Rpi 4b+) running my current DNS.

and  I don't think you can switch SD card between pi 3 and 4 cause of os image for that specific hardware

I've done 1 fresh install. I'd have to try again. It is ethernet cable.

OK do that and ping test and install cloudflare first and if working something you did before messed up connection

I've done 1 fresh install. I'd have to try again. It is ethernet cable.

@CommittotheIndian  did everything work out fine?

I'm still working on it. I was able to get cloudflare to load when I did that step first but then I started getting errors on AdGuard.

You've closed this issue prematurely (didn't even give me time to respond).
When I load AdGuard first, Cloudflare won't load.
When I load Cloudflare first, AdGuard throws errors.
Error: control/version.json | Couldn't get version check json from https://static.adguard.com/adguardhome/release/version.json: *fmt.wrapError updater: HTTP GET https://static.adguard.com/adguardhome/release/version.json: Get "https://static.adguard.com/adguardhome/release/version.json": couldn't initialize HTTP client or transport, cause: timeout exceeded: 10001 ms | 502
Your process is flawed.

You've closed this issue prematurely (didn't even give me time to respond).
When I load AdGuard first, Cloudflare won't load.
When I load Cloudflare first, AdGuard throws errors.
Error: control/version.json | Couldn't get version check json from https://static.adguard.com/adguardhome/release/version.json: *fmt.wrapError updater: HTTP GET https://static.adguard.com/adguardhome/release/version.json: Get "https://static.adguard.com/adguardhome/release/version.json": couldn't initialize HTTP client or transport, cause: timeout exceeded: 10001 ms | 502
Your process is flawed.

you need to make pi ip address static.. I closed issue cause its not a issue when it's working.

You've closed this issue prematurely (didn't even give me time to respond).
When I load AdGuard first, Cloudflare won't load.
When I load Cloudflare first, AdGuard throws errors.
Error: control/version.json | Couldn't get version check json from https://static.adguard.com/adguardhome/release/version.json: *fmt.wrapError updater: HTTP GET https://static.adguard.com/adguardhome/release/version.json: Get "https://static.adguard.com/adguardhome/release/version.json": couldn't initialize HTTP client or transport, cause: timeout exceeded: 10001 ms | 502
Your process is flawed.

and procees is not flawed.. you need to follow instructions

The IP is static. The process of your steps is not working. Your GitHub isn't for software, its for the process of installing and launching software. That process is flawed.
If I do AdGuard first, I can't get cloud flare.
I've been working on this all day, multiple  variations, erasing and re-flashing. Nothing is working.

You've closed this issue prematurely (didn't even give me time to respond).
When I load AdGuard first, Cloudflare won't load.
When I load Cloudflare first, AdGuard throws errors.
Error: control/version.json | Couldn't get version check json from https://static.adguard.com/adguardhome/release/version.json: *fmt.wrapError updater: HTTP GET https://static.adguard.com/adguardhome/release/version.json: Get "https://static.adguard.com/adguardhome/release/version.json": couldn't initialize HTTP client or transport, cause: timeout exceeded: 10001 ms | 502
Your process is flawed.

and procees is not flawed.. you need to follow instructions

Explain what instruction you think I'm missing. I'll be glad to prove you wrong when it still doesn't work.

If I follow your instructions I get wget: unable to resolve host address ‘bin.equinox.io’ when I get to the Cloudflare DOH install.
I followed your next suggestion and did Cloudflare. Then I go back to your instructions and get wget -O root.hints https://www.internic.net/domain/named.root && sudo mv root.hints /var/lib/unbound/ --2021-06-28 23:02:36--  https://www.internic.net/domain/named.root Resolving www.internic.net (www.internic.net)... failed: Temporary failure in name resolution. wget: unable to resolve host address ‘www.internic.net’
So no matter which path I take, something isn't communicating correctly.

The IP is static. The process of your steps is not working. Your GitHub isn't for software, its for the process of installing and launching software. That process is flawed.
If I do AdGuard first, I can't get cloud flare.
I've been working on this all day, multiple  variations, erasing and re-flashing. Nothing is working.

cuase when you install adguard first you need
and do not install cloudflare first.. I think it's that adguard issue.. so let me know

I've done 1 fresh install. I'd have to try again. It is ethernet cable.

OK do that and ping test and install cloudflare first and if working something you did before messed up connection

You told me to try Cloudflare first.
If I do AdGuard first, I can't install Cloudflare. If I do Cloudflare first, I can't install anything else.
Using other links, I was able to get all installed but the test links revealed I wasn't ever using Cloudflare DOH or DOT.

If I follow your instructions I get wget: unable to resolve host address ‘bin.equinox.io’ when I get to the Cloudflare DOH install.
I followed your next suggestion and did Cloudflare. Then I go back to your instructions and get wget -O root.hints https://www.internic.net/domain/named.root && sudo mv root.hints /var/lib/unbound/ --2021-06-28 23:02:36--  https://www.internic.net/domain/named.root Resolving www.internic.net (www.internic.net)... failed: Temporary failure in name resolution. wget: unable to resolve host address ‘www.internic.net’
So no matter which path I take, something isn't communicating correctly.

so sudo apt install unbound -y working and then `wget -O root.hints https://www.internic.net/domain/named.root && sudo mv root.hints /var/lib/unbound/' does not?

If I follow your instructions I get wget: unable to resolve host address ‘bin.equinox.io’ when I get to the Cloudflare DOH install.
I followed your next suggestion and did Cloudflare. Then I go back to your instructions and get wget -O root.hints https://www.internic.net/domain/named.root && sudo mv root.hints /var/lib/unbound/ --2021-06-28 23:02:36--  https://www.internic.net/domain/named.root Resolving www.internic.net (www.internic.net)... failed: Temporary failure in name resolution. wget: unable to resolve host address ‘www.internic.net’
So no matter which path I take, something isn't communicating correctly.

so sudo apt install unbound -y working and then `wget -O root.hints https://www.internic.net/domain/named.root && sudo mv root.hints /var/lib/unbound/' does not?

correct

If I follow your instructions I get wget: unable to resolve host address ‘bin.equinox.io’ when I get to the Cloudflare DOH install.
I followed your next suggestion and did Cloudflare. Then I go back to your instructions and get wget -O root.hints https://www.internic.net/domain/named.root && sudo mv root.hints /var/lib/unbound/ --2021-06-28 23:02:36--  https://www.internic.net/domain/named.root Resolving www.internic.net (www.internic.net)... failed: Temporary failure in name resolution. wget: unable to resolve host address ‘www.internic.net’
So no matter which path I take, something isn't communicating correctly.

so sudo apt install unbound -y working and then `wget -O root.hints https://www.internic.net/domain/named.root && sudo mv root.hints /var/lib/unbound/' does not?

correct

so is wget working with other links?

go to adguard home page, select "step guide" and take a screenshot let me seen something

I've also started getting this error in AdGuard

Once I get AdGuard (even though my network is still pointed at <IP_ADDRESS> and not the AdGuard) the RPi I'm running it on, can not get to anything else. Here I'm tryin api update & apt upgrade again.
 Done               Building dependency tree        Reading state information... Done All packages are up to date. W: Failed to fetch http://raspbian.raspberrypi.org/raspbian/dists/buster/InRelease  Temporary failure resolving 'raspbian.raspberrypi.org' W: Failed to fetch http://archive.raspberrypi.org/debian/dists/buster/InRelease  Temporary failure resolving 'archive.raspberrypi.org' W: Some index files failed to download. They have been ignored, or old ones used instead. Reading package lists... Done Building dependency tree        Reading state information... Done Calculating upgrade... Done The following package was automatically installed and is no longer required:   python-colorzero Use 'sudo apt autoremove' to remove it. 0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.

I just tried a new SD card and new RPi 4+. With AdGuard installed, I can't even install sudo apt-update/upgrade packages.
Err:1 http://raspbian.raspberrypi.org/raspbian buster InRelease                       Temporary failure resolving 'raspbian.raspberrypi.org'

I just tried a new SD card and new RPi 4+. With AdGuard installed, I can't even install sudo apt-update/upgrade packages.

I have a Unifi system.
My 2nd firewall rules allow all traffic to my DNS server (currently my Pi-hole) and port 53.
3rd rule allows all DNS traffic allows my DNS Server to port 53.
I don’t believe I have any specific rules for port 50 right now.

I have a Unifi system.
My 2nd firewall rules allow all traffic to my DNS server (currently my Pi-hole) and port 53.
3rd rule allows all DNS traffic allows my DNS Server to port 53.
I don’t believe I have any specific rules for port 50 right now.

so your raspberry pi is connected to pihole when you are installing adguard?

I thought about that. I’ve tried it with disabling pi-hole. I’ve tried changing my DNS service to cloudflare or Google (bypassing pi-hole) and even tried installing on a blank SD in the pi-hole rpi, so no actual pi-hole instance.
Nothing worked. As soon as AdGuard is installed, I start getting blocked (even with it disabled and no traffic directed at it).

I thought about that. I’ve tried it with disabling pi-hole. I’ve tried changing my DNS service to cloudflare or Google (bypassing pi-hole) and even tried installing on a blank SD in the pi-hole rpi, so no actual pi-hole instance.
Nothing worked. As soon as AdGuard is installed, I start getting blocked (even with it disabled and no traffic directed at it).

you should just use isp provider default dns

Ok. I had to go out of town for a couple days. I’ll give that a try when I get home or attempt to try this setup on a different internet connection.

Ok. I had to go out of town for a couple days. I’ll give that a try when I get home or attempt to try this setup on a different internet connection.

yes it has to be some setting on router or some other dns service causing conflict with port 53 or 50.. that's the only thing I can think of

Ok, I think I resolved all my issues.
After installing AdGuard, I had to change the name server DNS sudo nano /etc/resolv.conf. I changed it to my ISP provided DNS which allowed me to install all other packages and set them up without issue. Later reboots, changes it back to <IP_ADDRESS>.
I have noticed sometimes DNS over TLS is yes and other times it is no, usually a refresh changes it one way or the other. I assume that has to do with the setting of the fastest IP address.

Other than figuring out the allow (white) lists, everything seems to be running.

Ok, I think I resolved all my issues.
After installing AdGuard, I had to change the name server DNS sudo nano /etc/resolv.conf. I changed it to my ISP provided DNS which allowed me to install all other packages and set them up without issue. Later reboots, changes it back to <IP_ADDRESS>.
I have noticed sometimes DNS over TLS is yes and other times it is no, usually a refresh changes it one way or the other. I assume that has to do with the setting of the fastest IP address.

Other than figuring out the allow (white) lists, everything seems to be running.

good news 👍
what bowser you using and what device?.. try to fix the hit and miss with DoT

I used Safari on a MacBook Air. I’ll try a different browser later, didn’t think about it.


Add CockroachDB to the repository

Add CockroachDB to the repository.

sorry for delays on this... I will test this today


Preview button show all effects at one

Checklist

[x] I ran npm test locally and it passed without errors.

[x] I only edited the _data/pixels.json file.

[x] I entered the username in the pixels.json that I'm also using to create this pull request.
[x] I acknowledge that all my contributions will be made under the project's license.

 That directory is intentionally ignored by git using the .gitignore file because it will be generated by Netlify during the deployment process. Could you please revert those changes? Thank you for your contribution!

@dkundel Sorry! I wanna add a functionality to party-mode.js file. Is possible to add a functionality there? I don't see the correct way to add it.

There is one version of the party-mode.js in assets/javascript/party-mode.js that you can edit. It will automatically be copied into _site during deployment

There is one version of the party-mode.js in assets/javascript/party-mode.js that you can edit. It will automatically be copied into _site during deployment

Thanks @dkundel can you re-review?

Yeah this is great! Since this seems to just run all of them after each other maybe calling this Run All (a) makes more sense. Also can we run reset as the last one so it's back to normal after that?

Sure @dkundel! Let me see that

Yeah this is great! Since this seems to just run all of them after each other maybe calling this Run All (a) makes more sense. Also can we run reset as the last one so it's back to normal after that?

Done! Also, I made a rebase. Can you re-review, please?


Battery Entity unavailable

What type of installation are you running?
Desktop
Which Linux OS are you using?
Linux Mint 21.2 Cinnamon
Which version of LNXLink has the issue?
lnxlink==2023.11.0
Describe the problem
After making the installation the Battery entity is not avaivailable

Verified with MQTT explorer and I can see the topic with the battery brand and percentage
Additional context
In Home assistant i can see this error in the logs. I don't know if it's related.
2023-11-17 13:43:03.303 ERROR (MainThread) [homeassistant.components.mqtt.select] Invalid option for select.mint_pr_power_profile: '' (valid options: [])

Configuration
mqtt:
  prefix: lnxlink
  clientId: Mint-PR
  server: <IP_ADDRESS>
  port: 1883
  auth:
    user: user
    pass: pas
    tls: false
  discovery:
    enabled: true
  lwt:
    enabled: true
    qos: 1
    retain: true
    connectMsg: 'ON'
    disconnectMsg: 'OFF'
update_interval: 5
modules: null
custom_modules: null
exclude:
- brightness

Logs
Nov 17 11:08:36 Mint-MBP systemd[1041]: Started LNXlink.
Nov 17 11:08:36 Mint-MBP lnxlink[8563]: INFO:lnxlink:LNXlink 2023.11.0 started: 3.10.12
Nov 17 11:08:36 Mint-MBP lnxlink[8563]: INFO:lnxlink:Loaded addons: memory, webcam, xdg_open, sys_updates, send_keys, keep_alive, screenshot, bash, gpu, disk_usage, speech_recognition, cpu, power_profile, battery, inference_time, shutdown, microphone_used, idle, notify, suspend, camera_used, network, fullscreen, screen_onoff, update, media, audio_select, restart, required_restart, boot_select
Nov 17 11:08:36 Mint-MBP lnxlink[8563]: INFO:lnxlink:Connected to MQTT with code 0
Nov 17 11:10:22 Mint-MBP systemd[1041]: Stopping LNXlink...
Nov 17 11:10:22 Mint-MBP lnxlink[8563]: INFO:lnxlink:stopped gracefully
Nov 17 11:10:22 Mint-MBP lnxlink[8563]: INFO:lnxlink:Power Down detected.
Nov 17 11:10:22 Mint-MBP lnxlink[8563]: INFO:lnxlink:Disconnected from MQTT.
Nov 17 11:10:22 Mint-MBP lnxlink[8563]: /home/lrivera
Nov 17 11:10:23 Mint-MBP systemd[1041]: Stopped LNXlink.
Nov 17 11:10:23 Mint-MBP systemd[1041]: lnxlink.service: Consumed 6.539s CPU time.
Nov 17 11:10:23 Mint-MBP systemd[1041]: Started LNXlink.
Nov 17 11:10:23 Mint-MBP lnxlink[9344]: INFO:lnxlink:LNXlink 2023.11.0 started: 3.10.12
Nov 17 11:10:23 Mint-MBP lnxlink[9344]: INFO:lnxlink:Loaded addons: memory, webcam, xdg_open, sys_updates, send_keys, keep_alive, screenshot, bash, gpu, disk_usage, speech_recognition, cpu, power_profile, battery, inference_time, shutdown, microphone_used, idle, notify, suspend, camera_used, network, fullscreen, screen_onoff, update, media, audio_select, restart, required_restart, boot_select
Nov 17 11:10:23 Mint-MBP lnxlink[9344]: INFO:lnxlink:Connected to MQTT with code 0
Nov 17 11:10:45 Mint-MBP lnxlink[9344]: INFO:lnxlink:Message received webcam/webcam/: b'ON'
Nov 17 11:10:55 Mint-MBP lnxlink[9344]: INFO:lnxlink:Message received webcam/webcam/: b'OFF'
Nov 17 11:17:44 Mint-MBP systemd[1041]: Stopping LNXlink...
Nov 17 11:17:44 Mint-MBP lnxlink[9344]: INFO:lnxlink:stopped gracefully
Nov 17 11:17:44 Mint-MBP lnxlink[9344]: INFO:lnxlink:Power Down detected.
Nov 17 11:17:44 Mint-MBP lnxlink[9344]: INFO:lnxlink:Disconnected from MQTT.
Nov 17 11:17:44 Mint-MBP lnxlink[9344]: /home/lrivera
Nov 17 11:17:44 Mint-MBP systemd[1041]: Stopped LNXlink.
Nov 17 11:17:44 Mint-MBP systemd[1041]: lnxlink.service: Consumed 20.868s CPU time.
Nov 17 11:20:41 Mint-MBP systemd[1041]: Started LNXlink.
Nov 17 11:20:41 Mint-MBP lnxlink[13537]: INFO:lnxlink:LNXlink 2023.11.0 started: 3.10.12
Nov 17 11:20:41 Mint-MBP lnxlink[13537]: INFO:lnxlink:Loaded addons: memory, webcam, xdg_open, sys_updates, send_keys, keep_alive, screenshot, bash, gpu, disk_usage, speech_recognition, cpu, power_profile, battery, inference_time, shutdown, microphone_used, idle, notify, suspend, camera_used, network, fullscreen, screen_onoff, update, media, audio_select, restart, required_restart, boot_select
Nov 17 11:20:41 Mint-MBP lnxlink[13537]: INFO:lnxlink:Connected to MQTT with code 0
Nov 17 11:24:01 Mint-MBP lnxlink[13537]: INFO:lnxlink:Message received restart/restart/: b'PRESS'
Nov 17 11:24:01 Mint-MBP lnxlink[13537]: INFO:lnxlink:Power Down detected.
Nov 17 11:24:01 Mint-MBP lnxlink[13537]: INFO:lnxlink:Power Down detected.
Nov 17 11:24:01 Mint-MBP lnxlink[13537]: INFO:lnxlink:stopped gracefully
Nov 17 11:24:01 Mint-MBP lnxlink[13537]: INFO:lnxlink:Power Down detected.
Nov 17 11:24:01 Mint-MBP systemd[1041]: Stopping LNXlink...
Nov 17 11:24:01 Mint-MBP systemd[1041]: lnxlink.service: Main process exited, code=exited, status=1/FAILURE
Nov 17 11:24:01 Mint-MBP systemd[1041]: lnxlink.service: Failed with result 'exit-code'.
Nov 17 11:24:01 Mint-MBP systemd[1041]: Stopped LNXlink.
Nov 17 11:24:01 Mint-MBP systemd[1041]: lnxlink.service: Consumed 10.333s CPU time.
-- Boot a5480dd16ef141a7aa5cfe7ec6ba59fc --
Nov 17 11:24:30 Mint-MBP systemd[1043]: Started LNXlink.
Nov 17 11:24:31 Mint-MBP lnxlink[1051]: INFO:lnxlink:LNXlink 2023.11.0 started: 3.10.12
Nov 17 11:24:31 Mint-MBP lnxlink[1051]: INFO:lnxlink:Loaded addons: memory, webcam, xdg_open, sys_updates, send_keys, keep_alive, screenshot, bash, gpu, disk_usage, speech_recognition, cpu, power_profile, battery, inference_time, shutdown, microphone_used, idle, notify, suspend, camera_used, network, fullscreen, screen_onoff, update, media, audio_select, restart, required_restart, boot_select
Nov 17 11:24:31 Mint-MBP lnxlink[1051]: INFO:lnxlink:Connected to MQTT with code 0
Nov 17 11:24:32 Mint-MBP lnxlink[1051]: ERROR:lnxlink:Error with addon Idle: [Errno 2] No such file or directory: 'xprintidle', Traceback (most recent call last):
Nov 17 11:24:32 Mint-MBP lnxlink[1051]:   File "/home/lrivera/lnxlink_venv/lib/python3.10/site-packages/lnxlink/__main__.py", line 96, in run_modules
Nov 17 11:24:32 Mint-MBP lnxlink[1051]:     pub_data = method["method"]()
Nov 17 11:24:32 Mint-MBP lnxlink[1051]:   File "/home/lrivera/lnxlink_venv/lib/python3.10/site-packages/lnxlink/modules/idle.py", line 18, in get_info
Nov 17 11:24:32 Mint-MBP lnxlink[1051]:     idle_ms = monitor.get_dbus_idle()
Nov 17 11:24:32 Mint-MBP lnxlink[1051]:   File "/home/lrivera/lnxlink_venv/lib/python3.10/site-packages/dbus_idle/__init__.py", line 100, in get_dbus_idle
Nov 17 11:24:32 Mint-MBP lnxlink[1051]:     stdout = subprocess.run(
Nov 17 11:24:32 Mint-MBP lnxlink[1051]:   File "/usr/lib/python3.10/subprocess.py", line 503, in run
Nov 17 11:24:32 Mint-MBP lnxlink[1051]:     with Popen(*popenargs, **kwargs) as process:
Nov 17 11:24:32 Mint-MBP lnxlink[1051]:   File "/usr/lib/python3.10/subprocess.py", line 971, in __init__
Nov 17 11:24:32 Mint-MBP lnxlink[1051]:     self._execute_child(args, executable, preexec_fn, close_fds,
Nov 17 11:24:32 Mint-MBP lnxlink[1051]:   File "/usr/lib/python3.10/subprocess.py", line 1863, in _execute_child
Nov 17 11:24:32 Mint-MBP lnxlink[1051]:     raise child_exception_type(errno_num, err_msg, err_filename)
Nov 17 11:24:32 Mint-MBP lnxlink[1051]: FileNotFoundError: [Errno 2] No such file or directory: 'xprintidle'
Nov 17 11:24:33 Mint-MBP lnxlink[1051]: ERROR:lnxlink:Error with addon Fullscreen: 'NoneType' object is not iterable, Traceback (most recent call last):
Nov 17 11:24:33 Mint-MBP lnxlink[1051]:   File "/home/lrivera/lnxlink_venv/lib/python3.10/site-packages/lnxlink/__main__.py", line 96, in run_modules
Nov 17 11:24:33 Mint-MBP lnxlink[1051]:     pub_data = method["method"]()
Nov 17 11:24:33 Mint-MBP lnxlink[1051]:   File "/home/lrivera/lnxlink_venv/lib/python3.10/site-packages/lnxlink/modules/fullscreen.py", line 29, in get_info
Nov 17 11:24:33 Mint-MBP lnxlink[1051]:     windows = ewmh.getClientList()
Nov 17 11:24:33 Mint-MBP lnxlink[1051]:   File "/home/lrivera/lnxlink_venv/lib/python3.10/site-packages/ewmh/ewmh.py", line 248, in getClientList
Nov 17 11:24:33 Mint-MBP lnxlink[1051]:     return [self._createWindow(w)
Nov 17 11:24:33 Mint-MBP lnxlink[1051]: TypeError: 'NoneType' object is not iterable

It seems that the LNXlink service keeps crashing, so that's the reason why the battery sensor is unavailable. This is due to some modules not supported by your OS, so they need to be excluded.
Based on your logs, I can see issues with the following modules:
power_profile
Based on the Home Assistant logs the power is not supported, so you might want to exclude it. This is the result from this command powerprofilesctl list.
If it returns something please write the result to fix this module.
idle
There seems to be an issue with the idle module which is using the xprintidle as a backup command to get the idle time. You can try installing this, but if the issue is not fixed you will have to exclude this too.
On Ubuntu the command is sudo apt install xprintidle, but I am not sure for Linux Mint.
fullscreen
It seems that there is an issue with the fullscreen module, so most likely you will have to exclude this too.

@bkbilly Thank you no more error in the logs after installing the software you suggest and after running the powerprofile command it suggest to install another one and adding fullscreen to the exceptions. But the most important for me which is the battery is still not available. I want to create an automation that charge the laptop battery when is lower than 30% and when it get to 100% turn off the charger. I look on the issues and this is not the first time the battery entity is not showing the other time the guy fix the problem extracting the value with node red but i still haven't use node red. Any idea if this could be fixed or since I can see the topic with the value how to add it to home assistant manually? Thank you

I think I know what is the issue...
You will have to enable the sensor on home assistant because by default it's not enabled.

Thank you, thank you!!!

On the dev installation type, I've changed the behaviour of how battery sensors are created.
A new sensor is created for each battery device found on the system with a unique name.
If a new device is connected, it will automatically show up as a new sensor.
This will be on the next release and it will break any automations you might have created, but it's necessary for these new features to work.


how to find all metrics recursively in 1 http request?

Hi,
I've been looking in webapp/graphite/metrics/views.py trying to find a way to get a listing of all metrics in 1 request. (for example in json)
this doesn't seem to be possible yet.
I'm a bit confused, it seems that there are multiple functions that do similar things, by different means.:
find_view finds metrics by using a Store object from webapp/graphite/storage.py, whereas expand_view does something similar, as does tree_json which uses another mechanism, and then there's search which I haven't figured quite out (it seems to use a textbased index. btw: interestingly on my testing machine the index file does not get created)
please advise how I should proceed.

Is there a way to find out active metrics and not all metrics. We have a lot of metrics which we don't use anymore but they do appear in the list with /metrics/find?query=*. I only want to see the metrics that are being actively used right now.

@supre - I have an alternate approach to this problem. On the Graphite server itself, I run some variation of this command: sudo find /opt/graphite/storage/whisper -type f -name *.wsp -mtime +7 -ls -delete && sudo find /opt/graphite/storage/whisper/ -type d -empty -delete, which will remove all metrics that have not been written to in the past week.

@supre http://graphite-api.readthedocs.io/en/latest/api.html#the-metrics-api suggests the from parameter, fwiw.


pyaudio error

C:\Users\Vinicius\Desktop\RAT>python RATAttack.py
Traceback (most recent call last):
File "RATAttack.py", line 26, in
import pyaudio, wave                                                                        # /hear
ModuleNotFoundError: No module named 'pyaudio'

You need to install pyAudio and pyHook. There are two wheel files for each one (32 and 64bit).
To install a wheel just do pip install FILE_NAME

C:\WINDOWS\system32>pip install pyaudio
Collecting pyaudio
Downloading https://files.pythonhosted.org/packages/ab/42/b4f04721c5c5bfc196ce156b3c768998ef8c0ae3654ed29ea5020c749a6b/PyAudio-0.2.11.tar.gz
Building wheels for collected packages: pyaudio
Running setup.py bdist_wheel for pyaudio ... error
Complete output from command c:\users\vinicius\appdata\local\programs\python\python37\python.exe -u -c "import setuptools, tokenize;file='C:\Users\Vinicius\AppData\Local\Temp\pip-install-xcm5me62\pyaudio\setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" bdist_wheel -d C:\Users\Vinicius\AppData\Local\Temp\pip-wheel-411brlg1 --python-tag cp37:
running bdist_wheel
running build
running build_py
creating build
creating build\lib.win-amd64-3.7
copying src\pyaudio.py -> build\lib.win-amd64-3.7
running build_ext
building '_portaudio' extension
creating build\temp.win-amd64-3.7
creating build\temp.win-amd64-3.7\Release
creating build\temp.win-amd64-3.7\Release\src
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -DMS_WIN64=1 -Ic:\users\vinicius\appdata\local\programs\python\python37\include -Ic:\users\vinicius\appdata\local\programs\python\python37\include "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\winrt" /Tcsrc/_portaudiomodule.c /Fobuild\temp.win-amd64-3.7\Release\src/_portaudiomodule.obj
_portaudiomodule.c
c:\users\vinicius\appdata\local\programs\python\python37\include\pyconfig.h(117): warning C4005: 'MS_WIN64': macro redefinition
c:\users\vinicius\appdata\local\programs\python\python37\include\pyconfig.h(117): note: command-line arguments:  see previous definition of 'MS_WIN64'
src/_portaudiomodule.c(29): fatal error C1083: Cannot open include file: 'portaudio.h': No such file or directory
error: command 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\cl.exe' failed with exit status 2

Failed building wheel for pyaudio
Running setup.py clean for pyaudio
Failed to build pyaudio
Installing collected packages: pyaudio
Running setup.py install for pyaudio ... error
Complete output from command c:\users\vinicius\appdata\local\programs\python\python37\python.exe -u -c "import setuptools, tokenize;file='C:\Users\Vinicius\AppData\Local\Temp\pip-install-xcm5me62\pyaudio\setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" install --record C:\Users\Vinicius\AppData\Local\Temp\pip-record-w47ey69j\install-record.txt --single-version-externally-managed --compile:
running install
running build
running build_py
creating build
creating build\lib.win-amd64-3.7
copying src\pyaudio.py -> build\lib.win-amd64-3.7
running build_ext
building '_portaudio' extension
creating build\temp.win-amd64-3.7
creating build\temp.win-amd64-3.7\Release
creating build\temp.win-amd64-3.7\Release\src
C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\cl.exe /c /nologo /Ox /W3 /GL /DNDEBUG /MD -DMS_WIN64=1 -Ic:\users\vinicius\appdata\local\programs\python\python37\include -Ic:\users\vinicius\appdata\local\programs\python\python37\include "-IC:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\INCLUDE" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\ucrt" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\shared" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\um" "-IC:\Program Files (x86)\Windows Kits\10\include\10.0.10240.0\winrt" /Tcsrc/_portaudiomodule.c /Fobuild\temp.win-amd64-3.7\Release\src/_portaudiomodule.obj
_portaudiomodule.c
c:\users\vinicius\appdata\local\programs\python\python37\include\pyconfig.h(117): warning C4005: 'MS_WIN64': macro redefinition
c:\users\vinicius\appdata\local\programs\python\python37\include\pyconfig.h(117): note: command-line arguments:  see previous definition of 'MS_WIN64'
src/_portaudiomodule.c(29): fatal error C1083: Cannot open include file: 'portaudio.h': No such file or directory
error: command 'C:\Program Files (x86)\Microsoft Visual Studio 14.0\VC\BIN\x86_amd64\cl.exe' failed with exit status 2
----------------------------------------

Command "c:\users\vinicius\appdata\local\programs\python\python37\python.exe -u -c "import setuptools, tokenize;file='C:\Users\Vinicius\AppData\Local\Temp\pip-install-xcm5me62\pyaudio\setup.py';f=getattr(tokenize, 'open', open)(file);code=f.read().replace('\r\n', '\n');f.close();exec(compile(code, file, 'exec'))" install --record C:\Users\Vinicius\AppData\Local\Temp\pip-record-w47ey69j\install-record.txt --single-version-externally-managed --compile" failed with error code 1 in C:\Users\Vinicius\AppData\Local\Temp\pip-install-xcm5me62\pyaudio\

No, we have a file in the repo.

Do pip install PyAudio-0.2.11-cp37-cp37m-win_amd64.whl

working now, thanks guy

Your welcome guy

@dudeisbrendan03 I want to get rid of these wheels. And the UPX binary. I want to clean up a few things. Why aren't we installing pyHook and pyAudio with pip again?

Last time I was working on this you couldn't install it with pip as it wasn't on Pypi