Centralize rainbird config and add binary sensor platform

Description:

[x] Bump pyrainbird to 0.4.1
Cache states of sprinklers for efficient communication to controller
fixed rainsensor state
added rainsensor binary sensor

Checklist:

[x] The code change is tested and works locally.
[x] There is no commented out code in this PR.
[x] I have followed the development checklist
[x] New or updated dependencies have been added to requirements_all.txt by running python3 -m script.gen_requirements_all.

There has to be upgrade to pyrainbird 0.4.1. Testing with HA I found bug there.

Make sure to bump the library versions here too. They are still at 0.4.0.

Yes, I'm waiting for publishing it. I'm not owner of pyraindbird library so I have wait until @jbarrancos publishes it to pypi.
Then I will update it.

Upgraded to pyrainbird 0.4.1, tested on local instance and all seems to work flawlessly

@jbarrancos May I ask you how does scan_interval works?
Home assistant core finds out if component has this flag in config and in that case it sets proper update interval?
Or how is update scheduled? I can not find docs which explain it.

Yes, correct. It polls the “sensor” to know it’s state(s).
From: Petr Vraník<EMAIL_ADDRESS>Sent: Tuesday, 10 September 2019 10:40
To: home-assistant/home-assistant<EMAIL_ADDRESS>Cc: Jordy Barrancos<EMAIL_ADDRESS>Mention<EMAIL_ADDRESS>Subject: Re: [home-assistant/home-assistant] Centralize rainbird config and add binary sensor platform (#26393)
@jbarrancoshttps://github.com/jbarrancos May I ask you how does scan_interval works?
Home assistant core finds out if component has this flag in config and in that case it sets proper update interval?
Or how is update scheduled? I can not find docs which explain it.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHubhttps://github.com/home-assistant/home-assistant/pull/26393?email_source=notifications&email_token=AHO4AOEYYUUO5V65NNG2IQ3QI5MMZA5CNFSM4ITJFVAKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOD6KKFIQ#issuecomment-529834658, or mute the threadhttps://github.com/notifications/unsubscribe-auth/AHO4AOE5SSD5T7GZSLGS5TDQI5MMZANCNFSM4ITJFVAA.

Please add a paragraph in the PR description about the breaking change. Describe briefly what changed and what the user needs to do to cope with the breaking change.

Please set the defaults as before too.

I'm sorry, which defaults do you mean?

The defaults we removed here:
https://github.com/home-assistant/home-assistant/pull/26393/commits/60ae83aecc4e871b11a46b66d43efb8ba8b59473#diff-d575fd59bad63f44b30cd5e8ef6286baL39-L44

If you mean _set_defaults to set irrigation times for zones in configuration time, it does not make sense. Zones are not known in configuration time, so could not be set. They are discovered from controller in time of platform setup.

We have a zone config schema. We should set the default trigger time in the zone schema.

We can set values only for zones we want to overwrite some config. We can not overwrite irrigation time for zones that we don't have in configuration. So it is nonsense to substitute default twice. In config ant then in runtime. That will be code duplication. What will be that for?

Ok. Address the last comment and we're ready.

Can be merged when build passes.


Feature/add insert query

Haven't tested it yet, in any case, this should be what the query looks like
Beware: i'm now assuming every entry has one besluit, so i add one link from the annotation to the besluit and one link from the annotation to the designation object

not tested but it looks good :)


No inference file???

how to run the wdsr test by the command?
   python -m datasets.div2k --model-dir MODEL_DIR --input-dir INPUT_DIR --output-dir OUTPUT_DIR

which file should I run?

You can use provided pre-trained model as MODEL_DIR


Feature/add uk sanctions list

Adds data from the uk sanctions list

Process completed with exit code 143.

This seems to be Actions killing the job, but I'm not sure why. I can't find much except that the job is probably exceeding a cpu/memory/network quota of Actions.

There's a 10 minute timeout by default on go tests and I am able to get this to reproduce locally. If I comment out the call to the ods library and rerun all the tests pass, so it seems to be isolated there. The thing I'm wondering now is is this a false positive? Are we really ever going to be running into a scenario in which we download these sheets in parallel?

There's a 10 minute timeout by default on go tests and I am able to get this to reproduce locally. If I comment out the call to the ods library and rerun all the tests pass, so it seems to be isolated there.

I think we need to skip those tests on Actions CI then. At least for now until we can get them running/understood better. (Assuming the code is working.)

Are we really ever going to be running into a scenario in which we download these sheets in parallel?

On startup and refresh the URLs are downloaded, but not in parallel. How many sheets are we talking about?

How many sheets are we talking about?
We are up to 9 spreadsheets at this point, some with multiple sheets/tabs.

(Assuming the code is working.)
That's the thing the code is working just fine, so I'm not positive this test is catching anything of note.

If we wanted to download the sheets into a directory and parse/search over them that'll help validate most of the process on each commit. We don't need to download them over CI if it's brittle.

@adamdecaf After discussing this with @diginicho, I believe the best course of action at this time is to remove this particular test from the Actions CI. Perhaps we comment out the test code, with comments that explain why the test(s) are commented out for now. Since the CI is breaking due to attempting to perform a race condition check on functionality that is ultimately prone to race conditions, but for which we will never get into that scenario (only operating on one file at a time), I believe we can address this later in a different way. Thoughts?

Can we t.Skip("...") the failing tests for now? That can contain a description of the problem.

Absolutely
@diginicho will make the change and push it up once he's done with lunch.

@adamdecaf The tests affected by the race test were skipped. In addition, I was able to trace back the source of the make test-integration error to code from the admin package:
// NewServer returns an admin Server instance that handles Prometheus metrics
// and pprof requests.
// Callers can use ':0' to bind onto a random port and call BindAddr() for the address.
func NewServer(addr string) *Server {
	timeout, _ := time.ParseDuration("45s")

	var listener net.Listener
	if addr == ":0" {
		listener, _ = net.Listen("tcp", "<IP_ADDRESS>:0")
	} else {
		listener, _ = net.Listen("tcp", addr)
	}

In this case the 45 seconds is not long enough any more to download all the spreadsheets. I would recommend increasing that to 90s to be sure.

I think we should preload those 9 new documents so they don't need to be downloaded in the test.

Codecov Report

Merging #464 (b2a787a) into master (2c08c30) will decrease coverage by 6.28%.
The diff coverage is 23.39%.

:exclamation: Current head b2a787a differs from pull request most recent head d0d8813. Consider uploading reports for the commit d0d8813 to get more accurate results

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #464      +/-   ##
==========================================
- Coverage   65.50%   59.22%   -6.29%
==========================================
  Files          43       44       +1
  Lines        3328     3502     +174
==========================================
- Hits         2180     2074     -106
- Misses        981     1277     +296
+ Partials      167      151      -16

I created https://github.com/moov-io/base/pull/268 to allow configurable timeouts on the admin server.

Can I get a copy of the race detector errors? I want to dig into what the problem is there.

$ gotest ./pkg/csl/... -count 1 -race -short -run TestReadUKSanctionsList -v
=== RUN   TestReadUKSanctionsList
--- PASS: TestReadUKSanctionsList (267.09s)
PASS
ok  	github.com/moov-io/watchman/pkg/csl	267.960s

Parsing a 14MB file takes 4.5mins? That seems pretty inefficient so I'm curious what that library is doing..

It looks like the majority of the time is spent doing xml decoding. We could look at the SAX-based parsing (e.g. using .Token()) for some performance gains. Spending multiple minutes is going to cause folks unexpected problems when upgrading.

uk_csl_cpu.prof.txt
uk_csl_mem.prof.txt

From Github support,
I'm seeing that the linked run you shared appears to be the last instance of receiving exit code 143. Accompanying that result, an error annotation for that same job indicates:

The runner has received a shutdown signal. This can happen when the runner service is stopped, or a manually started runner is canceled.
Like you had mentioned, this usually occurs when processes on the Actions runner are starved of resources which can cause the possibility of a graceful shutdown if communication between the Actions service and runner becomes idle.

Were any changes made on your end to potentially lessen the resource consumption by your workflow operations?

Altogether, it looks like this issue has not been a consistent blocker recently. If this error would reoccur, we encourage evaluating the point in the workflow where this shutdown is happening - and seeing if there are any changes that can be made to spread resource utilization across a longer runtime to not stall the VM.


Update case-study-creating-impossible-perspectives-for-holotour.md

bug fix

:white_check_mark: Validation status: passed

File
Status
Preview URL
Details

mixed-reality-docs/case-study-creating-impossible-perspectives-for-holotour.md
:white_check_mark:Succeeded
View

For more details, please refer to the build report.
Note: If you changed an existing file name or deleted a file, broken links in other files to the deleted or renamed file are listed only in the full build report.


overwrites android:label to SECURE_CHECKOUT

I just started to use your package and it works flawlessly.
Nevertheless, I experienced that the application name of the android application now changed to "SECURE CHECKOUT".
I think it is because my AndroidManifest.xml defines the android:label="@string/app_name"
and maybe the package also defines a app_name variable which then overwrites mine.
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.flutter_braintree_example">
    <application
        android:label="@string/app_name"
        android:icon="@mipmap/ic_launcher">
...
</manifest>

I correctly defined the app_name string in the build.grade:
I then tried to change andorid:label to a hard-coded string
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.flutter_braintree_example">
    <application
        android:label="Test"
        android:icon="@mipmap/ic_launcher">
...
</manifest>

but then I get following error:
Launching lib/main.dart on Android SDK built for x86 in debug mode...
lib/main.dart:1
Warning: Mapping new ns http://schemas.android.com/repository/android/common/02 to old ns http://schemas.android.com/repository/android/common/01
Warning: Mapping new ns http://schemas.android.com/repository/android/generic/02 to old ns http://schemas.android.com/repository/android/generic/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/addon2/02 to old ns http://schemas.android.com/sdk/android/repo/addon2/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/repository2/02 to old ns http://schemas.android.com/sdk/android/repo/repository2/01
Warning: Mapping new ns http://schemas.android.com/sdk/android/repo/sys-img2/02 to old ns http://schemas.android.com/sdk/android/repo/sys-img2/01
flutter-braintree/example/android/app/src/debug/AndroidManifest.xml:10:5-25 Error:
	Attribute application@label value=(Test) from AndroidManifest.xml:10:5-25
	is also present at [org.jfrog.cardinalcommerce.gradle:cardinalmobilesdk:2.2.4-1] AndroidManifest.xml:15:9-41 value=(@string/app_name).
	Suggestion: add 'tools:replace="android:label"' to <application> element at AndroidManifest.xml:9:5-46:19 to override.

FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:processDebugMainManifest'.
> Manifest merger failed : Attribute application@label value=(Test) from AndroidManifest.xml:10:5-25
  	is also present at [org.jfrog.cardinalcommerce.gradle:cardinalmobilesdk:2.2.4-1] AndroidManifest.xml:15:9-41 value=(@string/app_name).
  	Suggestion: add 'tools:replace="android:label"' to <application> element at AndroidManifest.xml:9:5-46:19 to override.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 1s
Exception: Gradle task assembleDebug failed with exit code 1
Exited

Following Repository contains the application that results in the above error:
https://github.com/claudius-kienle/flutter-braintree

Same issue

Had the same issue with 3.0.1-dev and switched to 2.3.1 and after flutter clean everything works fine.

add tools:replace="android:label" to your AndroidManifest.xml in <application ... and if not already defined, define the tools namespace in your manifest <manifest ... xmlns:tools="http://schemas.android.com/tools" ...

But this would just allow to overwrite the defined android:label with the one defined in the package. The app name then always will be SECURE CHECKOUT
Therefore, this is not a solution.

I edited my answer. you need to add android:label='myappname' to your <application as well

Yeah, that worked! Thank you.


Support IdentityCache

We should support caching, but it should be opt-in, e.g.
class Show < Pragma::Operation::Show
  self['model.caching'] = true
end

This should use #fetch instead of #find_by in Model (and fail when #fetch is not defined). It should also use #fetch_[assoc] for associations in the decorator adapter (when defined).
Perhaps it should be its own gem, e.g. Pragma::Cache.

Coming back to this, I don't know if this should be part of Pragma. It's easily accomplished with a custom base operation (and association adapter) that uses the IdentityCache methods, and I haven't seen that many projects using IdentityCache so far.


aws secrets only renewed for aws_environment

AWS secrets should be renewed regardless of the context they are being rendered in....

fixed in https://github.com/Autodesk/aomi/commit/1ec41131939414664b63f08bc864b922e92892e5


Fix props like backgroundStyle

I think extra props broken with the rewrite style.ts.
With something like
cssInterop(BottomSheetModal, {
  backgroundClass: 'backgroundStyle',
});

`backgroundStyle` would never appear in the props, instead everything would be added to the style prop.

It looks like a variable shadowing issue in the code

Fixes https://github.com/marklawlor/nativewind/issues/671 :pray:

There are 3 ways a style is mapped to a prop

The mapping from cssInterop (e.g className->style)
nativeStyleToProps
The styles atRules, which can override the cssInterop mapping.

For example placerholder:color-black is compiled to this style
.placholer\:color-black {
  @rn-hoist color placeholderTextColor
  color: black;
}

@rn-hoist is an override, saying that the color value of this style should go to the placeholderTextColor prop, not the prop specifed by the cssInterop mapping.
This might be fixed in https://github.com/marklawlor/nativewind/commit/5ca186cdeb87798dbbd6f32c70413bb210113863 but I need to test that commit more before releasing it.


[release/1.6] ctr export strictly match default platform

Backport of #7615
Fixes: https://github.com/containerd/containerd/issues/5895
Signed-off-by: Yasin Turan<EMAIL_ADDRESS>(cherry picked from commit 78ac0046a7af3ff5beeb53d56ba627ec0cf7b32d)
Signed-off-by: Yasin Turan<EMAIL_ADDRESS>

/ok-to-test


linkify-code doesn’t work in Discussions titles

Description
linkify-code doesn’t linkify issue/PR/discussion references in Discussions titles.
How to replicate the issue
Enter issue/PR/discussion references in Discussions titles.
Example: https://github.com/File-New-Project/EarTrumpet/discussions/877
Extension version
22.8.8
Browser(s) used
Chrome

It works, just not enabled there. 😅


Lift to upstream b2251 and update build destinations

Lift to upstream b2251 and update build destinations
:recycle: Current situation & Problem
Out of sync with upstream b2251. Only limited to iphoneos and iphoneossimulator build destinations
:gear: Release Notes

Lift to llama.cpp upstream b2251
Broaden the build destinations to visionOS and macOS

:books: Documentation
--
:white_check_mark: Testing
Tested manually
Code of Conduct & Contributing Guidelines
By submitting creating this pull request, you agree to follow our Code of Conduct and Contributing Guidelines:

[x] I agree to follow the Code of Conduct and Contributing Guidelines.

@PSchmiedmayer Please force merge the PR as some commits from upstream are unsigned :)

Done 🚀


Merge from Development to Master to prepare for the Bali release

This PR merges changes from development to master to prepare for the final Bali release.

@leonwanghui Please take a look.


Submit new NEP

Checklist:

[x] I have read the NEP Guideline document.
[x] I have checked my NEP Draft is ready.

Changes

This NEP is for NewChain MainNet Opening, first stage.

I have read the CLA Document and I hereby sign the CLA

I have read the CLA Document and I hereby sign the CLA

Assign NEP # using PR #: 27
Type Process is ok
Category should be Community Governance


Update Design: Add Logo and Lato Font

Signed-off-by: maxwolfs<EMAIL_ADDRESS>Figma Playground for Logo Creation

implementing Lato Font
implementing logo and icons for open operations manifesto

with text:

without:

Have to think about  the colors. the rest seems legit.

ah, I only saw the logo and claim.
I have a hard time with the 'Practice' since it always translates to 'Ueben' and not 'Praktizieren' in my head.
@itrich suggested Collaboration instead. Which I like much better than practice.

Valid Point – I have updated the og image with collaboration instead of practice

Valid Point – I have updated the og image with collaboration instead of practice

Old Image is still in the Repo, rest LGTM

Please don't merge yet!

New Proposal
As discussed in last Friday's session, the logo colors might be too pale, so I have started from scratch. I have dropped the attempt to depict any descriptive meaning within the form. Therefore my new approach was to work with the acronyms (oom) and begin with a clear geometric grid layout. The logo proposal is the masked center "o" with  of the left "o" and right "m" resulting in a more modern-looking design.
Logo:

Construction:

Share Image:

I agree I personally like this logo a lot better +1

Okay, so If there is no objection by 11:00 CET tomorrow, I will merge it. :)


[Bug] Slice indexing in ONNX

Please refer to https://github.com/pytorch/pytorch/issues/24251
Basically, ONNX uses extremely large numbers to represent slicing until the end of certain dimensions, which will be prohibited the defensive conditions in
https://github.com/hidet-org/hidet/blob/80a35d616f1c7a7444380a99d4fbe4fe07e11447/python/hidet/graph/ops/definitions/transform.py#L481

The indexing of hidet tensor would follow the specification of ArrayAPI standard. Thus, we need to do deal with the difference between onnx sematics and ArrayAPI standard when importing onnx model.
Could you please provide some examples to trigger this error? If not, we could leave it to the future when some actual model triggers this error.

Thanks @soodoshll, working on it.

Thanks @soodoshll, this error should be fixed in #106.


Trading update notification shown on latest version

Description
There appears to be a bug with the update notification that says there is an update even when the user is on the latest version
Steps to Reproduce

Go to https://console.vega.xyz
Observe the IPFS CID in the url
Click on update notification
Compare the CID

Expected behavior
The CID should be different, because if the user is on the latest release it should not show an update notification
Screenshots

Resolved. This was a result of release process growing pains


serde: implement serialize_pointers

if you want to start from a fixed small cairo or json, you can create a minimal cairo file and compile it like
uv run compile cairo/tests/utils/serde.cairo

fixed


Add weekday and month?

Hi,
So we added some supports for parsing weekdays and months. Like "next friday", "this April".
There is our fork, if you are interested, we can make a pull request.
https://github.com/proofme/moment-parser

Hi --
Thanks for the fork! I hope this code is useful to you.
I've always wanted relative day and month expressions. I will read your
changes tomorrow to see if we're in agreement.
Meanwhile, thanks again,
-- Will Welch
Will Welch
650 Second Street #203
San Francisco, CA 94107
415-480-4704 (cell)
On Mon, Mar 21, 2016 at 4:48 PM, Xuezheng Ma<EMAIL_ADDRESS>wrote:

Hi,
So we added some supports for parsing weekdays and months. Like "next
friday", "this April".
There is our fork, if you are interested, we can make a pull request.
https://github.com/proofme/moment-parser
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly or view it on GitHub
https://github.com/juttle/moment-parser/issues/30


Bump training version

Currently, Click converts list parameters into tuples. This is a problem becausetraining expects the provided lora target modules to be in a list specifically. This bumps the version to a minimum where this bug has been patched
Signed-off-by: Oleg S<EMAIL_ADDRESS>

Checklist:

[x] Commit Message Formatting: Commit titles and messages follow guidelines in the
conventional commits.
[ ] Changelog updated with breaking and/or notable changes for the next minor release.
[ ] Documentation has been updated, if necessary.
[ ] Unit tests have been added, if necessary.
[ ] Integration tests have been added, if necessary.

FYI as per Oleg, will merge https://github.com/instructlab/instructlab/pull/2027 instead.

#2027 merged.


Ignore changes to composer.json when looking for reviewer

See https://github.com/symfony/symfony/pull/40436#issuecomment-796610022

Wouldn't it be better to say "only include *.php files (excluding tests)`?

Yeah you are correct. But that requires me to update the git-reviewer repo.
This change would be pretty much the same.


Fix window float enable/disable (#1960)

When resizing with i3 (and possibly other WMs), the only way to now new framebuffer/window size is to get event from glfw.
This also calls setWindowSizeInDIP to update window size afterwards (instead of calling context.Layout directly)
Framebuffer size callbacks are used for handling window resize in glfw examples like here
I'm not 100% sure that this is the best solution, so any suggestions welcome.
@sedyh this might also fix #1620 - can you please check (there are still glitches, but maybe it's somewhat better)?

Did you confirm this was not problematic on Windows and macOS?

Did you confirm this was not problematic on Windows and macOS?

Tested on Windows, works fine. Can't test on macOS unfortunately (don't have a machine running it)


New version: Microsoft.OneDrive version 22.099.0508.0001

[X] Have you signed the Contributor License Agreement?
[X] Have you checked that there aren't other open pull requests for the same manifest update/change?

[ ] Have you tested your manifest locally with winget install --manifest <path>?
[X] Does your manifest conform to the 1.1 schema?

Microsoft Reviewers: Open in CodeFlow

Downloading the installer fails with code 80072EFD = WININET_E_CANNOT_CONNECT. It worked on my sandbox just now. Hoping it was a transient error and just re-running it works.

/azp run

Oh sweet newcomer its not that simple (look at previous PRs up to a year), @denelon i've said it before, but you need to talk to the old/senior winget-pkgs Administrators because OneDrive have been blocked on the VM side because it Auto updates, they blocked it so they had to do a manual review every time, however that was before i found new switches/exit codes.
@palenshus might know about this

Ah, how fun. I wonder how I got lucky enough to not see this on my previous on-call rotations. I'll waive the error, but I agree we need to do something to fix it.

@wingetbot waivers Add Validation-Installation-Error


fix: app goes to workspace initial page when back from not found page

Details

Fixed Issues

$ https://github.com/Expensify/App/issues/46646
PROPOSAL: https://github.com/Expensify/App/issues/46646#issuecomment-2273017688
Tests

[Native only]

Send a workspace settings link with invalid ID in a report (e.g., /settings/workspaces/1/more-features)
Open the link
Swipe back from not found page (Do not press Back button)

Verify app goes back to workspaces list page

Open the link in step 1 by deep linking
Swipe back from not found page (Do not press Back button)

Verify app goes back to workspaces list page

[x] Verify that no errors appear in the JS console

Offline tests

QA Steps

[Native only]

Send a workspace settings link with invalid ID in a report (e.g., /settings/workspaces/1/more-features)
Open the link
Swipe back from not found page (Do not press Back button)

Verify app goes back to workspaces list page

Open the link in step 1 by deep linking
Swipe back from not found page (Do not press Back button)

Verify app goes back to workspaces list page

[x] Verify that no errors appear in the JS console

PR Author Checklist

[x] I linked the correct issue in the ### Fixed Issues section above
[x] I wrote clear testing steps that cover the changes made in this PR

[x] I added steps for local testing in the Tests section
[x] I added steps for the expected offline behavior in the Offline steps section
[x] I added steps for Staging and/or Production testing in the QA steps section
[x] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[x] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[x] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[x] I included screenshots or videos for tests on all platforms
[x] I ran the tests on all platforms & verified they passed on:

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

[x] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[x] I followed proper code patterns (see Reviewing the code)

[x] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[x] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[x] I verified that comments were added to code that is not self explanatory
[x] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[x] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[x] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

[x] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[x] I followed the guidelines as stated in the Review Guidelines
[x] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[x] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[x] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[x] I verified that if a function's arguments changed that all usages have also been updated correctly
[x] If any new file was added I verified that:

[x] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[x] If a new CSS style is added I verified that:

[x] A similar style doesn't already exist
[x] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(theme.componentBG))

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:

[x] I verified that all the inputs inside a form are aligned with each other.
[x] I added Design label and/or tagged @Expensify/design so the design team can review the changes.

[x] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[x] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.

Screenshots/Videos

Android: Native

https://github.com/user-attachments/assets/71774779-a5ab-4795-a001-f7f1e9b3ee39

Android: mWeb Chrome

https://github.com/user-attachments/assets/34e17cd8-8fff-4a50-bdfc-f6f702653f8d

iOS: Native

https://github.com/user-attachments/assets/9bd86e77-6e3a-4143-a2ae-083332316fca

iOS: mWeb Safari

https://github.com/user-attachments/assets/c429f18a-5dff-4134-b4ba-7d5cc54509bf

MacOS: Chrome / Safari

https://github.com/user-attachments/assets/cb0e64c5-3ed9-4d22-a575-1efc7615be47

MacOS: Desktop

https://github.com/user-attachments/assets/28342b2c-6a92-466f-8789-3c928559e348

I left some small comments, but overall I think it's good 🚀

@dominictb I can look into this 👁 👁

hey @dominictb what reproduction steps should trigger the removeScreenFromNavigationState function?

Okay, I found the problem. The Reset action works but the isLoadingReportData in the CustomFullScreenRouter isn't updated so adaptIfNecessary adds the workspace initial screen once again.
I made it work with some refs etc but I don't think we should use hooks in the CustomFullScreenRouter. It's not really a component.
There should be a way to get this information without using hooks.
cc: @dominictb @shubham1206agra

@dominictb I think the initial screen is getting popped out incorrectly.

@Expensify/design what do you think?

Hmm yeah that does feel like it's not working as expected. I'm not too familiar with how the Android back button works but I would expect it to just take you back to the previous page you were on.

Hey @lakchote are you able to verify this on staging to check it off the checklist please? QA aren't able to currently.

@Julesssss it works correctly on staging:
https://github.com/user-attachments/assets/adbb636a-d98f-4562-a63e-3fd41df37778

@shubham1206agra why did you create a revert PR?


Investigate odd behavior of performance data

Now that we can visualize it, performance data has some odd patterns that might reflect bugs in how it's collected in or out of the compiler, namely that the bytecode size is always the same and that memory usage is always the same between different steps.

Spam dupe of https://github.com/FuelLabs/sway/issues/5381


Exclude JS src from gem files

Problem
See issue #42
Solution
There are probably a number of ways to exclude src from the gemspec files list, such as with a inverted regex pattern or a Git-specific glob like git ls-files -- . ':!:src*'. I chose an approach I thought would be less obfuscated.

@brettfishman Thanks! I will get around to releasing this soon, hopefully early next week—I'd like to test a beta release first to be conservative.

Confirmed this works in a branch for a consuming app: https://github.com/stitchfix/fix-preview-ui/pull/687/commits/0b7503491053b6848572ae5b678080b69411f84c


chrome complains node cert has been revoked

I got around it by importing the cert into keychain and mark it as trust always
but now in rancher,
it shows the status of the cluster as provisioning
Waiting for server-url setting to be set
How to get around that?

it might take 1-2 min. till the cluster is imported and the server url is set.

yes.  it did.


Parse browserstack logs in timeline plugin

Timeline plugin currently has an ability to parse SauceLabs logs, but, would be a good idea to add support for BrowserStack? Thanks.

Moved to https://github.com/angular/protractor-timeline-plugin/issues/7

Thanks @juliemr for cleaning this one up!


[BUG] memory error

v5b2
afk beside Depths of the Painting's bonfire, and connecting to other's world as a watchdog (it hasn't started loading yet), then crashed

Does this consistently occur?

no, it's the first time ive been encountered it.
but i have more details:
i used a tool called "ds3 connection info" to show the status of the host and other players: https://github.com/tremwil/DS3ConnectionInfo
i noticed that a session showed a host info in this tool, but no in-game tips, no loading screen, and no logs in ConsoleLog, then the game crashed.
hopefully it's helpful.

game stops responding occured several times,
"Invading another world..." then game freezes,
before the tip "Invading another world as Watchdog of Faroon..."


hdinsights release

https://github.com/Azure/sdk-release-request/issues/4294
Recording: https://github.com/Azure/azure-sdk-assets/tree/js/hdinsight/arm-hdinsight_cb48a84e4f

API change check
APIView has identified API level changes in this PR and created following API reviews.
azure-arm-hdinsight


Add Neil Lupton to Contributors list

add neil188

@Neil188, I'm quite elated about your PR. I wanna evolve this project to addresses various problems faced by first-time contributors. I'd love to learn about your journey in open source community, the problems, pain points you had etc.
Could you explain how you felt when you went through the tutorial, made a PR and learned that I merged it?


code refactor. use new.target to detect if promise is called with new instead of this check

In https://github.com/then/promise/blob/91b7b4cb6ad0cacc1c70560677458fe0aac2fa67/src/core.js#L55
for checking whether the promise constructor is called with new it is better to use new target
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/new.target
if it is accepted the change then I can make a PR for this

This does not seem to be worth working on, given that the current approach works.

Alright sure


Audio not working

Could not get audio working (it’s also very hard to get it working in Linux).
Need to find out if any ALC layout is working or create new layout?

Could not get audio working (it’s also very hard to get it working in Linux).
Need to find out if any ALC layout is working or create new layout?

Can working in linxu... but no time to find alc id .... https://blog.fts.scot/2020/07/04/dell-xps-2020-how-to-get-audio-working-on-linux/

Our chipset is currently not included in ALC, haven’t found any hint to which other chipset it would probably match best :-(

Our chipset is currently not included in ALC, haven’t found any hint to which other chipset it would probably match best :-(

Can only be repaired after updating :-(...VoodooHDA can working?

voodoohda not working :/


Dev Harness - Make app.py check for and download MNIST dataset

Currently development/app.py assumes that the MNIST dataset is present, and fails to open otherwise.
The current workaround is to open an example workbook that uses this dataset, which will then download it.
Add a check for the dataset and download it as necessary.

The latest code should handle this case. We check to see if the dataset is in the ./examples/dataset/MNIST/ directory. If it's not, it will be downloaded.
I was unable to repro. Here's what happened when I deleted my dataset and ran the dev harness server again
(bcml) C:\Users\v-nicki\code\BackwardCompatibilityML>flask run
 * Serving Flask app "development/app.py" (lazy loading)
 * Environment: development
 * Debug mode: on
 * Restarting with stat
 * Debugger is active!
 * Debugger PIN: 341-831-966
 * Running on http://<IP_ADDRESS>:5000/ (Press CTRL+C to quit)
Downloading http://yann.lecun.com/exdb/mnist/train-images-idx3-ubyte.gz to examples/datasets/MNIST\raw\train-images-idx3-ubyte.gz
100.1%Extracting examples/datasets/MNIST\raw\train-images-idx3-ubyte.gz to examples/datasets/MNIST\raw
Downloading http://yann.lecun.com/exdb/mnist/train-labels-idx1-ubyte.gz to examples/datasets/MNIST\raw\train-labels-idx1-ubyte.gz
113.5%Extracting examples/datasets/MNIST\raw\train-labels-idx1-ubyte.gz to examples/datasets/MNIST\raw
Downloading http://yann.lecun.com/exdb/mnist/t10k-images-idx3-ubyte.gz to examples/datasets/MNIST\raw\t10k-images-idx3-ubyte.gz
100.4%Extracting examples/datasets/MNIST\raw\t10k-images-idx3-ubyte.gz to examples/datasets/MNIST\raw
Downloading http://yann.lecun.com/exdb/mnist/t10k-labels-idx1-ubyte.gz to examples/datasets/MNIST\raw\t10k-labels-idx1-ubyte.gz
180.4%Extracting examples/datasets/MNIST\raw\t10k-labels-idx1-ubyte.gz to examples/datasets/MNIST\raw
Processing...
..\torch\csrc\utils\tensor_numpy.cpp:141: UserWarning: The given NumPy array is not writeable, and PyTorch does not support non-writeable tensors. This means you can write to the underlying (supposedly non-writeable) NumPy array using the tensor. You may want to copy the array to protect its data or make it writeable before converting it to a tensor. This type of warning will be suppressed for the rest of this program.
Done!


Old version listed in npm

https://www.npmjs.com/package/chartist-plugin-tooltips still lists version 0.0.17 but the newest version is 0.0.18. This is most likely related to the wrong repo in the npm archive. But I could be wrong about it

Fresh and maintained fork here - https://github.com/LukBukkit/chartist-plugin-tooltip

You can also find the latest version of my fork on npm - https://www.npmjs.com/package/chartist-plugin-tooltips-updated
@pdapnz thanks for mentioning my fork

Can we get this one updated? It is not a reliable plugin/npm module if you have to use different forks to stay updated.


Make it easy to configure the app's homepage for Windows installers

Discussed in https://github.com/tauri-apps/tauri/discussions/9943

Originally posted by sschuberth June  2, 2024
Hi there, is it currently possible to specify an app's homepage as part of installer metadata? Looking at https://tauri.app/v1/api/config/#windowsconfig and https://tauri.app/v1/api/config/#wixconfig it does not seem it's possible. I'm specifically looking for doing that for MSI, so that the app's homepage shows up in Windows' uninstall dialog.
The goal would be to make configuring the app's homepage easy and independent of the installer backend used (MSI or NSIS) without the user needing to deals with implementation-specific concepts like WiX fragments.

I am not sure where is this homepage will be rendered, can you show an example?

Unfortunately, Windows' built-in "Add or remove programs" control panel indeed does not not seem to show the "About URL" by default (and I couldn't make it to), but third-party uninstallers like UninstallView do, along with a bunch of more metadata:

Thanks a lot @amrbashir for addressing this so quickly!


ASTCENC update breaks compiling on Windows with MinGW

Godot version
master (commit 360b61084a4a5bc0f9577212a3079430601b3408 (HEAD -> master, origin/master, origin/HEAD))
System information
Windows 11
Issue description
Seems that this commit (https://github.com/godotengine/godot/commit/696346f4cc63b9395cc156da0e8d8fb65260c055) breaks building on windows.

=====
In file included from C:/Users/kuhnc/scoop/apps/mingw/current/lib/gcc/x86_64-w64-mingw32/12.2.0/include/immintrin.h:37,
                 from thirdparty\astcenc\astcenc_mathlib.h:85,
                 from thirdparty\astcenc\astcenc_internal.h:34,
                 from thirdparty\astcenc\astcenc_decompress_symbolic.cpp:22:
C:/Users/kuhnc/scoop/apps/mingw/current/lib/gcc/x86_64-w64-mingw32/12.2.0/include/tmmintrin.h: In function 'vint4 vtable_8bt_32bi(vint4, vint4, vint4)':
C:/Users/kuhnc/scoop/apps/mingw/current/lib/gcc/x86_64-w64-mingw32/12.2.0/include/tmmintrin.h:136:1: error: inlining failed in call to 'always_inline' '__m128i _mm_shuffle_epi8(__m128i, __m128i)': target specific option mismatch
  136 | _mm_shuffle_epi8 (__m128i __X, __m128i __Y)
      | ^~~~~~~~~~~~~~~~
In file included from thirdparty\astcenc\astcenc_vecmathlib.h:96,
                 from thirdparty\astcenc\astcenc_mathlib.h:433:
thirdparty\astcenc\astcenc_vecmathlib_sse_4.h:1112:43: note: called from here
 1112 |         __m128i result2 = _mm_shuffle_epi8(t1.m, idxx);
      |                           ~~~~~~~~~~~~~~~~^~~~~~~~~~~~
C:/Users/kuhnc/scoop/apps/mingw/current/lib/gcc/x86_64-w64-mingw32/12.2.0/include/tmmintrin.h:136:1: error: inlining failed in call to 'always_inline' '__m128i _mm_shuffle_epi8(__m128i, __m128i)': target specific option mismatch
  136 | _mm_shuffle_epi8 (__m128i __X, __m128i __Y)
      | ^~~~~~~~~~~~~~~~
thirdparty\astcenc\astcenc_vecmathlib_sse_4.h:1109:42: note: called from here
 1109 |         __m128i result = _mm_shuffle_epi8(t0.m, idxx);
      |                          ~~~~~~~~~~~~~~~~^~~~~~~~~~~~
C:/Users/kuhnc/scoop/apps/mingw/current/lib/gcc/x86_64-w64-mingw32/12.2.0/include/tmmintrin.h:136:1: error: inlining failed in call to 'always_inline' '__m128i _mm_shuffle_epi8(__m128i, __m128i)': target specific option mismatch
  136 | _mm_shuffle_epi8 (__m128i __X, __m128i __Y)
      | ^~~~~~~~~~~~~~~~
thirdparty\astcenc\astcenc_vecmathlib_sse_4.h:1109:42: note: called from here
 1109 |         __m128i result = _mm_shuffle_epi8(t0.m, idxx);
      |                          ~~~~~~~~~~~~~~~~^~~~~~~~~~~~
C:/Users/kuhnc/scoop/apps/mingw/current/lib/gcc/x86_64-w64-mingw32/12.2.0/include/tmmintrin.h:136:1: error: inlining failed in call to 'always_inline' '__m128i _mm_shuffle_epi8(__m128i, __m128i)': target specific option mismatch
  136 | _mm_shuffle_epi8 (__m128i __X, __m128i __Y)
      | ^~~~~~~~~~~~~~~~
thirdparty\astcenc\astcenc_vecmathlib_sse_4.h:1112:43: note: called from here
 1112 |         __m128i result2 = _mm_shuffle_epi8(t1.m, idxx);
      |                           ~~~~~~~~~~~~~~~~^~~~~~~~~~~~

=====
=====
In file included from C:/Users/kuhnc/scoop/apps/mingw/current/lib/gcc/x86_64-w64-mingw32/12.2.0/include/immintrin.h:37,
                 from thirdparty\astcenc\astcenc_mathlib.h:85,
                 from thirdparty\astcenc\astcenc_internal.h:34,
                 from thirdparty\astcenc\astcenc_ideal_endpoints_and_weights.cpp:26:
C:/Users/kuhnc/scoop/apps/mingw/current/lib/gcc/x86_64-w64-mingw32/12.2.0/include/tmmintrin.h: In function 'vint4 vtable_8bt_32bi(vint4, vint4)':
C:/Users/kuhnc/scoop/apps/mingw/current/lib/gcc/x86_64-w64-mingw32/12.2.0/include/tmmintrin.h:136:1: error: inlining failed in call to 'always_inline' '__m128i _mm_shuffle_epi8(__m128i, __m128i)': target specific option mismatch
  136 | _mm_shuffle_epi8 (__m128i __X, __m128i __Y)
      | ^~~~~~~~~~~~~~~~
In file included from thirdparty\astcenc\astcenc_vecmathlib.h:96,
                 from thirdparty\astcenc\astcenc_mathlib.h:433:
thirdparty\astcenc\astcenc_vecmathlib_sse_4.h:1087:42: note: called from here
 1087 |         __m128i result = _mm_shuffle_epi8(t0.m, idxx);
      |                          ~~~~~~~~~~~~~~~~^~~~~~~~~~~~
C:/Users/kuhnc/scoop/apps/mingw/current/lib/gcc/x86_64-w64-mingw32/12.2.0/include/tmmintrin.h:136:1: error: inlining failed in call to 'always_inline' '__m128i _mm_shuffle_epi8(__m128i, __m128i)': target specific option mismatch
  136 | _mm_shuffle_epi8 (__m128i __X, __m128i __Y)
      | ^~~~~~~~~~~~~~~~
thirdparty\astcenc\astcenc_vecmathlib_sse_4.h:1087:42: note: called from here
 1087 |         __m128i result = _mm_shuffle_epi8(t0.m, idxx);
      |                          ~~~~~~~~~~~~~~~~^~~~~~~~~~~~

Steps to reproduce

Pull master
Compile
Receive error

Minimal reproduction project
n/a

Apparently the #if ASTCENC_SSE >= 30 gate is wrong - if I change it to >= 41 like on line 664 the compile finishes (2 places to replace) - not sure if this is sound and fine tho, haven't worked on ASTC yet.

On my Linux system I don't reproduce the error with MinGW GCC, but it seems to be because by default my builds only enable SSE2:
$ x86_64-w64-mingw32-gcc -dM -E - < /dev/null | grep -E "SSE|AVX" | sort
#define __MMX_WITH_SSE__ 1
#define __SSE__ 1
#define __SSE2__ 1
#define __SSE2_MATH__ 1
#define __SSE_MATH__ 1
$ gcc -dM -E - < /dev/null | grep -E "SSE|AVX" | sort
#define __MMX_WITH_SSE__ 1
#define __SSE__ 1
#define __SSE2__ 1
#define __SSE2_MATH__ 1
#define __SSE_MATH__ 1

Can you run the equivalent command with mingw-gcc?
I expect that it might show __SSE3__, but not __SSSE3__ (3 S), which is the one that implements _mm_shuffle_epi8.
And if so I think astcenc's checks here are not precise enough:
#ifndef ASTCENC_SSE
  #if defined(__SSE4_2__)
    #define ASTCENC_SSE 42
  #elif defined(__SSE4_1__)
    #define ASTCENC_SSE 41
  #elif defined(__SSE3__)
    #define ASTCENC_SSE 30
  #elif defined(__SSE2__)
    #define ASTCENC_SSE 20
  #else
    #define ASTCENC_SSE 0
  #endif
#endif

They'd need to use something like this probably:
#ifndef ASTCENC_SSE
  #if defined(__SSE4_2__)
    #define ASTCENC_SSE 42
  #elif defined(__SSE4_1__)
    #define ASTCENC_SSE 41
  #elif defined(__SSSE3__)
    #define ASTCENC_SSE 31
  #elif defined(__SSE3__)
    #define ASTCENC_SSE 30
  #elif defined(__SSE2__)
    #define ASTCENC_SSE 20
  #else
    #define ASTCENC_SSE 0
  #endif
#endif

And bump the version on the ones you had to change to 31 (or whatever other index makes sense for SSSE3).

Could you test that patch?
astcenc-ssse3.patch.txt
I replaced all >= 30 because I think they're meant to be kept in sync, even if some of them would compile for you.

Ad the first question: Yes it shows SSE3 and not SSSE3. This is run under WSL
kuhnchris@ERIKA-MINIPC:/mnt/c/Users/kuhnc$ scoop/apps/mingw/current/bin/gcc.exe -dM -E - < /dev/null | grep -E "SSE|AVX"
 | sort
#define __MMX_WITH_SSE__ 1
#define __SSE2_MATH__ 1
#define __SSE2__ 1
#define __SSE3__ 1
#define __SSE_MATH__ 1
#define __SSE__ 1


Dragging an image resource into a 2D scene crashes the editor immediately

Tested versions
Godot v4.3.dev4. No such issue with Godot v4.1.1.stable.
System information
Ubuntu 23.04 23.04 - X11 - Vulkan (Forward+)
Issue description
Dragging an image resource (Image, not Texture2D) from the file system dock into a 2D scene crashes the editor immediately.

In terminal I saw an error on crash
ERROR: Index p_index = 0 is out of bounds ((int)data.children_cache.size() = 0).
   at: get_child (scene/main/node.cpp:1608)

Note: I have no intention to drop an image into a scene, I was dragging it to the inspector and the mouse was just passing though.
Steps to reproduce

Create an image in the project directory.
Reimport the image as Image.
Drag the image from the file system dock to a 2D scene.
Crash

Minimal reproduction project (MRP)
dragging_image_crash.zip

I can't reproduce this on the current master. This should already fixed by #89126 :)


Windows drive fix

This is a minor fix, could be critical in certain scenarios.
BUG:
I had created a project in D drvie of my PC with just one file (main.tf) with a minimalistic code as shown below.
When I launch VS code for the first time, I see the correct costs being displayed. However when I make changes to main.tf and save the file, I do not see the changes in the cost.
STEPS TO REPRODUCE:

Create a folder in D drive. (I have used D:\Github_Projs\Dummy\01-hello-world-Terraform)
Create a main.tf file with the following contents:

        # Configure the AWS provider
        provider "aws" {
          region = "eu-west-1"
        }
        # Create an EC2 instance
        resource "aws_instance" "example" {
          ami           = "ami-785db401"
          instance_type = "t3.micro"
        }

Open VS code (Make sure Terraform extension and Infracost are installed)
Open main.tf and modify the instance_type ( change it to t2.micro for example)
Observe that the shown cost doesn't change.

VIDEO OF THE BUG:
https://github.com/user-attachments/assets/6e12134e-02ec-4c55-a758-05de153a025d
DEBUG LOGS:
debug_logs.txt
CAUSE OF THE PROBLEM:
The cause of the problem seems to be in workspace.ts in the method  async fileChange() when comparing projectDir and dir(look at the valies on the left hand side)

This is happening because the cleanFilename() method in utils.ts isn't cleaning the path with all the drives( just the C drive)

In short, if I have a terraform project placed in any drive apart from the C drive, the extension might not work as expectd. (Possible work-around would be to make changes to the file and re-open VS code)
FIX:
I have fixed this issue in this PR, ensuring that all windows drive paths are replaced correctly by modifying the cleanFilename()
VIDEO OF THE FIX:
https://github.com/user-attachments/assets/b50a7623-1026-41cd-bd04-f5741d92693d
Here is a ZIP file of the dummy project that I am using in case this is needed for reproducing the issue:
01-hello-world-Terraform.zip

 Thank you for your submission! We really appreciate it. Like many open source projects, we ask that you sign our Contributor License Agreement before we can accept your contribution.You have signed the CLA already but the status is still pending? Let us recheck it.

Thanks @JAPNITSINGH  for raising this. @owenrumney I'm assigning this to you as you are the person who most recently worked on the windows specifics for the extension.

Thanks for this @JAPNITSINGH  - I've run it on Windows/Linux and MacOS and it's all good. 👍


Context about different command-line interfaces

It would also be helpful to explain what it means "to export" at https://github.com/rjust/defects4j#export-version-specific-properties .
"query" generates a CSV file; does "export" do the same?

I added more context to the individual review comments. These should answer the question about export vs. query.
We can merge this in with minor modifications (as suggested) and move most of my comments into an issue for consolidating the commands and/or improving their documentation.

@mernst Can you please take another look at this?


Is it possible to enable the tenant to verify a VM's integrity without a vTPM?

Hi, I'm a little confused about the vTPM design in the wiki. I want to build an Openstack cloud(with a couple of servers with TPM2) in my lab using KVM and I want to make everyone in my lab can verify their VM's integrity.
So I want to know is it possible to enable the tenant to verify a VM's integrity without a vTPM? Or I have to install TPM emulator on everyone's virtual machines.
Thank you!

Hi @Han0nly
I would ignore the stuff in the wiki as that is around a pending design. There is nothing to stop you using a vTPM right away.  The only consideration to make is that a vTPM is not as secure as a hardware TPM which has the crypto keys are locked into the chip.
With a vTPM, it being software based means the keys reside in the host memory. However if you own the host, this is less of a concern (as you won't be hacking your own VMs), so Keylime does afford protections still and will protect you against attackers (as long as they don't hack into the host OS itself).
Google Cloud offer this approach, you can add a vTPM to a virtual machine and use that to attest the trust within the VM.
If you need help setting up the vTPM let me know, we plan on changing our CI to use a vTPM.
Eventually we will have full hardware level protections for a vTPM which is what the design in the wiki is about. This is still a work in progress though and requires changes in the kernel.

Edit, I missed your original question. Yes you can, using passthrough:
https://libvirt.org/formatdomain.html#elementsTpm
I would not do this though, as its a one to one mapping. So only one VM will be able to use the hardware TPM. I recommend you go for a vTPM implementation, and then when deep quote features land (extend trust from the vTPM to hardware TPM), you will already have your environment set up.

Thank you for your answer @lukehinds , I don't know if I get it right, if a tenant want to verify their VM's integrity, they need to create a VM with a TPM device using emualtor/passthrough, and then they need to install the Keylime agent and register it to the Keylime registrar . After that they can request the Keylime verifier Restful API to verify VM's integrity, do I get it right? Do Keylime verifier and Keylime registrar have other prerequisites or I can just install them on any of machines? Thanks!

Yes, that's it.
On each VM you would run the vtpm and keylime agent and then on another machine (like a management machine) you would run the keylime verifier and register (or you could even run the verifier and register on different machines).
You would then use the keylime tenant application to start the measurement of the VM and if it passes you could run an autorun.sh script to set things up on the machine (for example install and application)., You could also deliver some secrets to the machine.
I recommend watching the following demo to get an idea of the architecture and flow of interaction between the different systems in Keylime:
https://www.youtube.com/watch?v=Qhr_aVBCZPw
Also jump on the gitter channel if you need some support getting things running.
https://gitter.im/keylime-project/community

Thank you @lukehinds , your answer is really helpful, l'm much obliged.

Thank you @lukehinds , it is really helpful, l'm much obliged.

My pleasure, I have wanted to integrate keylime more with openstack, but not had the spare time available as yet. If you want plan to go ahead we will support you as much as we can and help make needed changes into Keylime.

I found some links may be helpful for integration with openstack. It seems openstack community are working on vtpm and it basically works.
https://that.guru/blog/emulated-tpm-in-openstack/

Awesome news. glad to see that is happening!

Hi @lukehinds , one thing I need help, I watched the demo on youtube and I want to try this demo locally. So can I get to these script somewhere? Thank you!

Hi @Han0nly , sure..we have a ansible role with a vagrant file:
https://github.com/keylime/ansible-keylime-tpm-emulator/
If you install vagrant, you can then clone the above and then just run vagrant up --provision and it will bring up a running keylime instance with a tpm emulator to use.
Try that, if you hit any issues, just raise a github issue in the ansible repo above and tag me in there!

Sorry @lukehinds , my English is not very good, so you may have misunderstood. What I want to ask is whether there is a script used in that example in Youtube, such as copy ssh keys/remove ssh keys after failure verification. Thank you!

Hi, I deployed Keylime on 2 centos7 virtual machines with TPM2.0 device. The first one run keylime_agent, and the other one run verifier&registrar&ca, then I run keylime_tenant -v <IP_ADDRESS> -t agent -tp 9002 -u D432FBB3-D2F1-4A97-9EF7-75BD81C00000 --cert /var/lib/keylime/cv_ca --include /root/payload/ --whitelist /root/whitelist.txt -c add on the second one to add a policy, but an error occurred.
[root@verifier payload]# keylime_tenant -v <IP_ADDRESS> -t agent -tp 9002 -u D432FBB3-D2F1-4A97-9EF7-75BD81C00000 --cert /var/lib/keylime/cv_ca --include /root/payload/ --whitelist /root/whitelist.txt -c add
Using config file /etc/keylime.conf
2020-06-14 09:07:56.915 - keylime.tenant - WARNING - CAUTION: using default password for private key, please set private_key_pw to a strong password
2020-06-14 09:07:56.915 - keylime.tenant - INFO - Setting up client TLS in /var/lib/keylime/cv_ca
2020-06-14 09:07:56.922 - keylime.tenant - INFO - TPM PCR Mask from policy is 0x408000
2020-06-14 09:07:56.922 - keylime.tenant - INFO - TPM PCR Mask from policy is 0x808000
2020-06-14 09:07:57.040 - keylime.ima - WARNING - No boot_aggregate value found in whitelist, adding an empty one
Please enter the password to decrypt your keystore:
Traceback (most recent call last):
  File "/usr/local/bin/keylime_tenant", line 10, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.6/site-packages/keylime/cmd/tenant.py", line 15, in main
    tenant.main()
  File "/usr/local/lib/python3.6/site-packages/keylime/tenant.py", line 794, in main
    mytenant.init_add(vars(args))
  File "/usr/local/lib/python3.6/site-packages/keylime/tenant.py", line 294, in init_add
    ca_util.cmd_mkcert(args["ca_dir"],self.agent_uuid)
  File "/usr/local/lib/python3.6/site-packages/keylime/ca_util.py", line 84, in cmd_mkcert
    priv = read_private()
  File "/usr/local/lib/python3.6/site-packages/keylime/ca_util.py", line 455, in read_private
    plain = crypto.decrypt(toread['priv'],key)
  File "/usr/local/lib/python3.6/site-packages/keylime/crypto.py", line 199, in decrypt
    return decryptor.update(ciphertext) + decryptor.finalize()
  File "/usr/lib64/python3.6/site-packages/cryptography/hazmat/primitives/ciphers/base.py", line 198, in finalize
    data = self._ctx.finalize()
  File "/usr/lib64/python3.6/site-packages/cryptography/hazmat/backends/openssl/ciphers.py", line 164, in finalize
    raise InvalidTag
cryptography.exceptions.InvalidTag

Did I do something wrong？

Can you check that ca_implementation is set to cfssl
https://github.com/keylime/keylime/blob/e0a1a98017828a3af6ab5a8bcaf2bcb91372e5d1/keylime.conf#L14
Also that you have cfssl installed.

Can you check that ca_implementation is set to cfssl
https://github.com/keylime/keylime/blob/e0a1a98017828a3af6ab5a8bcaf2bcb91372e5d1/keylime.conf#L14
Also that you have cfssl installed.

Yes, cfssl is installed and ca_implementation is set to cfssl

I think I see it now, point cert to a new location:
--cert /home/han0nly/keylimeca
You will then be prompted to create a password, put whatever you like. After this start keylime_ca and use the same password as before.

Sorry to bother you again...but after that I met a new problem.
When I run keylime_tenant -v <IP_ADDRESS> -t <IP_ADDRESS> -tp 9002 -u agent --cert /root/keylimeca --include /root/payload/ --whitelist /root/whitelist.txt -c add and then I was prompted to input a password. Then I got this error:
[root@verifier ~]# keylime_tenant -v <IP_ADDRESS> -t <IP_ADDRESS> -tp 9002 -u agent3 --cert /root/keylimeca --include /root/payload/ --whitelist /root/whitelist.txt -c add
Using config file /etc/keylime.conf
2020-06-14 10:27:37.177 - keylime.tenant - WARNING - CAUTION: using default password for private key, please set private_key_pw to a strong password
2020-06-14 10:27:37.178 - keylime.tenant - INFO - Setting up client TLS in /var/lib/keylime/cv_ca
2020-06-14 10:27:37.184 - keylime.tenant - INFO - TPM PCR Mask from policy is 0x408000
2020-06-14 10:27:37.184 - keylime.tenant - INFO - TPM PCR Mask from policy is 0x808000
2020-06-14 10:27:37.319 - keylime.ima - WARNING - No boot_aggregate value found in whitelist, adding an empty one
Please enter the password to decrypt your keystore:
2020-06-14 10:27:40.112 - keylime.ca-util - INFO - Created certificate for name agent3 successfully in /root/keylimeca
2020-06-14 10:27:40.176 - keylime.ca-util - INFO - Creating cert package for agent3 in agent3-pkg.zip
2020-06-14 10:27:40.239 - keylime.ca-util - INFO - Creating cert package for RevocationNotifier in RevocationNotifier-pkg.zip
2020-06-14 10:27:40.616 - keylime.registrar_client - INFO - Setting up client TLS...
2020-06-14 10:27:40.620 - keylime.registrar_client - WARNING - CAUTION: using default password for private key, please set private_key_pw to a strong password
2020-06-14 10:27:40.629 - keylime.registrar_client - CRITICAL - Error: unexpected http response code from Registrar Server: 404
2020-06-14 10:27:40.629 - keylime.registrar_client - CRITICAL - Response code 404: agent_id not found
2020-06-14 10:27:40.629 - keylime.tenant - WARNING - AIK not found in registrar, quote not validated
2020-06-14 10:27:41.863 - keylime.tenant - INFO - Agent agent3 stopped
Traceback (most recent call last):
  File "/usr/local/bin/keylime_tenant", line 10, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.6/site-packages/keylime/cmd/tenant.py", line 15, in main
    tenant.main()
  File "/usr/local/lib/python3.6/site-packages/keylime/tenant.py", line 797, in main
    mytenant.do_quote()
  File "/usr/local/lib/python3.6/site-packages/keylime/tenant.py", line 690, in do_quote
    raise e
  File "/usr/local/lib/python3.6/site-packages/keylime/tenant.py", line 653, in do_quote
    raise UserError("TPM Quote from cloud agent is invalid for nonce: %s"%self.nonce)
keylime.tenant.UserError: TPM Quote from cloud agent is invalid for nonce: L1z2QCoAuE3bAmFqRwmN

The keylime_agent logged these:
2020-06-14 10:27:40.574 - keylime.cloudagent - INFO - GET invoked from ('<IP_ADDRESS>', 43698) with uri:/quotes/identity?nonce=L1z2QCoAuE3bAmFqRwmN
2020-06-14 10:27:40.605 - keylime.cloudagent - INFO - GET identity quote returning 200 response.
2020-06-14 10:27:42.094 - keylime.cloudagent - INFO - GET invoked from ('<IP_ADDRESS>', 43704) with uri:/quotes/integrity?nonce=iF4y0DvAgHMK0CO7d3Se&mask=0x408400&vmask=0x808000&partial=0
2020-06-14 10:27:42.124 - keylime.cloudagent - INFO - GET integrity quote returning 200 response.
2020-06-14 10:27:42.408 - keylime.revocation_notifier - WARNING - Unable to check signature of revocation message: /var/lib/keylime/secure/unzipped/RevocationNotifier-cert.crt not available

I think this is the issue:
2020-06-14 10:27:40.629 - keylime.registrar_client - CRITICAL - Response code 404: agent_id not found
What do you have for the UUID value:
https://github.com/keylime/keylime/blob/e0a1a98017828a3af6ab5a8bcaf2bcb91372e5d1/keylime.conf#L57
You're using -u agent so it would need to look like this:
agent_uuid = agent
We typically use the following fixed value of D432FBB3-D2F1-4A97-9EF7-75BD81C00000 for development. If you like you can use agent_uuid = generate and it will create a random UUID each time.
So give this a try:
keylime_tenant -v <IP_ADDRESS> -t <IP_ADDRESS> -tp 9002 -u D432FBB3-D2F1-4A97-9EF7-75BD81C00000 --cert /root/keylimeca --include /root/payload/ --whitelist /root/whitelist.txt -c add

p.s it might be worth cleaning things up a bit:
Stop / kill the verifier / agent / registrar
umount /var/log/keylime/secure
rm -r /var/log/keylime
Start the verifier / registrar / agent

The vtpm support in openstack is fairly simple as nova just provides a path to create a vtpm device for a VM [1]. There were times that trusted compute + opencit available there but not maintained anymore and removed from the upstream.
I am towarding the integration with openstack too, with ironic and probably nova, it's nice to see @Han0nly working on the same road :)
[1] http://specs.openstack.org/openstack/nova-specs/specs/train/approved/add-emulated-virtual-tpm.html

I will support you both whenever I can.
We do have some integration with openstack already. You can set the agent_uuid value to openstack and it gets a uuid from the nova meta data service.

hi @kaifeng @lukehinds , I have ran OPENCIT for a couple of times , but it only support TPM1.2 and it's new version SecL can't be built in my environment, so I turn to Keylime for help. I'll try to make some contribution to Keylime and nice to meet you guys!

Sorry to bother again @lukehinds , I have tried cleaning and using a unique uuid, but I still get an error, did I miss some configurations or something?
keylime_tenant
[root@verifier ~]# keylime_tenant -v <IP_ADDRESS> -t agent -tp 9002 -u 4bf03a01-8920-4f9a-9a29-9edc0592d5a4 --cert /root/keylimeca/ --include /root/payload/ --whitelist /root/whitelist.txt -c add
Using config file /etc/keylime.conf
2020-06-14 20:27:42.379 - keylime.tenant - WARNING - CAUTION: using default password for private key, please set private_key_pw to a strong password
2020-06-14 20:27:42.379 - keylime.tenant - INFO - Setting up client TLS in /var/lib/keylime/cv_ca
2020-06-14 20:27:42.386 - keylime.tenant - INFO - TPM PCR Mask from policy is 0x408000
2020-06-14 20:27:42.386 - keylime.tenant - INFO - TPM PCR Mask from policy is 0x808000
2020-06-14 20:27:42.581 - keylime.ima - WARNING - No boot_aggregate value found in whitelist, adding an empty one
Please enter the password to decrypt your keystore:
2020-06-14 20:27:47.537 - keylime.ca-util - INFO - Created certificate for name 4bf03a01-8920-4f9a-9a29-9edc0592d5a4 successfully in /root/keylimeca/
2020-06-14 20:27:47.598 - keylime.ca-util - INFO - Creating cert package for 4bf03a01-8920-4f9a-9a29-9edc0592d5a4 in 4bf03a01-8920-4f9a-9a29-9edc0592d5a4-pkg.zip
2020-06-14 20:27:47.658 - keylime.ca-util - INFO - Creating cert package for RevocationNotifier in RevocationNotifier-pkg.zip
2020-06-14 20:27:48.116 - keylime.registrar_client - INFO - Setting up client TLS...
2020-06-14 20:27:48.121 - keylime.registrar_client - WARNING - CAUTION: using default password for private key, please set private_key_pw to a strong password
2020-06-14 20:27:48.134 - keylime.tpm2 - INFO - TPM2-TOOLS Version: 3.2.2
2020-06-14 20:27:48.146 - keylime.tpm2 - ERROR - No Root CA matched EK Certificate
2020-06-14 20:27:48.146 - keylime.tenant - WARNING - Invalid EK certificate
2020-06-14 20:27:49.603 - keylime.tenant - INFO - Agent 4bf03a01-8920-4f9a-9a29-9edc0592d5a4 stopped
Traceback (most recent call last):
  File "/usr/local/bin/keylime_tenant", line 10, in <module>
    sys.exit(main())
  File "/usr/local/lib/python3.6/site-packages/keylime/cmd/tenant.py", line 15, in main
    tenant.main()
  File "/usr/local/lib/python3.6/site-packages/keylime/tenant.py", line 797, in main
    mytenant.do_quote()
  File "/usr/local/lib/python3.6/site-packages/keylime/tenant.py", line 690, in do_quote
    raise e
  File "/usr/local/lib/python3.6/site-packages/keylime/tenant.py", line 653, in do_quote
    raise UserError("TPM Quote from cloud agent is invalid for nonce: %s"%self.nonce)
keylime.tenant.UserError: TPM Quote from cloud agent is invalid for nonce: 1LMNNM580SLcZptsXPEH

keylime_verifier
[root@verifier ~]# keylime_verifier             Using config file /etc/keylime.conf
2020-06-14 20:25:46.360 - keylime.cloudverifier - INFO - agent ids in db loaded from file: [('D432FBB3-D2F1-4A97-9EF7-75BD81C00000',), ('agent',), ('agent1',), ('agent2',), ('agent3',)]
2020-06-14 20:25:46.360 - keylime.cloudverifier - INFO - Starting Cloud Verifier (tornado) on port 8881, use <Ctrl-C> to stop
2020-06-14 20:25:46.360 - keylime.cloudverifier_common - INFO - Setting up TLS...
2020-06-14 20:25:46.360 - keylime.cloudverifier_common - INFO - Existing CA certificate found in /var/lib/keylime/cv_ca, not generating a new one
2020-06-14 20:25:46.363 - keylime.cloudverifier - INFO - Starting service for revocation notifications on port 8992
2020-06-14 20:27:48.084 - keylime.cloudverifier - INFO - POST returning 200 response for adding agent id: 4bf03a01-8920-4f9a-9a29-9edc0592d5a4
2020-06-14 20:27:49.603 - keylime.cloudverifier - INFO - PUT returning 200 response for agent id: 4bf03a01-8920-4f9a-9a29-9edc0592d5a4
2020-06-14 20:27:49.839 - keylime.registrar_client - INFO - Setting up client TLS...
2020-06-14 20:27:49.844 - keylime.registrar_client - WARNING - CAUTION: using default password for private key, please set private_key_pw to a strong password
2020-06-14 20:27:49.858 - keylime.tpm2 - INFO - TPM2-TOOLS Version: 3.2.2
2020-06-14 20:27:49.864 - keylime.tpm - INFO - Checking IMA measurement list on agent: 4bf03a01-8920-4f9a-9a29-9edc0592d5a4
2020-06-14 20:27:50.726 - keylime.ima - WARNING - Hashes for file boot_aggregate don't match 5445029c1db5e91093eaf6d921bd1abed9cef954 not in ['0000000000000000000000000000000000000000']
2020-06-14 20:27:50.726 - keylime.ima - ERROR - IMA ERRORS: template-hash 0 fnf 0 hash 1 good 0
2020-06-14 20:27:51.008 - keylime.cloudverifier - WARNING - agent 4bf03a01-8920-4f9a-9a29-9edc0592d5a4 failed, stopping polling
2020-06-14 20:27:51.028 - keylime.revocation_notifier - INFO - Sending revocation event to listening nodes..

Keylime_agent
2020-06-14 20:26:02.151 - keylime.cloudagent - INFO - Agent UUID: 4bf03a01-8920-4f9a-9a29-9edc0592d5a4
2020-06-14 20:26:02.352 - keylime.registrar_client - INFO - Agent registration requested for 4bf03a01-8920-4f9a-9a29-9edc0592d5a4
2020-06-14 20:26:02.370 - keylime.tpm2 - INFO - AIK activated.
2020-06-14 20:26:02.377 - keylime.registrar_client - INFO - Registration activated for agent 4bf03a01-8920-4f9a-9a29-9edc0592d5a4.
2020-06-14 20:26:02.417 - keylime.cloudagent - INFO - Starting Cloud Agent on <IP_ADDRESS>:9002 use <Ctrl-C> to stop
2020-06-14 20:26:02.419 - keylime.revocation_notifier - INFO - Waiting for revocation messages on 0mq <IP_ADDRESS>:8992
2020-06-14 20:27:48.085 - keylime.cloudagent - INFO - GET invoked from ('<IP_ADDRESS>', 43928) with uri:/quotes/identity?nonce=1LMNNM580SLcZptsXPEH
2020-06-14 20:27:48.113 - keylime.cloudagent - INFO - GET identity quote returning 200 response.
2020-06-14 20:27:49.808 - keylime.cloudagent - INFO - GET invoked from ('<IP_ADDRESS>', 43934) with uri:/quotes/integrity?nonce=68WirHfhkMptW1DaRkG9&mask=0x408400&vmask=0x808000&partial=0
2020-06-14 20:27:49.835 - keylime.cloudagent - INFO - GET integrity quote returning 200 response.
2020-06-14 20:27:51.027 - keylime.revocation_notifier - WARNING - Unable to check signature of revocation message: /var/lib/keylime/secure/unzipped/RevocationNotifier-cert.crt not available

Hi Han0nly,
Are you using a TPM emulator?

Yes, I use Vmware Workstation to create a TPM2.0 device on a VM.

Hi @lukehinds ,
Do I need to use the TPM emulator embedded in the Keylime installation scripts using -s option?

Hi @Han0nly , I have no experience with the VMWare tpm, so can't help much there.
There are two ways of doing this.
One is the tpm emulator, you can see how this is installed in our docker file:
https://github.com/keylime/keylime/blob/89e2ffb55829ea3af7cb602b7df90e43d23372e1/docker/Dockerfile-tpm20#L71-L77
One this is installed you will need to run the following steps to enable it:
https://github.com/keylime/keylime/blob/89e2ffb55829ea3af7cb602b7df90e43d23372e1/.ci/test_wrapper.sh#L6-L33
You should then be able to run tpm2_pccread and see a lot of hash values come back.
Using the emulator, will mean the tpm starts after IMA in the kernel, so IMA does not register the TPM (as it can't see one). We get around this using an ima emulator. You can run this with:
keylime_ima_emulator
The second option is to use the vTPM, here is a script to show how to set up a hypervisor host and deploy a vTPM into a virtual machine
https://github.com/keylime/keylime/blob/master/scripts/vtpm.sh
I will try and take some time to go over the vTPM as well,. as I am not sure if IMA see's it!

vTPM is just like a real TPM and keylime works great on it. One thing worth to note is that due to the random system boot sequence, the PCR10 can't be trusted, I think this is understandable, as long as we replay the calculation to reach the end result, it should be fine.

Hi @kaifeng , is this error ERROR - No Root CA matched EK Certificate rooted in vTPM? or due to some misconfigurations by myself?

This might be because we need an entry in https://github.com/keylime/keylime/tree/master/tpm_cert_store
You can get around that for now by changing the following to False:
https://github.com/keylime/keylime/blob/89e2ffb55829ea3af7cb602b7df90e43d23372e1/keylime.conf#L321
Just thinking @kaifeng / @Han0nly , should we set up a enhancement proposal for the OpenStack integration? . I would really like to get any deployment notes etc documented for other community members to use.

Hi @kaifeng , is this error ERROR - No Root CA matched EK Certificate rooted in vTPM? or due to some misconfigurations by myself?

Sorry I couldn't remember the details, last time I used keylime on a VM with vTPM days back to two months ago, and I still don't have an enviroment ready to play :(
Judging by code, it's unlikely I didn't have this issue though, but I didn't aware it caused any trouble to me. I think this might be what you are looking for: https://github.com/stefanberger/swtpm/wiki/Certificates-created-by-swtpm_setup

Just thinking @kaifeng / @Han0nly , should we set up a enhancement proposal for the OpenStack integration? . I would really like to get any deployment notes etc documented for other community members to use.

@lukehinds Honestly speaking, integration with openstack sounds quite big to me, maybe we need to break down into smaller features that would be easier to land, e.g., integrates keylime agent into ironic-python-agent so that we can get quote from the machine where the ramdisk is running. Currently keylime services are under the same project, this might have some issue in the packaging.

hi @kaifeng @lukehinds , I have ran OPENCIT for a couple of times , but it only support TPM1.2 and it's new version SecL can't be built in my environment, so I turn to Keylime for help. I'll try to make some contribution to Keylime and nice to meet you guys!

opencit was unmaintained for a few years, I have successfully built and running on the VM with vTPM, with a few tweaks, but it would be a nightmare to maintain.


Add the ability to search for office users

Description
Currently, the only way to find the specific person you're looking for is to click through dozens of pages of people and hope you don't miss them. This PR makes it easy to find the person you're looking for.
Setup

make server_run
make client_run
Log into the admin app and use the search field to find office users by email, first name, or last name.

Code Review Verification Steps

[ ] Request review from a member of a different team.
[ ] Have the Pivotal acceptance criteria been met for this change?

References

Pivotal story for this change

@lynzt thanks for finding those. Totally missed the pagination. Will update that and the indexes. May request to pair with you on a potential trigram index.

@lynzt I've addressed the % and index issues you brought up.
For pagination, #2887 adds a fix that can be more generally applied to correctly counting the TSPP records when using filters. Are you ok with me writing a separate story to apply that fix to the rest of the admin app?
Regarding n+1s, are you ok with saving that work for this ticket? I have a feeling it will require us to adjust the query builder.

Ah I see, so we can use %x% with a trigram index. Do you think it's worth using that strategy for first, last, and email, or just x% for first and last with regular indexes? Happy to go either way.

I'd probably do a *% search for first_name and last_name... i don't see a time when someone will search for the "middle" of a person's name, but if you do, you can sway me... :)
I do see a use case for %*% in the email since we might want to find all truss.works emails for instance in addition to name@% for instance...

@lynzt cool!

@lynzt I adjust the indexes and created a ticket for the n+1 issue

@lynzt it looks like there's a default behavior for this:

Filters are “search-as-you-type”, meaning that when the user enters new values in the filter form, the list refreshes (via an API request) immediately.

@garrettqmartin8 i'm curious what "refreshes (via an API request) immediately" means in the context of filtering a list when typing... I didn't see any numbers, but we might have to dig into the react-admin code??

Ah, looks like it may be 500ms.

@lynzt do you this the default is sensible or should we tweak it?

@garrettqmartin8 i am totally ok w/ the default... i just wanted to know what the default was (and that it made sense). thanks so much for checking that!
feel fee to 🚢!!! :)

Cool, no worries! Thanks 😎


Added static-ssl feature

Sometimes openssl is not available in the environments, and would be great to use a static version of it.
Thankfully, Curl rust already supports that via the static-ssl flag.
This PR adds support for it in isahc as well :)

Thanks, this is definitely a welcome addition!

Closed in favor of https://github.com/sagebind/isahc/pull/225, which does not set this feature as the default. This feature will be available in the 0.9.9 release.


Flexbox Grid System

Responsive layouts in material design adapt to any possible screen size. This UI guidance includes a flexible grid that ensures consistency across layouts, breakpoint details about how content reflows on different screens, and a description of how an app can scale from small to extra-large screens.
Specs for Flexbox Grid System

Maybe you can look at http://flexboxgrid.com/ : Grid system based on flexbox grids (classes names are bootstrap-like, but it's very lightweight).
Just a suggestion :-)

Hi @jtouzy
I like the idea. I will get some inspirations on http://flexboxgrid.com and on Structure
But the API that I want to develop will be something like that:
<md-layout md-row md-sm-column>
  <md-layout md-row>
    <md-layout md-flex></md-layout>
  </md-layout>

  <md-layout md-column>
    <md-layout md-flex></md-layout>
  </md-layout>
</md-layout>

@marcosmoura
Do you want to have a fixed number of columns in a single row ? I think it could be better than a automatic columns division system by default, even if it could be great in some cases...
Something like :
<!-- Fixed columns number divided (maybe 12 or something by default) -->
<md-layout md-row md-sm-columns>
  <md-layout md-column="3"></md-layout>
  <md-layout md-column="9"></md-layout>
</md-layout>
<!-- Auto sized columns 50%/50% -->
<md-layout md-row md-sm-columns>
  <md-layout md-column></md-layout>
  <md-layout md-column></md-layout>
</md-layout>

Hi,
why not https://material.angularjs.org/HEAD/layout/options

Yeah. Will have a way to specify the size, but I like the idea to pass the percentage. WIll be close to the Angular Material "flex" attribute.

Already in progress
The API will be "simple", I think. The following options will be available:

md-tag
md-row
md-row-xsmall
md-row-small
md-row-medium
md-row-large
md-row-xlarge
md-column
md-column-xsmall
md-column-small
md-column-medium
md-column-large
md-column-xlarge
md-flex / md-flex="33" - Layout size
md-gutter / md-gutter="8" - Layout 'padding' between layouts

Examples:
<md-layout :md-gutter="16">
  <md-layout> ... </md-layout>
  <md-layout :md-flex="66"> ... </md-layout>
</md-layout>

<md-layout :md-gutter="16">
  <md-layout :md-flex="75"> ... </md-layout>
  <md-layout> ... </md-layout>
</md-layout>

<md-layout :md-gutter="16">
  <md-layout md-column :md-gutter="16">
     <md-layout :md-flex="20"> ... </md-layout>
     <md-layout> ... </md-layout>
  </md-layout>

  <md-layout md-column :md-gutter="16">
     <md-layout :md-flex="50"> ... </md-layout>
     <md-layout> ... </md-layout>
     <md-layout> ... </md-layout>
  </md-layout>
</md-layout>

Maybe you can add some directives like md-hide-xsmall, md-visible-xsmall... ?
It's not directly related to the GridSystem but rather to the Responsive mechanism.

Yeah. Will be present as well. Thanks to remind me about that.

Looking forward to this! Great stuff!

First part done in the components/mdLayout branch.
Now I will develop the "responsive" part.

Already available! Enjoy!

How about adding a helper property to set the element's justify-content like space around


parcel.js sample, missing all check box, see red circle above screen shot

I have tried parcel.js sample, missing all check box, see red circle above screen shot,
I realize your original sample parcel.js source code,  missing
                     import 'ol-layerswitcher/dist/ol-layerswitcher.css';

By add above css, still missing all check box, why?
Is it polluted by  with other css? I also have materializedcss, and many other css.

Radio check box element is there (red line), it does have style, but somehow it was hidden, not showing as expected
by check console, radio style, I realized that radio check box css style was overide by materializecss
So I uncheck, cross line 3 style from materializedcss, (red square, below screen shot), now it shows as expected.

I have same error fixed by add style tag in html to overwrite opacity to 1
materialize css set radio opacity to 0, we must undo it to 1
how to fix this issue, click here
or issue 2 ,  click here
your html add following style tag to overwrite it
                        <!--   bug fix,   radio button is hidden at openlayer base map switcher, due to materialize css set radio opacity to 0 , fix by undo opacity to 1 -->

                                  <!--  issue and fix
                                      https://github.com/walkermatt/ol-layerswitcher/issues/388
                                      https://github.com/walkermatt/ol-layerswitcher-examples/issues/2
                                      https://stackoverflow.com/questions/49757521/materialize-css-radio-buttons-not-visible
                                    -->

                                  <style>
                                        [type="radio"]:not(:checked), [type="radio"]:checked {
                                            position: relative;
                                            opacity: 1;
                                        }

                                  </style>

                        <!--   bug fix,   radio button is hidden at openlayer base map switcher, due to materialize css set radio opacity to 0 , fix by undo opacity to 1 -->

After fix, it works as expected

@hoogw sorry for not seeing this issue when it was first created. Thanks for posting your findings.


Add test

🤖 Here is a PR Description generated by AI:
Implement unit tests for

Adds a new file with unit tests for the class.
Tests include:
response.out should make download visible
response.out should set download link attributes
response.out should set volumeControls class based on window height and audioPlayer position

Copilot's generated PR description (17s)
This pull request introduces several changes to improve the functionality and user experience of the repository. The most significant changes include the addition of new GitHub commands, the creation of a new GitHub workflow for generating PR descriptions, and the introduction of unit tests for the GreenAudioPlayer class. Furthermore, the README.md file has been updated, and a new example for using the repository_dispatch step has been added.
New GitHub commands:

.github/commands/example_repository_dispatch.yml: Added an example of how to use the repository_dispatch step.
.github/commands/generate_pr_description.yml: Created a new command for generating PR descriptions.
.github/commands/test.yml: Added a new command with a menu and form for user interaction.

GitHub workflow:

.github/workflows/main.yml: Created a new workflow to generate PR descriptions using an external API. The workflow runs on PR opening events and updates the PR description with the generated text.

Testing:

test/js/main.js: Introduced unit tests for the GreenAudioPlayer class, testing methods such as showDownload, downloadAudio, and directionAware.

Documentation:

README.md: Updated the title of the README file.


[zh] Fix typo

Signed-off-by: Guangwen Feng<EMAIL_ADDRESS>

/assign @tengqm

Thanks
/lgtm
/approve


improved Mandatory ID Filter to return info upon rejection

it now correctly displays a JSON error message when the request is anonymous.
also refactored MandatoryClientId & Shutdown Filters using the Template Method design pattern as they were
very similar.

Note for reviewers
Checkout out the Template Method design pattern before reviewing this PR 👍🏻

One question I had, why the switch from 400 to 503?

One question I had, why the switch from 400 to 503?
that is a very good question, it should be 400. 503 is wrong.

Hey @lmuhlha , @samfadrigalan could one of you please approve - I addressed all the issues raised. Cheers.

@sming One quick thought -- It might be a good idea to update the public docs for /query/metrics to stipulate the header requirement. It's currently part of the sample cURL but not called out as a requirement.


Remove check on deprecated parameters

As a pull request owner and reviewers, I checked that:

[x] Appropriate testing is done and actually running

/lgtm

/approve

/retest-required

Merging. We need to correct the reproducer.
I'll try to find out why the pre-commit is now crashing on the  netaddr library... doesn't make sens at all, until now it was just fine.


Update 19_Train_a_QA_model.ipynb

Colab has an outdated version of accelerate and the suggestion from Colab didn't work.
!pip install -qU accelerate
makes everything work out of the box again
personal note:
using %%capture can be confusing for newbies such as myself. !pip install -q .... feels a bit more visual while avoiding the bulk of the install.

Hello, thank you for this PR.
Can you put this install in the same line as the original install?
i.e.
pip install git+https://github.com/neuml/txtai datasets pandas "accelerate>=<min version>"

Done, I hope this helps :)

What is the ibis framework? That's not used in this notebook.

I realized that this affects a couple notebooks. I'm going to close this PR in lieu of a change that fixes everything. Thank you for pointing this issue out!


Update README.md

GitLab has been changed to Git Skills, so I changed it.

Thanks for contributing to the organisation!


Evicted secondary node fail to cluster again

Steps to reproduce

repro.sh: https://pastebin.ubuntu.com/p/rvNYg4cHtf/
remove_node.py: https://pastebin.ubuntu.com/p/QmjPfJqxFx/

Expected behavior
When the pod is scheduled to another node, it should be able to join back the quorum.
Actual behavior

The MySQL unit fails to join back the quorum, complaining about An instance with label 'squirrel-mysql-0' is already part of this InnoDB cluster
Versions

Operating system: Ubuntu 22.04.4 LTS

Juju CLI: 3.4.2-genericlinux-amd64

Juju agent: 3.4.2

Charm revision: 127

microk8s: MicroK8s v1.28.7 revision 6532
Log output
2024-04-18T08:55:29.833Z [container-agent] verbose: 2024-04-18T08:55:29Z: Loading startup files...
2024-04-18T08:55:29.833Z [container-agent] verbose: 2024-04-18T08:55:29Z: Loading plugins...
2024-04-18T08:55:29.833Z [container-agent] verbose: 2024-04-18T08:55:29Z: Connecting to MySQL at<EMAIL_ADDRESS>
2024-04-18T08:55:29.833Z [container-agent] verbose: 2024-04-18T08:55:29Z: Shell.connect: tid=257: CONNECTED: squirrel-mysql-1.squirrel-mysql-endpoints.rodents.svc.cluster.local
2024-04-18T08:55:29.833Z [container-agent] verbose: 2024-04-18T08:55:29Z: Connecting to MySQL at: mysql://clusteradmin@squirrel-mysql-1.squirrel-mysql-endpoints.rodents.svc.cluster.local:3306?connect-timeout=5000
2024-04-18T08:55:29.833Z [container-agent] verbose: 2024-04-18T08:55:29Z: Dba.get_cluster: tid=258: CONNECTED: squirrel-mysql-1.squirrel-mysql-endpoints.rodents.svc.cluster.local:3306
2024-04-18T08:55:29.833Z [container-agent] verbose: 2024-04-18T08:55:29Z: Connecting to MySQL at: mysql://clusteradmin@squirrel-mysql-1.squirrel-mysql-endpoints.rodents.svc.cluster.local:3306?connect-timeout=5000
2024-04-18T08:55:29.833Z [container-agent] verbose: 2024-04-18T08:55:29Z: Dba.get_cluster: tid=259: CONNECTED: squirrel-mysql-1.squirrel-mysql-endpoints.rodents.svc.cluster.local:3306
2024-04-18T08:55:29.833Z [container-agent] verbose: 2024-04-18T08:55:29Z: Group Replication 'group_name' value: 673502ca-fd60-11ee-931d-dec0be28ec20
2024-04-18T08:55:29.833Z [container-agent] verbose: 2024-04-18T08:55:29Z: Metadata 'group_name' value: 673502ca-fd60-11ee-931d-dec0be28ec20
2024-04-18T08:55:29.833Z [container-agent] verbose: 2024-04-18T08:55:29Z: Connecting to MySQL at: mysql://clusteradmin@squirrel-mysql-1.squirrel-mysql-endpoints.rodents.svc.cluster.local:3306?connect-timeout=5000
2024-04-18T08:55:29.833Z [container-agent] verbose: 2024-04-18T08:55:29Z: Dba.get_cluster: tid=260: CONNECTED: squirrel-mysql-1.squirrel-mysql-endpoints.rodents.svc.cluster.local:3306
2024-04-18T08:55:29.833Z [container-agent] verbose: 2024-04-18T08:55:29Z: Connecting to MySQL at: mysql://clusteradmin@squirrel-mysql-1.squirrel-mysql-endpoints.rodents.svc.cluster.local:3306?connect-timeout=5000
2024-04-18T08:55:29.833Z [container-agent] verbose: 2024-04-18T08:55:29Z: Dba.get_cluster: tid=261: CONNECTED: squirrel-mysql-1.squirrel-mysql-endpoints.rodents.svc.cluster.local:3306
2024-04-18T08:55:29.833Z [container-agent] Traceback (most recent call last):
2024-04-18T08:55:29.833Z [container-agent]   File "<string>", line 4, in <module>
2024-04-18T08:55:29.833Z [container-agent] ValueError: Cluster.add_instance: An instance with label 'squirrel-mysql-0' is already part of this InnoDB cluster

Additional context
This is part of a work in Sunbeam to be able to remove a node being part of a k8s cluster. Mysql units might be hosted on there, and we should be able to re-schedule them to other nodes.
The reproduction script is a bit convoluted, but this actually resembles a sunbeam installation.

Update: I was able to reproduce the issue and test a potential fix. I will be honing this fix in the coming week and opening a PR with tests

@gboutry we have merged a fix in PR #433 along with an integration test. the fix should be released to 8.0/edge. please re-test when able and re-open if there are any other issues


There's no way to set debugProfileBuildsEnabled to true

@jonahwilliams  found this issue which makes it impossible to trace which widgets are rebuilt in each frame.
I remembered that there is widgets build tracing in the debug mode a couple months ago so this is likely a recent regression.
Ideally, we should have a command line argument that works across flutter run and flutter drive (e.g., --profile) which would enable such tracing in both debug and profile mode.

https://github.com/flutter/flutter/issues/19349 might be a related issue.

CC @filiph  who recently tried to trace widget build but failed.

Fixed via https://github.com/flutter/flutter/pull/30867

@jonahwilliams thanks for the fix! I'd also like to have it work in the profile mode. Sending https://github.com/flutter/flutter/pull/30990 for review.


Booking timeslots

The bookings are made against preset individual 1 hr timeslots e.g 5pm, 6pm, 7pm etc. In the period 6am to 9pm
All the booking slots for each day should be displayed and the available ones the user would be able to select and book. The already booked ones the user should be able to see who has booked it and the players.
How do we treat this logic, add all the timeslots to the database and then update them as the users book?
Do we store the timeslots in a table?

I think this represents kinda similar concept I'm envisioning -> https://github.com/tylertaewook/tutor-scheduler-django

I think we should only save the booked ones and display the open ones in the calendar based on the time slot rules above.
Otherwise we have to store an infinite amount of rows and continuously update it as we go. I rather keep the database lean, but that does not exclude the view/template from showing available slots, right?
I like the design of the project you sent.

Do this first for today / tomorrow for members first, not a full calendar view = too complex for starters.

Have a list of time slots (Python list), and each time slot has a boolean if it has been booked (cross checking booking db table), then in the template you can display green free or grey booked based on this boolean.


Playlist download in Jiosaavn

DO NOT REMOVE OR SKIP THE ISSUE TEMPLATE

[X] I understand that I will be blocked if I intentionally remove or skip any mandatory* field

Checklist

[X] I'm requesting a site-specific feature
[X] I've verified that I have updated yt-dlp to nightly or master (update instructions)
[X] I've checked that all provided URLs are playable in a browser with the same IP and same login details
[X] I've searched known issues and the bugtracker for similar issues including closed ones. DO NOT post duplicates
[X] I've read the guidelines for opening an issue
[X] I've read about sharing account credentials and I'm willing to share it if required

Region
India
Example URLs
https://www.jiosaavn.com/s/playlist/2279fbe391defa793ad7076929a2f5c9/mood-english/LlJ8ZWT1ibN5084vKHRj2Q__
Provide a description that is worded well enough to be understood
Please add the playlist download support for Jiosaavn
Provide verbose output that clearly demonstrates the problem

[X] Run your yt-dlp command with -vU flag added (yt-dlp -vU <your command line>)
[X] If using API, add 'verbose': True to YoutubeDL params instead
[X] Copy the WHOLE output (starting with [debug] Command-line config) and insert it below

Complete Verbose Output
[debug] Command-line config: ['--verbose', 'https://www.jiosaavn.com/s/playlist/2279fbe391defa793ad7076929a2f5c9/mood-english/LlJ8ZWT1ibN5084vKHRj2Q__']
[debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8, error utf-8, screen utf-8
[debug] yt-dlp version<EMAIL_ADDRESS>from yt-dlp/yt-dlp [615a84447] (win_exe)
[debug] Python 3.8.10 (CPython AMD64 64bit) - Windows-10-10.0.19045-SP0 (OpenSSL 1.1.1k  25 Mar 2021)
[debug] exe versions: ffmpeg N-112207-g8eb094adb2-20230928 (setts), ffprobe N-112207-g8eb094adb2-20230928
[debug] Optional libraries: Cryptodome-3.20.0, brotli-1.1.0, certifi-2024.02.02, mutagen-1.47.0, requests-2.31.0, sqlite3-3.35.5, urllib3-2.2.1, websockets-12.0
[debug] Proxy map: {}
[debug] Request Handlers: urllib, requests, websockets
[debug] Loaded 1803 extractors
[generic] Extracting URL: https://www.jiosaavn.com/s/playlist/2279fbe391defa793ad7076929a2f5c9/mood-english/LlJ8ZWT1ibN5084vKHRj2Q__
[generic] LlJ8ZWT1ibN5084vKHRj2Q__: Downloading webpage
WARNING: [generic] Falling back on generic information extractor
[generic] LlJ8ZWT1ibN5084vKHRj2Q__: Extracting information
[debug] Looking for embeds
ERROR: Unsupported URL: https://www.jiosaavn.com/s/playlist/2279fbe391defa793ad7076929a2f5c9/mood-english/LlJ8ZWT1ibN5084vKHRj2Q__
Traceback (most recent call last):
  File "yt_dlp\YoutubeDL.py", line 1594, in wrapper
  File "yt_dlp\YoutubeDL.py", line 1729, in __extract_info
  File "yt_dlp\extractor\common.py", line 732, in extract
  File "yt_dlp\extractor\generic.py", line 2530, in _real_extract
yt_dlp.utils.UnsupportedError: Unsupported URL: https://www.jiosaavn.com/s/playlist/2279fbe391defa793ad7076929a2f5c9/mood-english/LlJ8ZWT1ibN5084vKHRj2Q__

Hello,
It looks like the playlists that have /playlist in URL download fine but other playlists do not.  Example URL would be "https://www.jiosaavn.com/featured/taaza-tunes/Me5RridRfDk_" which returns the following:
yt-dlp -vU "https://www.jiosaavn.com/featured/taaza-tunes/Me5RridRfDk_" [debug] Command-line config: ['-vU', 'https://www.jiosaavn.com/featured/taaza-tunes/Me5RridRfDk_'] [debug] Encodings: locale cp1252, fs utf-8, pref cp1252, out utf-8, error utf-8, screen utf-8 [debug] yt-dlp version<EMAIL_ADDRESS>from yt-dlp/yt-dlp [93d33cb29] (pip) [debug] Python 3.12.1 (CPython AMD64 64bit) - Windows-11-10.0.22631-SP0 (OpenSSL 3.0.11 19 Sep 2023) [debug] exe versions: none [debug] Optional libraries: Cryptodome-3.20.0, brotli-1.1.0, certifi-2023.11.17, mutagen-1.47.0, requests-2.32.3, sqlite3-3.43.1, urllib3-2.1.0, websockets-12.0 [debug] Proxy map: {} [debug] Request Handlers: urllib, requests, websockets [debug] Loaded 1831 extractors [debug] Fetching release info: https://api.github.com/repos/yt-dlp/yt-dlp/releases/latest Latest version<EMAIL_ADDRESS>from yt-dlp/yt-dlp yt-dlp is up to date<EMAIL_ADDRESS>from yt-dlp/yt-dlp) [generic] Extracting URL: https://www.jiosaavn.com/featured/taaza-tunes/Me5RridRfDk_ [generic] Me5RridRfDk_: Downloading webpage WARNING: [generic] Falling back on generic information extractor [generic] Me5RridRfDk_: Extracting information [debug] Looking for embeds ERROR: Unsupported URL: https://www.jiosaavn.com/featured/taaza-tunes/Me5RridRfDk_ Traceback (most recent call last):   File "C:\Users\parijat\AppData\Local\Programs\Python\Python312\Lib\site-packages\yt_dlp\YoutubeDL.py", line 1622, in wrapper     return func(self, *args, **kwargs)            ^^^^^^^^^^^^^^^^^^^^^^^^^^^   File "C:\Users\parijat\AppData\Local\Programs\Python\Python312\Lib\site-packages\yt_dlp\YoutubeDL.py", line 1757, in __extract_info     ie_result = ie.extract(url)                 ^^^^^^^^^^^^^^^   File "C:\Users\parijat\AppData\Local\Programs\Python\Python312\Lib\site-packages\yt_dlp\extractor\common.py", line 740, in extract     ie_result = self._real_extract(url)                 ^^^^^^^^^^^^^^^^^^^^^^^   File "C:\Users\parijat\AppData\Local\Programs\Python\Python312\Lib\site-packages\yt_dlp\extractor\generic.py", line 2521, in _real_extract     raise UnsupportedError(url) yt_dlp.utils.UnsupportedError: Unsupported URL: https://www.jiosaavn.com/featured/taaza-tunes/Me5RridRfDk_

@vicosphi Please open a new "Site feature request" issue