New build pipeline

Many people have asked when the next release will happen. In the run-up to v1, we've been adding new features, changing the API, etc. so understandably users want the very latest version. I think this is something that will happen again and again when we approach deadlines.
To improve on our existing setup, this change introduces two drastic changes:

every merge on the master branch will trigger a snapshot release in Sonatype, that will look something like scanamo-<commitId>
releases will be triggered by Git tags, rather than the ol' Sonatype process. This is a long pet-peeve of mine that we don't use Git workflows that much, even when it's built for that.

Codecov Report

:exclamation: No coverage uploaded for pull request base (master@0d57e7a). Click here to learn what that means.
The diff coverage is n/a.

@@           Coverage Diff           @@
##             master   #280   +/-   ##
=======================================
  Coverage          ?     0%
=======================================
  Files             ?     33
  Lines             ?    193
  Branches          ?     10
=======================================
  Hits              ?      0
  Misses            ?    193
  Partials          ?      0

Impacted Files
Coverage Δ

.../src/main/scala/com/gu/scanamo/LocalDynamoDB.scala
0% <ø> (ø)

Continue to review full report at Codecov.

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

@philwills brought back coverage analysis (without the pesky comments) 🎉

I had to comment it out because some tests are failing with 2.11 😢 I prefer to investigate separately.

I seem to remember there was a reason why I originally went for coveralls over scoverage

Let me know if you do, I'm not attached to either ✌

@philwills woohoo, the fix turned out to be easier than I thought, I restored the cross build tests.

I wonder if the package tree should start at scanamo instead of org.scanamo 🤔

I went for org.scanamo as it matches the maven coordinates and fits the java model for trying to avoid clashes.


Update audit.md

mount path and host path directory amended. ##slash removed /

name: audit-log hostPath: path: /var/log/kubernetes/audit

mountPath: /var/log/kubernetes/audit
name: audit-log

Why is this change better @krouser ? I'm not clear on the value we get from making it.

Why is this change better @krouser ? I'm not clear on the value we get from making it.

@sftim its not different from the original edit in terms of what it does. It just makes it a bit clean in my opinion.
in the apiserver yaml the mount dirs don't have slash / at the end.


Porting CustomHelpCommand from bot

Description

This proposes porting the CustomHelpCommand class from the server's Python Bot. This would mean either replacing the current implementation for SeasonalBot or extending it to fit the port.
Reasoning

Most command groups often make use of ctx.send_help like .snake or .cogs which don't utilize the help embeds. A common pattern that's used for this instead is to use ctx.invoke the help command explicitly like .caesarcipher. This would allow for the help responses for these command groups to be consistent with each other.
Proposed Implementation

The port should hopefully be a one-to-one copy of the original implementation, moving helper functions and adding a few adjustments for SeasonalBot.
Would you like to implement this yourself?

[ ] I'd like to implement this feature myself
[x] Anyone can implement this feature

@PureFunctor are you still planning on implementing this?

I can't say I can work on this for now; I suppose further discussion might be needed in terms of the implications towards complexity or feature parity with the other bot.

Thank you for the quick response. I hope everything works out in the end.

This is now being ported to bot-core so that both bots can use the same code.


Set discovery-mode=all for non.contextual.ContainerEventTest

This test relies on unannotated classes being discovered and so needs
discovery-mode=all.
This now needs to be added explicitly because the default was changed to
discovery-mode=annotated.
Also update the BeansXml javadoc with the new default discovery mode.
Fixes #369

The CI failures were due to dep on staged but unreleased Final artifacts and hence non-blocking.


Support unexpected usage of decimal symbols

This PR improves i18n.unformatCurrency to handle the usage of . as the decimal symbol for locales where the . is not actually the expected decimal symbol. This is because users may input numbers with a . as the decimal symbol and expect to to work even though the formatted version of the input yields , as the decimal symbol. A good example of this is the fr locale.
As per a conversation with @Korri, we should support this workflow for users.

Although some poeple might still use a . in France instead of a ,
I know some bank interface that allow ., some others that don’t (in Québec)

Related to https://github.com/Shopify/web/issues/10999
cc/ @loic-d

Not sure we should accept 555.555.55 as a valid number, it does not make sense in any country.

Not sure we should accept 555.555.55 as a valid number, it does not make sense in any country.

As per the Intl.NumberFormat API, it locale uses . as a thousandths separator
const number = 55555555.55;
console.log(new Intl.NumberFormat('it', { style: 'currency', currency: 'USD' }).format(number));
> "55.555.555,55 USD"

it could be a good candidate for another test?

My concern is more that we should not accept numbers where decimal and thousands separator are the same character as it is clearly a typo, and we might be making a wrong assumption (did they forget a number of did they typo the thousand separator?)

we should not accept numbers where decimal and thousands separator are the same character

What do you mean by "not accept". In production rails today, in standard en-US locale, if the merchant inputs 555.555.555.55 into the price field in product show, it formats to 555,555,555.55.

555.555.555.55

In production rails today, in standard en-US locale, if the merchant inputs 555.555.555.55 into the price field in product show, it formats to 555,555,555.55.

TIL, then this is definitely out of scope for this PR, sorry about that!


Generate json artifacts

Refs to https://github.com/rtfd/readthedocs.org/issues/3393
Still WIP, I'm testing this locally to see if it works p:

I think I need to make this work with a lower sphinx version :disappointed:

This PR is ready, we only need to check for https://github.com/rtfd/readthedocs-sphinx-ext/pull/43#discussion_r194269317 and https://github.com/rtfd/readthedocs-sphinx-ext/issues/44

I having doubts about the location of the json files, I need to override the move method from the htmlbuilder in rtd. It feels like the output directory should be something like _build/html/_json

This is done, I need to change things in the rtd side

This looks good. I'd like to get it out in a deploy today, so going to merge it in.


Apodisation window functions

Hi David,
two questions regarding the apodisation options. The documentation for mask_apodization lists the following two functions:

'C1' apodisation: $f = x - \sin(2 \pi x) / (2 \pi)$
'C2' apodisation: $f = (1/2) \cdot [1 - \cos(\pi x)]$

for $x < 1$ and where $x = \sqrt{(1 - \cos(\theta)) / (1 - \cos(\theta_\ast))}$.
This does not match the cited source (Grain et al. 2009) in two ways:

The naming of C1 and C2 in pymaster appears to be the opposite of the naming in the paper, i.e.:

pymaster 'C1' apodisation resembles more equation (31) in the paper which is referred to as the $C^2$-window therein.
pymaster 'C2' apodisation resembles more equation (30) in the paper which is referred to as the $C^1$-window therein.

Is this just a typo? Or am I maybe missing something subtle?

The equations above match equations (30) and (31) in the paper almost exactly, except for the definition of x. The paper effectively uses $x=\theta/\theta_\ast$.
The difference can be seen in the plot below. The paper definition results in symmetric transitions with a mask value of 0.5 at the half way point. The pymaster doc definition results in an asymmetric transition.
Why is that? Was this shown to perform better?

import numpy as np
from scipy import stats
import matplotlib.pyplot as plt
fw, fh = plt.rcParams['figure.figsize']

sigma = 1
theta_star = 2.5 * sigma
theta = np.linspace(0, theta_star, 101)
norm = stats.norm(loc=theta_star, scale=sigma)

fig, (ax1, ax2) = plt.subplots(1, 2, figsize=(2*fw, fh))

x = np.sqrt((1-np.cos(theta)) / (1-np.cos(theta_star)))
ax1.set_title(r"pymaster definition of $x = \sqrt{(1-\cos\theta)~/~(1-\cos\theta_\ast))}$")
ax1.plot(theta, norm.pdf(theta)/norm.pdf(theta).max(), c='k', label="pymaster: apotype='Smooth'")
ax1.plot(theta, x - np.sin(2 * np.pi * x) / (2 * np.pi),      label="pymaster: apotype='C1'")
ax1.plot(theta, 1 / 2 * (1 - np.cos(np.pi * x)),              label="pymaster: apotype='C2'")
ax1.axvline(theta_star/2, c='k', ls=':', lw=0.6)

x = theta / theta_star
ax2.set_title(r"Grain et al. (2009) definition of $x = \theta~/~\theta_\ast$")
ax2.plot(theta, norm.pdf(theta)/norm.pdf(theta).max(), c='k', label="pymaster: apotype='Smooth'")
ax2.plot(theta, 1 / 2 * (1 - np.cos(np.pi * x)),              label="Grain et al.: $C^1$-window, eq. (30)")
ax2.plot(theta, x - np.sin(2 * np.pi * x) / (2 * np.pi),      label="Grain et al.: $C^2$-window, eq. (31)")
ax2.axvline(theta_star/2, c='k', ls=':', lw=0.6)

ax1.set_xlabel(r"Distance $\theta$ from masked pixel")
ax2.set_xlabel(r"Distance $\theta$ from masked pixel")
ax1.set_ylabel(r"Mask value")
ax2.set_ylabel(r"Mask value")
ax1.legend(loc='lower right');
ax2.legend(loc='lower right');

Cheers,
Lukas

Hi @lukashergt
Ah, good catch on the C1/C2 thing. That is indeed a typo, and I'm very surprised that it hasn't been caught before.
Indeed, the definition of the apodisation kernels is not exactly the same as used in Grain et al. 2009 (although they should coincide for small angles -- not sure what value of theta_* your plot corresponds to). The main reason for this is efficiency: calculating angles between two pixels requires taking the arccosine of the dot product between their unit vectors, which is a slow operation. The x variable requires only the cosine of that angle, which is more efficient while preserving the differentiability of the kernels. If there is a strong reason for preferring something that adheres exactly to the Grain et al. 2009 definition, it could be implemented.

Thanks for the quick reply!

not sure what value of theta_* your plot corresponds to

I was using theta_star = 2.5 * sigma with sigma = 1 (in degrees). The value of 2.5 comes from the apotype='Smooth' recipe, which sets all pixels within 2.5*sigma to zero before smooting. I figured that value was chosen to kinda match the C1 and C2 methods (see right hand plot above).
That said, the problem that you are hinting at is that I did not convert my input units from degree to radians in this little mock example...^^'
Minimal change to sigma makes all the difference:
sigma_deg = 1  # in degree
sigma = np.deg2rad(sigma_deg)

Now we have a more realistically small apodisation scale (yes, an apodisation scale of over 120 degrees would be rather absurd...) and the plots look the same (except for the C1/C2 confusion...):

The main reason for this is efficiency

I see, I was just a little surprised and got curious (after fooling myself into thinking the difference was bigger than it is...).
Thanks! Apologies for the needless confusion... Feel free to close (or keep open if intending to fix the C1/C2 thing).

OK, great. I'll leave it open, since we should fix the C1/C2 confusion. Thanks for catching that!


Data for Homework 1?

Hello Dear Colleagues,
First and foremost, many many thanks for development of these amazing R tutorials! This is such an amazing resource! Connected to the homework (Homework 1), one quick question-- are those data files available for public download? It says to pull them off the moodle, but I don't think we/others have access to that (unless I'm missing something).
I initially thought I tracked down the data from a figShare; it was data from "A randomized placebo-controlled trial of positive psychology interventions in Australia", but the specific files were a bit different. I also looked through the GitHub at different folders, but again no luck.
Many thanks again, and our team really appreciated this resource!
Jamie.

Hello colleagues,
I just wanted to follow-up about this. We were also trying to find relevant data files for Ch. 16 (https://psyteachr.github.io/data-skills-v3/project-analysis.html). Are those various csv files available? We hadn't found those (or the Homework 1 files).
Many thanks,
Jamie.


Support chaining Path commands

Allow chaining path operations like the following:
- p.M(20, -40)
- p.L(20, -27)
- p.L(0, -20)
+ p.M(20, -40).L(20, -27).L(0, -20)

I modified Path.append to return self instead of each method individually so it would keep them all on one line, but maybe that's just kicking the formatting bucket down the road. Let me know what you would prefer :+1:

Made the changes. Let me know if there's anything else :+1:

Published version 1.6.1 to PyPI.


Use a dotted line for "green text"

Jonathan recently made some accessibility changes, including adding a full underline to "green text" (terms). This implies that clicking the link may take someone to a new page. We should change it to a dotted or dashed underline.

This is a CSS change that Clean Slate project already did
`text-decoration: dashed"


Layout/IndentAssignment false positive when assigning multiple values

When assigning multiple values on one line to a value defined on the below line, as shown here, the Layout/IndentAssignment cop has a false positive.
a = b =
  c

The reason why I am making such assignments in the first place is due to the history of the SketchUp Ruby API. When creating a command (a toolbar button) we previously defined a path to a small icon and a path to a large icon, as there are two toolbar scales users can chose from. For the last couple of years though vector icons have been supported, and the large and small icon path typically has the same value, but still needs to be both assigned.
save_cmd.large_icon = save_cmd.small_icon =
  File.join(PLUGIN_DIR, "images", "tb_save#{LUI.icon_file_extension}")

Expected behavior
Code passes with no offense as the subsequent line is indented.
Actual behavior
Layout/IndentAssignment offense detected, due to right-hand-side not being indented.
Steps to reproduce the problem
Check following code with RuboCop:
save_cmd.large_icon = save_cmd.small_icon =
  File.join(PLUGIN_DIR, "images", "tb_save#{LUI.icon_file_extension}")

RuboCop version
rubocop -V
0.63.1 (using Parser <IP_ADDRESS>, running on ruby 2.4.2 x64-mingw32)

(Latest version compatible with rubocop-sketchup it seems)

Confirmed

@baelter Can you give us an example? I can't reproduce this with the example above and RuboCop v0.75.0 (seems to be fixed since https://github.com/rubocop-hq/rubocop/pull/7371).

My mistake


exp: add more logs

see why
https://prow.istio.io/view/gs/istio-prow/pr-logs/pull/istio_istio/50921/integ-pilot-multicluster_istio/1788245480619118592
fails

Skipping CI for Draft Pull Request.
If you want CI signal for your change, please convert it to an actual PR.
You can still manually trigger a test run with /test all

/test integ-pilot-multicluster_istio

@howardjohn: The following test failed, say /retest to rerun all failed tests or /retest-required to rerun all mandatory failed tests:

Test name
Commit
Details
Required
Rerun command

integ-pilot-multicluster_istio
4f10798ad1a71295a8f36086a6a124638cdc901a
link
true
/test integ-pilot-multicluster

Instructions for interacting with me using PR comments are available here.  If you have questions or suggestions related to my behavior, please file an issue against the kubernetes-sigs/prow repository. I understand the commands that are listed here.

/test integ-pilot-multicluster_istio


cmd/compile: slow compilation of a package with a very large API

What version of Go are you using (go version)?
go1.18.2 windows/amd64

the OS doesn't seem to be making a big difference, and I was experiencing the issue since at least go 17

Does this issue reproduce with the latest release?
yes
What operating system and processor architecture are you using (go env)?
set GO111MODULE=
set GOARCH=amd64
set GOBIN=
set GOCACHE=C:\Users\vibiret\AppData\Local\go-build
set GOENV=C:\Users\vibiret\AppData\Roaming\go\env
set GOEXE=.exe
set GOEXPERIMENT=
set GOFLAGS=
set GOHOSTARCH=amd64
set GOHOSTOS=windows
set GOINSECURE=
set GOMODCACHE=C:\Users\vibiret\go\pkg\mod
set GONOPROXY=
set GONOSUMDB=
set GOOS=windows
set GOPATH=C:\Users\vibiret\go
set GOPRIVATE=
set GOPROXY=https://proxy.golang.org,direct
set GOROOT=C:\Program Files\Go
set GOSUMDB=sum.golang.org
set GOTMPDIR=
set GOTOOLDIR=C:\Program Files\Go\pkg\tool\windows_amd64
set GOVCS=
set GOVERSION=go1.18.2
set GCCGO=gccgo
set GOAMD64=v1
set AR=ar
set CC=gcc
set CXX=g++
set CGO_ENABLED=1
set GOMOD=C:\sources\gitlocal\gorepro\go.mod
set GOWORK=
set CGO_CFLAGS=-g -O2
set CGO_CPPFLAGS=
set CGO_CXXFLAGS=-g -O2
set CGO_FFLAGS=-g -O2
set CGO_LDFLAGS=-g -O2
set PKG_CONFIG=pkg-config
set GOGCCFLAGS=-m64 -mthreads -fno-caret-diagnostics -Qunused-arguments -fmessage-length=0 -fdebug-prefix-map=C:\Users\vibiret\AppData\Local\Temp\go-build1532428258=/tmp/go-build -gno-record-gcc-switches

What did you do?
go mod init main
go get<EMAIL_ADDRESS>#takes about 20 seconds on my machine, expected, this is the large package we're maintaining
go get<EMAIL_ADDRESS># takes about 5 seconds, expected
go get<EMAIL_ADDRESS># takes about 2 seconds, expected

notepad main.go #or code, vim,... whatever you have on your OS

# paste the content from the appendix

go build # takes about 1m30s, long but expected

Now replace the following lines
-result, err := client.Me().Messages().Get()
+result, err := client.Me().MailFoldersById("Inbox").Messages().Get()

Then run go build again, which takes about 30 seconds, not expected, should take a couple of seconds thanks to caching.
What did you expect to see?
Subsequent builds should be in the sub seconds time as the packages should be cached.
What did you see instead?
Takes about the original build time.
Additional context
We're maintaining a large package that's generated from an API description. The API itself is fairly large. The initial ask from our SDK users was about the build time increasing significantly when adding our package and caching seeming like it's not fully working from one go build to another.
With the release of 1.18 and generics, we're already identified opportunities for improvements to generate less code, but haven't acted on it yet.  @breml @josharian @dominikh were really helpful with framing the issue and suggested we posted here before making those improvements.
Additionally, the go doc for our package is not working either.
Appendix
main.go content
package main

import (
	"context"
	"fmt"

	azidentity "github.com/Azure/azure-sdk-for-go/sdk/azidentity"
	a "github.com/microsoft/kiota-authentication-azure-go"
	r "github.com/microsoft/kiota-http-go"
	msgraphsdk "github.com/microsoftgraph/msgraph-sdk-go"
)

func main() {
	cred, err := azidentity.NewDeviceCodeCredential(&azidentity.DeviceCodeCredentialOptions{
		TenantID: "placeholder",
		ClientID: "placeholder",
		UserPrompt: func(ctx context.Context, message azidentity.DeviceCodeMessage) error {
			fmt.Println(message.Message)
			return nil
		},
	})
	if err != nil {
		fmt.Printf("Error creating credentials: %v\n", err)
	}
	auth, err := a.NewAzureIdentityAuthenticationProviderWithScopes(cred, []string{"Mail.Read", "Mail.Send"})
	if err != nil {
		fmt.Printf("Error authentication provider: %v\n", err)
		return
	}
	adapter, err := r.NewNetHttpRequestAdapter(auth)
	if err != nil {
		fmt.Printf("Error creating adapter: %v\n", err)
		return
	}
	client := msgraphsdk.NewGraphServiceClient(adapter)
	result, err := client.Me().Messages().Get()
	if err != nil {
		fmt.Printf("Error executing request: %v\n", err)
		return
	}
	if result != nil {
		fmt.Printf("Got a result")
		return
	}
}

Please don't do that. The majority of the people you pinged don't even work on the compiler regularly.

Apologies. This is not something I usually do. What's the right process?

A good starting point might be to make the issue more actionable by tracing the command to figure out where the bottleneck is.
@matloob added an experimental -debug-trace flag in CL 237683 — could you try running the unexpectedly slow command with -debug-trace=<some file>, and then view it with go tool trace to see where it is spending its time?
That would at least help identify the appropriate maintainers to route this issue to, or perhaps even an opportunity for you to contribute a fix.

Thanks for the guidance
Here is what I did:

go build -debug-trace="initial.out"
edit the code with a trivial change
go build -debug-trace="final.out"
go tool trace final.out

Which results in
2022/07/12 10:30:59 Parsing trace...
failed to parse trace: not a trace file

Attaching the files.
traces.zip

The threading behavior in the trace doesn't match the actual threading behavior of the program — it's kind of an impedance mismatch between Go's threading model and the model expected by the trace viewer. However, the indexing changes coming up in Go 1.19 are intended to speed up that loading phase, especially on platforms with unusually slow filesystems (such as Windows 😅).

For build dependencies, most of the steps "take no time" which I'm assuming means they are being retrieved from cache. However some do take a little bit of time although they haven't changed, could it indicate a cache miss?

Possibly, yes. And we do expect to see at least one cache miss for package main. 🤔

For the [latter], could/should the link result be cached to some extent?

Unfortunately, linking a Go program is not incremental: if any of the inputs changes, the entire link step must be redone. It might be worth profiling and/or tracing the linker to see what can be done to reduce the latency of that step, but I know a lot of work has already gone into making the linker faster.
For now, the best way to speed up linking is to present the linker with less code: that is, to break up APIs into smaller packages so that the linker doesn't have to process (and discard) a lot of irrelevant code.

Go 1.19 speeding up loading

Great, looking forward to that version! Are you looking for feedback on those aspects? (i.e. would you like me to run the trace with go 1.19 and see if we get different results?)

cache miss

Any action I should take to investigate that further?

no linking cache

Understood, thanks for the context. Is that work going to be part of Go1.19 as well?

reduce the code

We already identified a couple of actions we'll take or the API users can take to reduce the packages sizes. I was encouraged by the community using our SDK to reach out here before they are implemented because even if our code-base is large, some of the behaviour that was observed seemed odd.

Another aspect we didn't get into so far is the documentation for the models sub package is failing to display<EMAIL_ADDRESS>

That is a truly enormous number of source files. I would suggest splitting up the package into smaller, self-contained units rather than trying to get the various bits of toolchain to deal gracefully with such a monolith.

We unfortunately don't have that option in our case, this package is representing and API that is a graph (no relation with GraphQL). All the types and endpoints are intricated, we've tried to make educated guesses to ship sub-packages on arbitrary divisions in the past but it's an ever-going debate of "you didn't split the cake the way I wanted it".
Outside of the full service library, people also have the choice to slice the API surface however they like it and get a client for the exact subset they want. But all of that is outside of this discussion.
We could potentially reduce the number of types by half IF we can get rid of the interfaces. The main reason we brought interfaces was because it seemed like the only way to support "downcasting" in Go at the moment.
We have lots of cases where the API defines models that inherit from one another and declares an endpoint that returns the base model and could return the derived ones.
Eg. If we have a Vehicle struct, and a Car and Truck struct that "inherit" from it with a few extra fields, and we have a GetVehicles method which returns a slice of vehicles. The method might return Cars and Trucks in the slice. Now, if people want to know whether they got a car or a truck and access the additional fields:
The following works
myCar := myVehicule.(Carable) // where carable is an interface that reflects all the accessors present on the struct

But this doesn't work
myCar := myVehicule.(*Car)

And the same problem arises for upcasts.

 Tools like go doc or pkg.go.dev will never be useful on a huge package even if the toolchain became magically fast, for example. Similarly, static analysis tools like staticcheck cache their work at the package level. It may be possible to chip away at performance issues in the toolchain, but ultimately, end users will almost always have a bad user experience with huge Go packages.

what counts against a package size? types, functions? sub packages?
What I'm trying to understand with this question is which part might be problematic in our current setup:

models sub package that contains thousands of types
the hierarchical structure made of packages that contains a couple of types at each node level

Thanks, so the models package is probably the most painful one at this point. Do you have any advice on my downcast question? If we could solve for this, we could divide the number of types by 2.
Would moving those interfaces in a separate package help? it might degrade the experience a little though.

Do you have any advice on my downcast question?

Interfaces are usually the most appropriate way to do what you're describing in Go.
But that's also getting to be a bit of a tangent; perhaps we could continue that part of the discussion on https://github.com/microsoftgraph/msgraph-sdk-go/issues/129?

Sure, we can continue the discussion over there, to recap:

This package is larger than most go packages out there.
The main offender is the models sub package, which even causes issues with go doc.
50% of the models packages are interfaces added to provide downcast support, this is built the preferred way by the Go community and there's no opportunity to get rid of them.
caching might be behaving oddly (more on that below)
go 1.19 brings more than welcomed performance improvements, but we'll still be on the same factor of scale.

On caching:
I went and revisited the chart, the models package takes about 400ms to load. Given the number of "symbols", is that expected, or should it be considered a cache miss?
Is there a way to get clear data about cache hit and caches misses for packages build?

Hi everyone,
After lots of investigations here is a recap of our situation before I close the issue.
We were able to reduce the initial compilation time (no cache) from 12 minutes to 3 minutes (on a standard GitHub agent).
We also reduced cached builds from 3/4 minutes to a couple of seconds.
We rolled back the use of generics, the compiler uses much more memory with generics which leads it to trash the CPU on memory constrained agents (anything under 16GB of ram).
We also flattened most of the packages for the fluent API surface, having a few large packages works much better than having lots of very small packages for the caching system. (e.g. everything that was under /users/id/something is now right away under /users). The only downside of that last change is that pkg.go.dev is now failing for the fluent API surface as well. This is something can live with as we have a public docs platform that not only contains the snippets but also the documentation for the APIs.
The only trick left up our sleave would be to map repeating nodes of the fluent API surface instead of duplicating them, we're not yet committed to that change (this is a decision larger than just the Go client that'd impact the accuracy of our clients with regards to the REST API). We anticipate that last change could yield an additional 15% build time improvement.
I hope those additional details help people running into similar issues and the broader Go community to improve support for large packages in the future. Thanks everyone here and on the issues in our repos for the help getting to the bottom of this! ❤
Closing.


Restrict access to ConnectedAccount username

Resolves https://github.com/opencollective/opencollective-security/issues/34
This property is only leaking on V1 and it is currently being used to display GitHub and Twitter usernames.
I think this is a genuine application and I'm keeping it enabled for these services.

@Betree, perfect!


Check ETag on 200 response when checking if configuration setting has changed

Currently, if the provider makes a request to get configuration settings using the If-None-Match header, it considers any response with a status code of 200 to mean that the queried settings have changed in the App Configuration store. However, HTTP caching rules state that if a request gets 304 but the cache has a corresponding value, it will return a 200 status code instead. This means that we would be unnecessarily refreshing the configuration in that case, which could be prevented by always checking the ETag to see if anything has changed instead of only the status code.

It makes sense for sentinel-based key-values refresh as we cache etags for sentinels. Just curious what would be the case for page etags? I don't think we cache page etags for each page for each selector, that would be too much. Or we just skip the optimization in this case?

We don't cache the page etags at the moment, but in order to offer the functionality we want in #536 we would have to do so if someone were to call the RegisterAll API. If they don't call that API, I don't think the optimization is reasonable outside of sentinel refresh, like you said.

@amerjusupovic I have the PR out for the sentinel key part #607. My understanding is that the PR #574 will cover the rest of this issue, right?


Fixed Transparency in Shader

This is a one line fix for most transparency issues.
Most issues arise from wrong rendering order. If a semi transparent fragment is rendered before a fragment behind, the back fragment is not rendered at all because the depth buffer is already at a lower value. A proper fix for this is difficult.
However, in Minecraft most transparent pixels are completely transparent (alpha=0). If we just discard these fragments, the depth buffer isn't updates and fragments behind can still be rendered.
Obviously this does not fix stained glass and water that actually have half transparency.

Fantastic! I had no idea how to fix these issues so thanks!


Build typescript on commit

I'm trying to rebuild my typescript project on each commit, after prettifying the code with prettier:
"lint-staged": {
    "*.ts": [
      "prettier --parser typescript --write --no-semi",
      "tsc",
      "git add"
    ]
  },

Problem is that the tsc command here seems to fail to see my .tsconfig.json file, probably because the working directory of lint-staged is set to the directory of the file that is committed.
Is there a way to make this work? If I wanted to use something like tsc --rootDir ../.. to "fix" the working directory how would I know the level of depth to go up in the directory tree for the currently staged file?

Why would you want to use lint-staged for that? Just use husky pre-commit hook to run what ever command you need. It could be done using lint-staged && tsc-build-cmd. Note that tsc-build-cmd is not a valid command and needs to be substituted with the one which will build your project.

@sudo-suhas the reason would be that I only want to git add if compilation succeeded. tsc has many compilation checks and if it fails I wouldn't want it to git add. Also, I wouldn't want to compile before my linters have run.

Use the pre commit hook as I mentioned above. That will do what you need.

@sudo-suhas it would run git add even if compilation fails; no?

git add doesn't make any difference. You ran it before runninglint-staged anyway so effectively the files which were staged stay the same. What happens is that your pre-commit hook errors out during compilation and no commit is created. After that, it is upto you to modify required files, stage and commit them.

anyway to typecheck on lint-staged?

@sibelius I don't think TS supports that yet. Here is an example of how to do the check https://github.com/kubeapps/kubeapps/pull/700/files but it's not on staged files.

You can run tsc passing your tsconfig.json following these steps:

Install eslint-plugin-tsc
Do not add eslint-plugin-tsc to your eslint config file but instead pass the plugin to eslint in the lint-staged command as follows

{
  "*.ts": [
    "eslint --fix --plugin tsc --rule 'tsc/config: [2, {configFile: "./tsconfig.json"}]'",
    "git add"
  ]
}

If you are using husky, then you can do this:
// package.json
  "husky": {
    "hooks": {
      "pre-commit": "tsc --noEmit && lint-staged"
    }
  }

But it will check all .ts files of your project according to tsconfig.json instead of those staged files. May it help!

@maoxiaoke tsc --noEmit won't do anything if you don't specify a file or the project setup file. Isn't it? When I try your solution, tsc does nothing.

@khose Do you have typescript as a peer dependency and a tsconfig.js file in the project root?
In your package.json.
...
"devDependencies": {
    "typescript": "^3.6.4"
}
...

In your tsconfig.json, you may specify which files you want to compile.
{
...
  "include": [
    "src/**/*.ts",
    "src/**/*.tsx"
  ],
  "exclude": [
    "node_modules",
    "config"
  ]
}

Hum, I don't have tsconfig.js in the root folder. The rest seems to be in place. Let me check and come back to you. Thanks @maoxiaoke !

hi, I know this is an already closed issue, but I still ran into it. I was able to fix it though!
I think the issue has nothing to do with tsconfig or the working directory. The issue is that lint-staged  is appending the names of the changed files to the command. So if you're telling it to run tsc, it's actually running tsc changedfile1.ts changedfile2.ts. That's why it's ignoring your tsconfig, because passing extra files to it explicitly overrides that.
I fixed this issue with the following config:
  "lint-staged": {
     "*.ts": [
       "prettier --parser typescript --write --no-semi",
-      "tsc",
+      "bash -c tsc",
       "git add"
     ]
   },

bash doesn't automatically pass its args down to child commands -- bash -c tsc effectively runs tsc but ignores all args.

@szhu you could try using a js function config, so that you can skip passing the arguments to tsc.
https://github.com/okonet/lint-staged/blob/master/README.md#example-run-tsc-on-changes-to-typescript-files-but-do-not-pass-any-filename-arguments

Oh wow didn't see that, thanks!

Np, you’ll of course need to pass the first argument (array of filenames) to the other commands! You can see that in the other examples.

Anyone have a solution for running tsc type checking only on staged files and not on entire project? I looked through the thread but don't see any solution for this case.
Thanks!

Anyone have a solution for running tsc type checking only on staged files and not on entire project

That's not possible since TS needs to build the whole project in order to do type checking. This is the limitation of TypeScript. You should not probably do this in the pre-commit hook.

@uriklar you can run tsc as an eslint plugin (run one tool instead of many), using the mechanism I described here

Anyone have a solution for running tsc type checking only on staged files and not on entire project

That's not possible since TS needs to build the whole project in order to do type checking. This is the limitation of TypeScript. You should not probably do this in the pre-commit hook.

Wouldn't it be possible to have lint-staged call a function the user will provide (tsc in this case) during/after the Running tasks... section? With this we can make sure tsc only runs on the staged changes.

would it be posible to run a lint-staged cmd on pre-commit, like prettier but then do a type check before pushing. In my case I don't care about type checking before committing. Sometimes you can do WIP commits and you don't need to to run tsc there, but I do want to run it before pushing it to the repo.
I know there is a pre-push hook in husky but how can you run different lint-staged commands?

This might be useful, I have not tried it though https://github.com/gustavopch/tsc-files

For the most part, it just forwards all arguments to tsc with one exception: the specified files will not be forwarded — instead, they will be put at the files property of a temporary config that will be generated next to your original tsconfig.json. Other than that, just read tsc --help.


Aggregate failing health check reports

How to categorize this issue?

/area quality
/kind enhancement
/priority 3
What would you like to be added:
I would like to propose aggregated health check reports.
Gardener has the following health checks that contribute to the Readiness conditions in the Status of a Shoot cluster.

Health checks executed by the Gardenlet

e.g, worker pool has enough nodes registered, kube apiserver has enough replicas,

Health check reports by Extensions on Extension resources (ControlPlane, Worker, ...).

Problem: Health check reports from the Extensions are dropped as soon as there is also a failing health check executed by the Gardenlet care controller. I would expect an aggregated result over all errors.
Example:
ControlPlane CRD in Seed reports multiple failing health checks:
1) deployment “cloud-controller-manager” in namespace “shoot--d060239--garden”
        is unhealthy: Deployment does not have minimum availability (MinimumReplicasUnavailable).
        2) deployment “csi-snapshot-controller” in namespace “shoot--d060239--garden”
        is unhealthy: Deployment does not have minimum availability (MinimumReplicasUnavailable).

However, the Shoot reports for the ControlPlaneHealthy condition type:
{
    “lastTransitionTime”: “2021-04-20T07:58:58Z”,
    “lastUpdateTime”: “2021-04-20T08:20:05Z”,
    “message”: “stateful set "prometheus" is unhealthy: not enough ready replicas (0/1).“,
    “reason”: “HealthCheckUnsuccessful”,
    “status”: “False”,
    “type”: “ControlPlaneHealthy”
  },

Why is this needed:

To deliver a complete overview of the health of the Cluster.
Easier operations in case of problems with the cluster (complete overview of problems).

Hm, it was rather a conscious decision to exit early when the first check fails (instead of always checking everything), mainly to not pollute the shoot status/resource in general.

Hm, it was rather a conscious decision to exit early when the first check fails (instead of always checking everything), mainly to not pollute the shoot status/resource in general.

Yes, I would like to challenge the status quo due the reasons mentioned above.
I think that gives an incomplete overview of the health of the status.

Do you have an idea how to overcome the reasons that led to the "status quo", or, alternatively, an argument why they do no longer apply?

an argument why they do no longer apply?

They still apply, though I do not think the right thing to do is just dropping valid health check reports and therefore hiding problems.

Do you have an idea how to overcome the reasons that led to the "status quo"

First of all, I do not think that failing health checks are polluting the Shoot, but rather necessary information.
But what could be done is externalizing the aggregated health check reports into a dedicated resource.
The Shoot would still have a high level health check condition that is basically a condensed version of the aggregated report.

While I do kind of understand @danielfoehrKn's motivation, I don't think, this is the way to go.
I do understand, that often times shoot conditions are showing errors (e.g. "grafana unhealthy" or "kcm unhealthy") that are actually not the "root cause" (e.g. actually "prometheus" or "etcd/k-api" are the problematic components) and thus the health message might be misleading.
Though, I would argue that putting in every single failed check into the health message is not actually helping in figuring out the "root cause" of an issue or what to do as an operator. It might be even more confusing and will mainly pollute the shoot resource again.
If we want to improve the situation and help operators, we should rather think about how to "prioritize" health check failures via certain heuristics. However, this will not be "correct" every time and might still point to other problem than the "root cause".
So I don't know, if this approach would be worth the effort.

Though, I would argue that putting in every single failed check into the health message is not actually helping in figuring out the "root cause" of an issue or what to do as an operator. It might be even more confusing and will mainly pollute the shoot resource again.

I would argue it is more confusing to just arbitrarily drop health check reports from the Seed.

If we want to improve the situation and help operators, we should rather think about how to "prioritize" health check failures via certain heuristics. However, this will not be "correct" every time and might still point to other problem than the "root cause".

I agree,  that it is hard to prioritize health check failures.
However, we already do that implicitly today. We always prioritize health check messages coming directly from the Gardenlet over aggregated reports from Extensions.

It might be even more confusing and will mainly pollute the shoot resource again.

It seems to me that both @rfranzke  and @timebertt  are rightfully concerned about overloading / "polluting" the Shoot status.
This seems to be the main reason why aggregating health check reports is rejected.
I think this argument misses the point.
Why: This issue does not say "put all health check messages into the Shoot status". While this would be a possible implementation to overcome the problems described above, it certainly is not the only one.
I think we should first talk about the actual problem and then only as a next step talk about a solution that does not "pollute" the Shoot status. Otherwise, the problem is dismissed because of a possible implementation (?).
To make it more clear what I meant with that:
Current approach: Drop health check reports from the Extensions as soon as there is a failing health check for the same category (e.g ControlPlaneHealthy) executed by the Gardenlet.
Reason for current approach

not overload the Shoot's Status

Advantage of current approach

less network traffic to the Gardener API server

Disadvantage of current approach / Problem

Arbitrarily prioritize Gardenlet health check messages over aggregated health checks from Extensions, thus hiding reports from extensions. This leads to an incomplete overview / wrong impression of "what is wrong in the cluster".
Dashboard cannot present an accurate and nicely presented overview of what's wrong with the cluster. I would argue this also confuses Shoot Owners (the dashboard is used not only by operators!).

Possible solutions

Do not do anything. Accept and document clearly e.g. here.
Properly prioritize health check reports and only show the "root cause" -> hard to do according to @timebertt
Put all health check reports into the Shoot Status -> will "overload" the Shoot
Create a resource for each namespace (similar to ShootExtensionStatus) that collects and categorizes (with strong types)  failing health check reports e.g ShootHealth. An aggregated report stemming from this information is then put into the Shoot status.
"Three failing health checks concerning the Shoot"s control plane. There are problems with the VPN connection, area2 from health check, area3 from health check."
The details can then be read by consumers (e.g operator, dashboard) from the ShootHealth resource.

Steps

Do the advantages of the current approach outweigh the disadvantages? If yes -> leave it like it is.
No: come up with a solution.  Ideally even overcomes the reason for the current approach.

In any case, I think it is good that we talk about it here again.

At this point, personally, I feel that the proposed complexity (new API/resource -> more distribution of relevant information for users, new controller -> more code, one more resource per shoot -> increased etcd data volume, ...) might not be worth the benefits, at least at this time.
In my experience, it never was an issue that I didn't have a complete overview of all the many components of the shoot. If there was at least one problem and I needed to look into a cluster, then I was already getting the status/complete view. Do you maybe have an example for a problem or situation that would have improved your life when we would have had implemented what you propose?
Still, I'm open to discuss and dive into the details if more users are thinking that we should get active here. Let's collect some feedback/opinions. :)

For me, the effect is that I do not look at the HealthCheck messages but rather directly check the ExtensionResources. So as an operator, the HealthCheck have only limited value to me.
For experienced operators that also know about the implementation details of the health checks, this might not be an issue - but I doubt the same holds true for other groups.

Given that there is no consensus and this activity is open since a long time without much activity, shall we close it for now? Or is this still relevant/important enough to follow-up?

I don't see enough priority/urgency to work on this right now. However, I think we will definitely revisit the topic of improving the operator's view on landscape issues.
I would vote for closing the issue for now, as we will anyways have to start brainstorming again, when it becomes more relevant.

Sounds reasonable, thanks for a second opinion!
/close


Make the object dependency optional

Coverage remained the same at 75.882% when pulling 8f66358d9dce734b7949a03c9c81f1b7bcb11204 on koute:master into ca23d988c121ac4fad047085223268e98726aa2d on gimli-rs:master.


Hyprland crashes when opening various games

Already reported ? *

[X] I have searched the existing open and closed issues.

Regression?
No
System Info and Version
 System/Version info
Hyprland 0.44.0 built from branch main at commit 40081cb330fa838ad9c0a7b87c20b2300ea7fb38  (renderer: improve api around new framebuffer changes).
Date: Sat Nov 2 10:26:45 2024
Tag: v0.44.0-104-g40081cb3, commits: 5403
built against aquamarine 0.4.3

flags set:
debug

System Information:
System name: Linux
Node name: akatsukiarch
Release: 6.11.5-arch1-1
Version: #1 SMP PREEMPT_DYNAMIC Tue, 22 Oct 2024 18:31:38 +0000

GPU information:
03:00.0 VGA compatible controller [0300]: Advanced Micro Devices, Inc. [AMD/ATI] Navi 31 [Radeon RX 7900 XT/7900 XTX/7900 GRE/7900M] [1002:744c] (rev c8) (prog-if 00 [VGA controller])

os-release: NAME="Arch Linux"
PRETTY_NAME="Arch Linux"
ID=arch
BUILD_ID=rolling
ANSI_COLOR="38;2;23;147;209"
HOME_URL="https://archlinux.org/"
DOCUMENTATION_URL="https://wiki.archlinux.org/"
SUPPORT_URL="https://bbs.archlinux.org/"
BUG_REPORT_URL="https://gitlab.archlinux.org/groups/archlinux/-/issues"
PRIVACY_POLICY_URL="https://terms.archlinux.org/docs/privacy-policy/"
LOGO=archlinux-logo

plugins:

======Config-Start======

Config File: /home/akatsuki/.config/hypr/hyprland.conf: Read Succeeded

#      ░▒▒▒░░░░░▓▓          ___________
#    ░░▒▒▒░░░░░▓▓        //___________/
#   ░░▒▒▒░░░░░▓▓     _   _ _    _ _____
#   ░░▒▒░░░░░▓▓▓▓▓▓ | | | | |  | |  __/
#    ░▒▒░░░░▓▓   ▓▓ | |_| | |_/ /| |___
#     ░▒▒░░▓▓   ▓▓   \__  |____/ |____/
#       ░▒▓▓   ▓▓  //____/

$scrPath = $HOME/.local/share/bin # set scripts path

# █▀▄▀█ █▀█ █▄░█ █ ▀█▀ █▀█ █▀█
# █░▀░█ █▄█ █░▀█ █ ░█░ █▄█ █▀▄

# See https://wiki.hyprland.org/Configuring/Monitors/

monitor = ,preferred,auto,auto

# █░░ ▄▀█ █░█ █▄░█ █▀▀ █░█
# █▄▄ █▀█ █▄█ █░▀█ █▄▄ █▀█

# See https://wiki.hyprland.org/Configuring/Keywords/

exec-once = $scrPath/resetxdgportal.sh # reset XDPH for screenshare
exec-once = dbus-update-activation-environment --systemd WAYLAND_DISPLAY XDG_CURRENT_DESKTOP # for XDPH
exec-once = dbus-update-activation-environment --systemd --all # for XDPH
exec-once = systemctl --user import-environment WAYLAND_DISPLAY XDG_CURRENT_DESKTOP # for XDPH
exec-once = $scrPath/polkitkdeauth.sh # authentication dialogue for GUI apps
exec-once = waybar # launch the system bar
exec-once = blueman-applet # systray app for Bluetooth
exec-once = udiskie --no-automount --smart-tray # front-end that allows to manage removable media
exec-once = nm-applet --indicator # systray app for Network/Wifi
exec-once = dunst # start notification demon
exec-once = wl-paste --type text --watch cliphist store # clipboard store text data
exec-once = wl-paste --type image --watch cliphist store # clipboard store image data
exec-once = $scrPath/swwwallpaper.sh # start wallpaper daemon
exec-once = $scrPath/batterynotify.sh # battery notification
exec-once = hypridle
exec-once = fcitx5

# █▀▀ █▄░█ █░█
# ██▄ █░▀█ ▀▄▀

# See https://wiki.hyprland.org/Configuring/Environment-variables/

env = PATH,$PATH:$scrPath
env = XDG_CURRENT_DESKTOP,Hyprland
env = XDG_SESSION_TYPE,wayland
env = XDG_SESSION_DESKTOP,Hyprland
env = QT_QPA_PLATFORM,wayland;xcb
env = QT_QPA_PLATFORMTHEME,qt6ct
env = QT_WAYLAND_DISABLE_WINDOWDECORATION,1
env = QT_AUTO_SCREEN_SCALE_FACTOR,1
env = MOZ_ENABLE_WAYLAND,1
env = GDK_SCALE,1
env = XCURSOR_THEME,'Bibata-Modern-Ice'

# █ █▄░█ █▀█ █░█ ▀█▀
# █ █░▀█ █▀▀ █▄█ ░█░

# See https://wiki.hyprland.org/Configuring/Variables/

input {
    kb_layout = us, jp
    follow_mouse = 1

    touchpad {
        natural_scroll = no
    }

    sensitivity = 0
    force_no_accel = 1
}

# See https://wiki.hyprland.org/Configuring/Keywords/#executing

device {
    name = epic mouse V1
    sensitivity = -0.5
}

# See https://wiki.hyprland.org/Configuring/Variables/

gestures {
    workspace_swipe = true
    workspace_swipe_fingers = 3
}

# █░░ ▄▀█ █▄█ █▀█ █░█ ▀█▀ █▀
# █▄▄ █▀█ ░█░ █▄█ █▄█ ░█░ ▄█

# See https://wiki.hyprland.org/Configuring/Dwindle-Layout/

dwindle {
    pseudotile = yes
    preserve_split = yes
    smart_split = yes
}

# See https://wiki.hyprland.org/Configuring/Master-Layout/

# █▀▄▀█ █ █▀ █▀▀
# █░▀░█ █ ▄█ █▄▄

# See https://wiki.hyprland.org/Configuring/Variables/

misc {
    vrr = 0
    disable_hyprland_logo = true
    disable_splash_rendering = true
    force_default_wallpaper = 0
}

xwayland {
    force_zero_scaling = true
}

# █▀ █▀█ █░█ █▀█ █▀▀ █▀▀
# ▄█ █▄█ █▄█ █▀▄ █▄▄ ██▄

source = ~/.config/hypr/animations.conf
source = ~/.config/hypr/keybindings.conf
source = ~/.config/hypr/windowrules.conf
source = ~/.config/hypr/themes/common.conf # shared theme settings
source = ~/.config/hypr/themes/theme.conf # theme specific settings
source = ~/.config/hypr/themes/colors.conf # wallbash color override
source = ~/.config/hypr/monitors.conf # initially empty, to be configured by user and remains static
source = ~/.config/hypr/userprefs.conf # initially empty, to be configured by user and remains static

# Note: as userprefs.conf is sourced at the end, settings configured in this file will override the defaults

Config File: /home/akatsuki/.config/hypr/animations.conf: Read Succeeded

# ▄▀█ █▄░█ █ █▀▄▀█ ▄▀█ ▀█▀ █ █▀█ █▄░█
# █▀█ █░▀█ █ █░▀░█ █▀█ ░█░ █ █▄█ █░▀█

# See https://wiki.hyprland.org/Configuring/Animations/

animations {
    enabled = yes
    bezier = wind, 0.05, 0.9, 0.1, 1.05
    bezier = winIn, 0.1, 1.1, 0.1, 1.1
    bezier = winOut, 0.3, -0.3, 0, 1
    bezier = liner, 1, 1, 1, 1
    animation = windows, 1, 6, wind, slide
    animation = windowsIn, 1, 6, winIn, slide
    animation = windowsOut, 1, 5, winOut, slide
    animation = windowsMove, 1, 5, wind, slide
    animation = border, 1, 1, liner
    animation = borderangle, 1, 30, liner, loop
    animation = fade, 1, 10, default
    animation = workspaces, 1, 5, wind
}

Config File: /home/akatsuki/.config/hypr/keybindings.conf: Read Succeeded

# █▄▀ █▀▀ █▄█ █▄▄ █ █▄░█ █▀▄ █ █▄░█ █▀▀ █▀
# █░█ ██▄ ░█░ █▄█ █ █░▀█ █▄▀ █ █░▀█ █▄█ ▄█

# See https://wiki.hyprland.org/Configuring/Keywords/
#  &  https://wiki.hyprland.org/Configuring/Binds/

# Main modifier
$mainMod = Super # super / meta / windows key

# Assign apps
$term = kitty
$editor = code
$file = dolphin
$browser = firefox
$discord = vesktop

# Window/Session actions
bind = $mainMod, Q, exec, $scrPath/dontkillsteam.sh # close focused window
bind = Alt, F4, exec, $scrPath/dontkillsteam.sh # close focused window
bind = $mainMod, Delete, exit, # kill hyprland session
bind = $mainMod, W, togglefloating, # toggle the window between focus and float
bind = $mainMod, G, togglegroup, # toggle the window between focus and group
bind = Alt, Return, fullscreen, # toggle the window between focus and fullscreen
bind = $mainMod, L, exec, hyprlock # launch lock screen
bind = $mainMod+Shift, F, exec, $scrPath/windowpin.sh # toggle pin on focused window
bind = $mainMod, Backspace, exec, $scrPath/logoutlaunch.sh # launch logout menu
bind = Ctrl+Alt, W, exec, killall waybar || waybar # toggle waybar

# Application shortcuts
bind = $mainMod, T, exec, $term # launch terminal emulator
bind = $mainMod, E, exec, $file # launch file manager
bind = $mainMod, C, exec, $editor # launch text editor
bind = $mainMod, F, exec, $browser # launch web browser
bind = $mainMod, D, exec, $discord # launch discord
bind = Ctrl+Shift, Escape, exec, [centre;size 800 500;float] $scrPath/sysmonlaunch.sh # launch system monitor (htop/btop or fallback to top)

# Rofi menus
bind = $mainMod, A, exec, pkill -x rofi || $scrPath/rofilaunch.sh d # launch application launcher
bind = $mainMod, Tab, exec, pkill -x rofi || $scrPath/rofilaunch.sh w # launch window switcher
bind = $mainMod+Shift, E, exec, pkill -x rofi || $scrPath/rofilaunch.sh f # launch file explorer

# Audio control
bindl  = , XF86AudioMute, exec, $scrPath/volumecontrol.sh -o m # toggle audio mute
bindl  = , XF86AudioMicMute, exec, $scrPath/volumecontrol.sh -i m # toggle microphone mute
bindel = , XF86AudioLowerVolume, exec, $scrPath/volumecontrol.sh -o d # decrease volume
bindel = , XF86AudioRaiseVolume, exec, $scrPath/volumecontrol.sh -o i # increase volume

# Media control
bindl  = , XF86AudioPlay, exec, playerctl play-pause # toggle between media play and pause
bindl  = , XF86AudioPause, exec, playerctl play-pause # toggle between media play and pause
bindl  = , XF86AudioNext, exec, playerctl next # media next
bindl  = , XF86AudioPrev, exec, playerctl previous # media previous

# Brightness control
bindel = , XF86MonBrightnessUp, exec, $scrPath/brightnesscontrol.sh i # increase brightness
bindel = , XF86MonBrightnessDown, exec, $scrPath/brightnesscontrol.sh d # decrease brightness

# Screenshot/Screencapture
bind = $mainMod, P, exec, $scrPath/screenshot.sh s # partial screenshot capture
bind = $mainMod+Ctrl, P, exec, $scrPath/screenshot.sh sf # partial screenshot capture (frozen screen)
bind = $mainMod+Alt, P, exec, $scrPath/screenshot.sh m # monitor screenshot capture
bind = , Print, exec, $scrPath/screenshot.sh p # all monitors screenshot capture

# Custom scripts
bind = $mainMod+Alt, Right, exec, $scrPath/swwwallpaper.sh -n # next wallpaper
bind = $mainMod+Alt, Left, exec, $scrPath/swwwallpaper.sh -p # previous wallpaper
bind = $mainMod+Alt, Up, exec, $scrPath/wbarconfgen.sh n # next waybar mode
bind = $mainMod+Alt, Down, exec, $scrPath/wbarconfgen.sh p # previous waybar mode
bind = $mainMod+Shift, R, exec, pkill -x rofi || $scrPath/wallbashtoggle.sh -m # launch wallbash mode select menu
bind = $mainMod+Shift, T, exec, pkill -x rofi || $scrPath/themeselect.sh # launch theme select menu
bind = $mainMod+Shift, A, exec, pkill -x rofi || $scrPath/rofiselect.sh # launch select menu
bind = $mainMod+Shift, W, exec, pkill -x rofi || $scrPath/swwwallselect.sh # launch wallpaper select menu
bind = $mainMod, V, exec, pkill -x rofi || $scrPath/cliphist.sh c # launch clipboard
bind = $mainMod, K, exec, $scrPath/keyboardswitch.sh # switch keyboard layout

# Move/Change window focus
bind = $mainMod, Left, movefocus, l
bind = $mainMod, Right, movefocus, r
bind = $mainMod, Up, movefocus, u
bind = $mainMod, Down, movefocus, d
bind = Alt, Tab, movefocus, d

# Switch workspaces
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10

# Switch workspaces to a relative workspace
bind = $mainMod+Ctrl, Right, workspace, r+1
bind = $mainMod+Ctrl, Left, workspace, r-1

# Move to the first empty workspace
bind = $mainMod+Ctrl, Down, workspace, empty

# Resize windows
binde = $mainMod+Shift, Right, resizeactive, 30 0
binde = $mainMod+Shift, Left, resizeactive, -30 0
binde = $mainMod+Shift, Up, resizeactive, 0 -30
binde = $mainMod+Shift, Down, resizeactive, 0 30

# Move focused window to a workspace
bind = $mainMod+Shift, 1, movetoworkspace, 1
bind = $mainMod+Shift, 2, movetoworkspace, 2
bind = $mainMod+Shift, 3, movetoworkspace, 3
bind = $mainMod+Shift, 4, movetoworkspace, 4
bind = $mainMod+Shift, 5, movetoworkspace, 5
bind = $mainMod+Shift, 6, movetoworkspace, 6
bind = $mainMod+Shift, 7, movetoworkspace, 7
bind = $mainMod+Shift, 8, movetoworkspace, 8
bind = $mainMod+Shift, 9, movetoworkspace, 9
bind = $mainMod+Shift, 0, movetoworkspace, 10

# Move focused window to a relative workspace
bind = $mainMod+Ctrl+Alt, Right, movetoworkspace, r+1
bind = $mainMod+Ctrl+Alt, Left, movetoworkspace, r-1

# Move focused window around the current workspace
bind = $mainMod+Shift+Ctrl, Left, movewindow, l
bind = $mainMod+Shift+Ctrl, Right, movewindow, r
bind = $mainMod+Shift+Ctrl, Up, movewindow, u
bind = $mainMod+Shift+Ctrl, Down, movewindow, d

# Scroll through existing workspaces
bind = $mainMod, mouse_down, workspace, e+1
bind = $mainMod, mouse_up, workspace, e-1

# Move/Resize focused window
bindm = $mainMod, mouse:272, movewindow
bindm = $mainMod, mouse:273, resizewindow
bindm = $mainMod, Z, movewindow
bindm = $mainMod, X, resizewindow

# Move/Switch to special workspace (scratchpad)
bind = $mainMod+Alt, S, movetoworkspacesilent, special
bind = $mainMod, S, togglespecialworkspace,

# Toggle focused window split
bind = $mainMod, J, togglesplit

# Move focused window to a workspace silently
bind = $mainMod+Alt, 1, movetoworkspacesilent, 1
bind = $mainMod+Alt, 2, movetoworkspacesilent, 2
bind = $mainMod+Alt, 3, movetoworkspacesilent, 3
bind = $mainMod+Alt, 4, movetoworkspacesilent, 4
bind = $mainMod+Alt, 5, movetoworkspacesilent, 5
bind = $mainMod+Alt, 6, movetoworkspacesilent, 6
bind = $mainMod+Alt, 7, movetoworkspacesilent, 7
bind = $mainMod+Alt, 8, movetoworkspacesilent, 8
bind = $mainMod+Alt, 9, movetoworkspacesilent, 9
bind = $mainMod+Alt, 0, movetoworkspacesilent, 10

# Bind and submap for gamemode
bind = $mainMod+Alt, G, exec, $scrPath/gamemode.sh # toggle hypr effects for gamemode
bind = $mainMod+Alt, G, submap, gamemode # opens the gamemode submap (disable bindings)
submap = gamemode # start of the gamemode submap
bind = $mainMod, 1, workspace, 1
bind = $mainMod, 2, workspace, 2
bind = $mainMod, 3, workspace, 3
bind = $mainMod, 4, workspace, 4
bind = $mainMod, 5, workspace, 5
bind = $mainMod, 6, workspace, 6
bind = $mainMod, 7, workspace, 7
bind = $mainMod, 8, workspace, 8
bind = $mainMod, 9, workspace, 9
bind = $mainMod, 0, workspace, 10
bind = Alt, Return, fullscreen, # toggle the window between focus and fullscreen
bind = $mainMod+Alt, G, exec, $scrPath/gamemode.sh # toggle hypr effects
bind = $mainMod+Alt, G, submap, reset #closes the gamemode submap
submap = reset # end of gamemode submap

Config File: /home/akatsuki/.config/hypr/windowrules.conf: Read Succeeded

# █░█░█ █ █▄░█ █▀▄ █▀█ █░█░█   █▀█ █░█ █░░ █▀▀ █▀
# ▀▄▀▄▀ █ █░▀█ █▄▀ █▄█ ▀▄▀▄▀   █▀▄ █▄█ █▄▄ ██▄ ▄█

# See https://wiki.hyprland.org/Configuring/Window-Rules/

windowrulev2 = opacity 0.90 0.90,class:^(firefox)$
windowrulev2 = opacity 0.90 0.90,class:^(Brave-browser)$
windowrulev2 = opacity 0.80 0.80,class:^(code-oss)$
windowrulev2 = opacity 0.80 0.80,class:^(Code)$
windowrulev2 = opacity 0.80 0.80,class:^(code-url-handler)$
windowrulev2 = opacity 0.80 0.80,class:^(code-insiders-url-handler)$
windowrulev2 = opacity 0.80 0.80,class:^(kitty)$
windowrulev2 = opacity 0.80 0.80,class:^(org.kde.dolphin)$
windowrulev2 = opacity 0.80 0.80,class:^(nemo)$
windowrulev2 = opacity 0.80 0.80,class:^(org.kde.ark)$
windowrulev2 = opacity 0.80 0.80,class:^(nwg-look)$
windowrulev2 = opacity 0.80 0.80,class:^(qt5ct)$
windowrulev2 = opacity 0.80 0.80,class:^(qt6ct)$
windowrulev2 = opacity 0.80 0.80,class:^(kvantummanager)$
windowrulev2 = opacity 0.80 0.70,class:^(org.pulseaudio.pavucontrol)$
windowrulev2 = opacity 0.80 0.70,class:^(blueman-manager)$
windowrulev2 = opacity 0.80 0.70,class:^(nm-applet)$
windowrulev2 = opacity 0.80 0.70,class:^(nm-connection-editor)$
windowrulev2 = opacity 0.80 0.70,class:^(org.kde.polkit-kde-authentication-agent-1)$
windowrulev2 = opacity 0.80 0.70,class:^(polkit-gnome-authentication-agent-1)$
windowrulev2 = opacity 0.80 0.70,class:^(org.freedesktop.impl.portal.desktop.gtk)$
windowrulev2 = opacity 0.80 0.70,class:^(org.freedesktop.impl.portal.desktop.hyprland)$
windowrulev2 = opacity 0.70 0.70,class:^([Ss]team)$
windowrulev2 = opacity 0.70 0.70,class:^(steamwebhelper)$
windowrulev2 = opacity 0.70 0.70,class:^(Spotify)$
windowrulev2 = opacity 0.70 0.70,initialTitle:^(Spotify Free)$
windowrulev2 = opacity 0.80 0.70,class:^(ario)$

windowrulev2 = opacity 0.90 0.90,class:^(com.github.rafostar.Clapper)$ # Clapper-Gtk
windowrulev2 = opacity 0.80 0.80,class:^(com.github.tchx84.Flatseal)$ # Flatseal-Gtk
windowrulev2 = opacity 0.80 0.80,class:^(hu.kramo.Cartridges)$ # Cartridges-Gtk
windowrulev2 = opacity 0.80 0.80,class:^(com.obsproject.Studio)$ # Obs-Qt
windowrulev2 = opacity 0.80 0.80,class:^(gnome-boxes)$ # Boxes-Gtk
windowrulev2 = opacity 0.80 0.80,class:^(discord)$ # Discord-Electron
windowrulev2 = opacity 0.80 0.80,class:^(vesktop)$ # Vesktop-Electron
windowrulev2 = opacity 0.80 0.80,class:^(WebCord)$ # WebCord-Electron
windowrulev2 = opacity 0.80 0.80,class:^(ArmCord)$ # ArmCord-Electron
windowrulev2 = opacity 0.80 0.80,class:^(app.drey.Warp)$ # Warp-Gtk
windowrulev2 = opacity 0.80 0.80,class:^(net.davidotek.pupgui2)$ # ProtonUp-Qt
windowrulev2 = opacity 0.80 0.80,class:^(yad)$ # Protontricks-Gtk
windowrulev2 = opacity 0.80 0.80,class:^(Signal)$ # Signal-Gtk
windowrulev2 = opacity 0.80 0.80,class:^(io.github.alainm23.planify)$ # planify-Gtk
windowrulev2 = opacity 0.80 0.80,class:^(io.gitlab.theevilskeleton.Upscaler)$ # Upscaler-Gtk
windowrulev2 = opacity 0.80 0.80,class:^(com.github.unrud.VideoDownloader)$ # VideoDownloader-Gtk
windowrulev2 = opacity 0.80 0.80,class:^(io.gitlab.adhami3310.Impression)$ # Impression-Gtk
windowrulev2 = opacity 0.80 0.80,class:^(io.missioncenter.MissionCenter)$ # MissionCenter-Gtk
windowrulev2 = opacity 0.80 0.80,class:^(io.github.flattool.Warehouse)$ # Warehouse-Gtk

windowrulev2 = float,class:^(org.kde.dolphin)$,title:^(Progress Dialog — Dolphin)$
windowrulev2 = float,class:^(org.kde.dolphin)$,title:^(Copying — Dolphin)$
windowrulev2 = float,title:^(About Mozilla Firefox)$
windowrulev2 = float,class:^(firefox)$,title:^(Picture-in-Picture)$
windowrulev2 = float,class:^(firefox)$,title:^(Library)$
windowrulev2 = float,class:^(kitty)$,title:^(top)$
windowrulev2 = float,class:^(kitty)$,title:^(btop)$
windowrulev2 = float,class:^(kitty)$,title:^(htop)$
windowrulev2 = float,class:^(vlc)$
windowrulev2 = float,class:^(kvantummanager)$
windowrulev2 = float,class:^(qt5ct)$
windowrulev2 = float,class:^(qt6ct)$
windowrulev2 = float,class:^(nwg-look)$
windowrulev2 = float,class:^(org.kde.ark)$
windowrulev2 = float,class:^(org.pulseaudio.pavucontrol)$
windowrulev2 = float,class:^(blueman-manager)$
windowrulev2 = float,class:^(nm-applet)$
windowrulev2 = float,class:^(nm-connection-editor)$
windowrulev2 = float,class:^(org.kde.polkit-kde-authentication-agent-1)$
windowrulev2 = float,class:^(mpv)$

windowrulev2 = float,class:^(Signal)$ # Signal-Gtk
windowrulev2 = float,class:^(com.github.rafostar.Clapper)$ # Clapper-Gtk
windowrulev2 = float,class:^(app.drey.Warp)$ # Warp-Gtk
windowrulev2 = float,class:^(net.davidotek.pupgui2)$ # ProtonUp-Qt
windowrulev2 = float,class:^(yad)$ # Protontricks-Gtk
windowrulev2 = float,class:^(eog)$ # Imageviewer-Gtk
windowrulev2 = float,class:^(io.github.alainm23.planify)$ # planify-Gtk
windowrulev2 = float,class:^(io.gitlab.theevilskeleton.Upscaler)$ # Upscaler-Gtk
windowrulev2 = float,class:^(com.github.unrud.VideoDownloader)$ # VideoDownloader-Gkk
windowrulev2 = float,class:^(io.gitlab.adhami3310.Impression)$ # Impression-Gtk
windowrulev2 = float,class:^(io.missioncenter.MissionCenter)$ # MissionCenter-Gtk

windowrulev2 = opacity 0.0 override,class:^(xwaylandvideobridge)$
windowrulev2 = noanim,class:^(xwaylandvideobridge)$
windowrulev2 = noinitialfocus,class:^(xwaylandvideobridge)$
windowrulev2 = maxsize 1 1,class:^(xwaylandvideobridge)$
windowrulev2 = noblur,class:^(xwaylandvideobridge)$

# █░░ ▄▀█ █▄█ █▀▀ █▀█   █▀█ █░█ █░░ █▀▀ █▀
# █▄▄ █▀█ ░█░ ██▄ █▀▄   █▀▄ █▄█ █▄▄ ██▄ ▄█

layerrule = blur,rofi
layerrule = ignorezero,rofi
layerrule = blur,notifications
layerrule = ignorezero,notifications
layerrule = blur,swaync-notification-window
layerrule = ignorezero,swaync-notification-window
layerrule = blur,swaync-control-center
layerrule = ignorezero,swaync-control-center
layerrule = blur,logout_dialog

Config File: /home/akatsuki/.config/hypr/themes/common.conf: Read Succeeded

# █▀▀ █░█ █▀█ █▀ █▀█ █▀█
# █▄▄ █▄█ █▀▄ ▄█ █▄█ █▀▄

exec = hyprctl setcursor Bibata-Modern-Ice 20
exec = gsettings set org.gnome.desktop.interface cursor-theme 'Bibata-Modern-Ice'
exec = gsettings set org.gnome.desktop.interface cursor-size 20

# █▀▀ █▀█ █▄░█ ▀█▀
# █▀░ █▄█ █░▀█ ░█░

exec = gsettings set org.gnome.desktop.interface font-name 'Cantarell 10'
exec = gsettings set org.gnome.desktop.interface document-font-name 'Cantarell 10'
exec = gsettings set org.gnome.desktop.interface monospace-font-name 'CaskaydiaCove Nerd Font Mono 9'
exec = gsettings set org.gnome.desktop.interface font-antialiasing 'rgba'
exec = gsettings set org.gnome.desktop.interface font-hinting 'full'

# █▀ █▀█ █▀▀ █▀▀ █ ▄▀█ █░░
# ▄█ █▀▀ ██▄ █▄▄ █ █▀█ █▄▄

decoration {
    dim_special = 0.3
    blur {
        special = true
    }
}

Config File: /home/akatsuki/.config/hypr/themes/theme.conf: Read Succeeded
exec = gsettings set org.gnome.desktop.interface icon-theme 'Tela-circle-dracula'
exec = gsettings set org.gnome.desktop.interface gtk-theme 'Catppuccin-Mocha'
exec = gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'

general {
    gaps_in = 3
    gaps_out = 8
    border_size = 2
    col.active_border = rgba(ca9ee6ff) rgba(f2d5cfff) 45deg
    col.inactive_border = rgba(b4befecc) rgba(6c7086cc) 45deg
    layout = dwindle
    resize_on_border = true
}

group {
    col.border_active = rgba(ca9ee6ff) rgba(f2d5cfff) 45deg
    col.border_inactive = rgba(b4befecc) rgba(6c7086cc) 45deg
    col.border_locked_active = rgba(ca9ee6ff) rgba(f2d5cfff) 45deg
    col.border_locked_inactive = rgba(b4befecc) rgba(6c7086cc) 45deg
}

decoration {
    rounding = 10
    drop_shadow = false

    blur {
        enabled = yes
        size = 6
        passes = 3
        new_optimizations = on
        ignore_opacity = on
        xray = false
    }
}

layerrule = blur,waybar

Config File: /home/akatsuki/.config/hypr/themes/colors.conf: Read Succeeded
exec = gsettings set org.gnome.desktop.interface gtk-theme 'Wallbash-Gtk'
exec = gsettings set org.gnome.desktop.interface color-scheme 'prefer-dark'

general {
    col.active_border = rgba(404965ff) rgba(293352ff) 45deg
    col.inactive_border = rgba(181824ff) rgba(252437ff) 45deg
}

group {
    col.border_active = rgba(404965ff) rgba(293352ff) 45deg
    col.border_inactive = rgba(181824cc) rgba(252437cc) 45deg
    col.border_locked_active = rgba(FFFFFFff) rgba(FFFFFFff) 45deg
    col.border_locked_inactive = rgba(FFFFFFcc) rgba(FFFFFFcc) 45deg
}

Config File: /home/akatsuki/.config/hypr/monitors.conf: Read Succeeded

# █▀▄▀█ █▀█ █▄░█ █ ▀█▀ █▀█ █▀█ █▀
# █░▀░█ █▄█ █░▀█ █ ░█░ █▄█ █▀▄ ▄█

# Set your monitor configuration here
# See https://wiki.hyprland.org/Configuring/Monitors/
# For a sample file, please refer to https://github.com/prasanthrangan/hyprdots/blob/main/Configs/.config/hypr/monitors.t2

monitor=DP-4,3440x1440@165,0x0,1 # for games that are stretched and have no patches, 2560 (16:9) or 1920 (4:3)
monitor=DP-5,3440x1440@144,0x-1440,1,bitdepth,10

Config File: /home/akatsuki/.config/hypr/userprefs.conf: Read Succeeded

# █░█ █▀ █▀▀ █▀█   █▀█ █▀█ █▀▀ █▀▀ █▀
# █▄█ ▄█ ██▄ █▀▄   █▀▀ █▀▄ ██▄ █▀░ ▄█

# Set your personal hyprland configuration here
# For a sample file, please refer to https://github.com/prasanthrangan/hyprdots/blob/main/Configs/.config/hypr/userprefs.t2
env = QT_QPA_PLATFORM,wayland;xcb

workspace = name:1, monitor:DP-4

exec-once = eval 'ssh-agent'
======Config-End========

Description
Starting today, when I open various games via Steam, Hyprland crashes shortly after they open. Some examples include Granblue Fantasy Versus: Rising, Trails from Zero, Hades, Armored Core 6, and Elden Ring are just a few examples. I believe I've pinpointed that it is specifically a Hyprland issue because I have still been able to them on Plasma Wayland with no issues. Strangely, I tried reverting my system to the last time I could confirm that it worked properly, and yet still had the same issues.
As it could be relevant, my GPU is an RX 7900 XTX, which is the same card and issue as this post I found from a year ago: https://www.reddit.com/r/hyprland/comments/184ibug/hyprland_session_crashes_when_opening_some_steam/
Unfortunately, no solutions were present in the comments, and the OP said that it resolved itself without providing any extra information.
How to reproduce

Start Hyprland
Open a game via Steam (preferably one of the ones mentioned above, as they are the ones I've confirmed this issue with.)
Hyprland Crashes

Crash reports, logs, images, videos
Here are a few of the crash reports of such cases:
hyprlandCrashReport10222.txt
hyprlandCrashReport1038.txt
hyprlandCrashReport103.txt
hyprlandCrashReport26918.txt
hyprlandCrashReport31511.txt
I also attempted to get a log of a crash using the HYPRLAND_TRACE=1 AQ_TRACE=1 environment variables, but it doesn't seem like it logged much useful info:
hyprland.log

This also happens to me when opening steam on the latest git commit. If you're on the latest git, try switching to the last stable release for now.

@deviantsemicolon are you building steam from scratch? Am using steam from the multi-lib repo in arch linux am getting the same thing when I just try to open steam.

for me it's crashing if i'm setting the game to fullscreen
hyprlandCrashReport13966.txt
gdb.txt

@deviantsemicolon are you building steam from scratch? Am using steam from the multi-lib repo in arch linux am getting the same thing when I just try to open steam.

i can confirm it fixed now.

Like Sentakuhm said, the issue has been resolved for me as of commit cd0d049 today. I think the issues that Rileyhawk and Ciflire are separate things, so I'm marking as closed.


How to select the dropdown value from the native webview

Steps to reproduce

Actual results
Dear Team,
I am facing issues with selecting values from a dropdown list and tapping a checkbox in my test automation code.

For the dropdown list, I attempted to use the enterText method as an alternative. However, I am unable to simulate pressing the "ENTER" key after entering the desired value. As a result, the selection process is incomplete.
await $.native.enterText(Selector(text: 'Country'), text: 'Austria',keyboardBehavior: KeyboardBehavior.showAndDismiss);

Similarly, for the checkbox, I tried using the tap method, but it doesn't seem to work as expected. The checkbox remains unselected, and the test cannot proceed further.
await $.native.tap(Selector(text: 'I agree to the Terms and Conditions and have read the Privacy Policy'));

I would appreciate your assistance in resolving these issues. Please provide guidance or alternative solutions to handle dropdown selections and checkbox interactions in the testing framework.
Thank you for your help.
Logs

Logs
<!-- Replace this line with your logs. Do not remove the backticks! -->

Patrol version
patrol_cli v2.0.4
Patrol Doctor output
You're using Patrol CLI 2.0, which has breaking changes.
Read the migration guide at https://patrol.leancode.co/v2.
Disable this warning by setting the PATROL_MIGRATED environment variable.
Patrol CLI version: 2.0.4
Program adb found in C:\Users\achannav\scoop\shims\adb.exe
Env var $ANDROID_HOME set to C:\Users\achannav\AppData\Local\Android\sdk
Flutter Doctor output

Flutter Doctor output
<!-- Replace this line with your logs. Do not remove the backticks! -->

Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, 3.10.6, on Microsoft Windows [Version 10.0.19045.3208], locale en-US)
[√] Windows Version (Installed version of Windows is version 10 or higher)
[√] Android toolchain - develop for Android devices (Android SDK version 33.0.2)
[√] Chrome - develop for the web
[X] Visual Studio - develop for Windows
    X Visual Studio not installed; this is necessary for Windows development.
      Download at https://visualstudio.microsoft.com/downloads/.
      Please install the "Desktop development with C++" workload, including all of its default components
[√] Android Studio (version 2022.1)
[√] IntelliJ IDEA Community Edition (version 2021.3)
[√] VS Code (version 1.79.2)
[√] Connected device (4 available)
[√] Network resources

Hi @ashwinichannaveerappa, sorry for late response, I'll try to reproduce your issue and let you know if I found anything

Hi @jBorkowska no problem, thanks for the quick update.

Hi again, it looks like currently there is no way of tapping on this dropdown. We'll be trying to fix it and will let you know about any updates
Note to self: related to #992.

Thank you @jBorkowska , Is there any way to tap on check box? and swipe on the slider?

@jBorkowska Thank you for the quick reply.
yeah those are native elements. I will try with classname.

@ashwinichannaveerappa Also it may be necessary to provide appId of the app that you try to interact with. By default Patrol would try to interact with app you're testing, so it will try to find native elements in the Flutter app. In your case, you might need to provide appId of Safari (I'm not sure which app is it on the screenshot) in Selector constructor

@jBorkowska with the appId it worked, thanks a lot for the quick help.


[stable/fluentd-elasticsearch] DaemonSet ConfigMap Volume goes beyond 63 char limit

Is this a request for help?: Yes

Is this a BUG REPORT or FEATURE REQUEST? (choose one): Bug Report

Version of Helm and Kubernetes: Kubernetes v1.8.9, Helm v2.9.1
Which chart: stable/fluentd-elasticsearch
What happened: Attempting to helm install with a long release name produced an error:
message: 'Error: release test-0-1-5-pfsan-251-c48a86e-6-app failed: DaemonSet.apps "test-0-1-5-pfsan-251-c48a86e-6-app-fluentd-elasticsearch" is invalid: [spec.template.spec.volumes[3].name: Invalid value: "config-volume-test-0-1-5-pfsan-251-c48a86e-6-app-fluentd-elasticsearch": must be no more than 63 characters, spec.template.spec.containers[0].volumeMounts[3].name: Not found: "config-volume-test-0-1-5-pfsan-251-c48a86e-6-app-fluentd-elasticsearch"]

This is due to the configuration of the DaemonSet ConfigMap Volume name, where it appends "config-volume-" onto the "fluentd-elasticsearch.fullname" template value that gets truncated to 63 characters.
What you expected to happen: Should've successfully installed.
How to reproduce it (as minimally and precisely as possible): helm install with a release name longer than 63 characters to get the full truncated value for "fluentd-elasticsearch.fullname" template. Helm install should then fail where the DaemonSet ConfigMap Volume name is longer than 63 characters.

Not stale. PR awaiting approval.

Not stale. PR awaiting approval.

Closing, as problem of config volume name length was corrected as part of #8923.


problem doing make ccenv

(hyperbadger) amiller@winterfell:~/projects/fabric$ make unit-tests
cd unit-test && docker-compose down
WARNING: The TEST_PKGS variable is not set. Defaulting to a blank string.
WARNING: The JOB_TYPE variable is not set. Defaulting to a blank string.
Removing network unit-test_default
mkdir -p .build/image/buildenv/payload
cp .build/gotools.tar.bz2 .build/docker/gotools/bin/protoc-gen-go .build/image/buildenv/payload
cp: cannot stat '.build/docker/gotools/bin/protoc-gen-go': No such file or directory
Makefile:282: recipe for target '.build/image/buildenv/payload' failed
make: *** [.build/image/buildenv/payload] Error 1

This seems like it may be resolved here with the following but I didn't see this as part of the instructions
https://stackoverflow.com/questions/41040156/cp-cannot-stat-build-docker-gotools-bin-protoc-gen-go-no-such-file-or-direct

I also ran into this error:
./scripts/run-integration-tests.sh
Running integration tests...
Failed to compile integration:

can't load package: package github.com/stretchr/testify/assert: cannot find package "github.com/stretchr/testify/assert" in any of:
	/usr/lib/go-1.10/src/github.com/stretchr/testify/assert (from $GOROOT)
	/home/amiller/go/src/github.com/stretchr/testify/assert (from $GOPATH)
Failed to compile integration:

Seems to be addressed by another dependency:
https://stackoverflow.com/questions/42254513/golang-test-error-cannot-find-package-github-com-stretchr-testify-assert-in-a


Add the ability to lint javascript strings

This commit adds the ability to lint JS that doesn't necessarily exist in the file system. Here are a few use cases for such functionality

Linting code snippets in markdown files
Linting scripts generated via user input (like in a CMS such as Squarespace, for example)

Hey! I'm interested in using this gem to lint code snippets within markdown files. This PR adds the code necessary to do that, but I would love some feedback on the implementation!


Upload: --quiet option for hca upload file

and make default action to report progress.

Codecov Report

Merging #71 into spierson-list-area will decrease coverage by 0.1%.
The diff coverage is 75%.

@@                  Coverage Diff                   @@
##           spierson-list-area      #71      +/-   ##
======================================================
- Coverage               73.69%   73.58%   -0.11%
======================================================
  Files                      35       35
  Lines                    1129     1132       +3
======================================================
+ Hits                      832      833       +1
- Misses                    297      299       +2

Impacted Files
Coverage Δ

hca/upload/cli/upload_command.py
84.37% <75%> (-5.29%)
:arrow_down:

Continue to review full report at Codecov.

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


Manifestival can parse and load yamls with correct format, but unable to go through if there are files in bad format under the target directory

I was trying to manually set the env variable
I created my own 0.9.0.yaml, and created a configmap loading it by
kubectl create configmap game-config --from-file=/local_path.../knative.dev/serving-operator/files/knative-serving/0.9.0.yaml

Then, this is the operator deployment yaml I used:
apiVersion: apps/v1
kind: Deployment
metadata:
  name: knative-serving-operator
spec:
  replicas: 1
  selector:
    matchLabels:
      name: knative-serving-operator
  template:
    metadata:
      annotations:
        sidecar.istio.io/inject: "false"
      labels:
        name: knative-serving-operator
    spec:
      serviceAccountName: knative-serving-operator
      containers:
        - name: knative-serving-operator
          image: knative.dev/serving-operator/cmd/manager
          imagePullPolicy: IfNotPresent
          #command:
          #  - ["bin/sh", "-c", "ls /etc/kodata/knative-serving ; echo the path of KO_DATA_PATH: $(KO_DATA_PATH)"]
          env:
            - name: KO_DATA_PATH
              value: "/etc/kodata/"
            - name: POD_NAME
              valueFrom:
                fieldRef:
                  fieldPath: metadata.name
            - name: OPERATOR_NAME
              value: "knative-serving-operator"
            - name: SYSTEM_NAMESPACE
              valueFrom:
                fieldRef:
                  fieldPath: metadata.namespace
            - name: METRICS_DOMAIN
              value: knative.dev/serving-operator
          volumeMounts:
            - name: game-config-volume
              mountPath: /etc/kodata/knative-serving
      volumes:
        - name: game-config-volume
          configMap:
            name: game-config

I expected that operator pod will read the env variable KO_DATA_PATH, and load the manifest from the mounted path "/etc/kodata/knative-serving". And it is true that this is something we surely can do.
However, I came across the following log:
{"level":"info","ts":"2019-10-30T17:50:08.438Z","caller":"logging/config.go:103","msg":"Logging level set to info"}
{"level":"info","ts":"2019-10-30T17:50:08.438Z","caller":"logging/config.go:71","msg":"Fetch GitHub commit ID from kodata failed: open /etc/kodata/HEAD: no such file or directory"}
{"level":"info","ts":"2019-10-30T17:50:08.440Z","logger":"serving-operator.knativeserving-controller","caller":"knativeserving/controller.go:75","msg":"The ko_path exists.","knative.dev/controller":"knativeserving-controller"}
{"level":"info","ts":"2019-10-30T17:50:08.440Z","logger":"serving-operator.knativeserving-controller","caller":"knativeserving/controller.go:82","msg":"The ko_path_serving exists.","knative.dev/controller":"knativeserving-controller"}
{"level":"info","ts":"2019-10-30T17:50:08.441Z","logger":"serving-operator.knativeserving-controller","caller":"knativeserving/controller.go:93","msg":"..2019_10_30_17_50_07.090926616","knative.dev/controller":"knativeserving-controller"}
{"level":"info","ts":"2019-10-30T17:50:08.441Z","logger":"serving-operator.knativeserving-controller","caller":"knativeserving/controller.go:93","msg":"..data","knative.dev/controller":"knativeserving-controller"}
{"level":"info","ts":"2019-10-30T17:50:08.441Z","logger":"serving-operator.knativeserving-controller","caller":"knativeserving/controller.go:93","msg":"0.9.0.yaml","knative.dev/controller":"knativeserving-controller"}
{"level":"info","logger":"manifestival","msg":"Reading manifest","name":"/etc/kodata/knative-serving"}

The log has been frozen here. manifestival is trying to Reading manifest, but no further movement.
I added a snippet in the source to find out what is going on. It turned out that there are literally 3 files under the path /etc/kodata/knative-serving: ..data, ..2019_10_30_17_50_07.090926616 and 0.9.0.yaml. It seems that the package manifestival is unable to exclude the files, which are not in the correct yaml format.
I suppose this is a bug for the lib manifestival to improve. For example, we can exclude the files not in correct yaml format.
@jcrossley3 I would love to hear from you. Thx.

Manifestival doesn't currently do any YAML validation. It assumes the YAML you pass it is valid, and it will attempt to load every single file beneath any path that is a directory.

I have fixed this issue with a patch in manifestival package: https://github.com/jcrossley3/manifestival/commit/33c10fadf140920b8a58dd9ffae7f22e66eabee9


Hotfix/add team in readme

#437

@pl8787 @uduse @ZizhenWang @lixinsu @yangliuy @zhouzhouyang520 @rgtjf please check the title as well as the description of yourself.

Codecov Report

Merging #447 into 2.0 will not change coverage.
The diff coverage is 100%.

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

Shouldn't first names go first?

@bwanglzu You can merge this PR right now. For the Development Team section, we can remain it as it shows currently. Since the Readme.md will be released only after the 2.0 version becomes more stable. We can adjust it in due course. Hope we can lead us to move forward of this project.


Create info carousel sdk base repo

Create the basic flutter plugin for info carousel.
Acceptance criteria

Example app running with user area service, presenter, controller, and model.


Responsive Header

Centered all the links and logo wrt screen.
Made the User-dropdown menu come forward by z-index, as it used to get below the main content for screens below 500px.
Screen 1245px:

Screen 911px:

Screen 750px:

Screen 450px:

Would like to have your feedback.

Done.


Hooks autocomplete miss parameters

What it gives:

What it requires:

Can you share some more details? GitHub doesn't seem to be showing anything in your post.

Hooks have a parameter (int priority) which is missing. So the autocompletion isn't correct.


Update Vercel documentation.

Hey there! 👋
Thanks again for this amazing library. Wanted to update the Vercel docs to clarify a few things. First, we should probably recommend deploying with vite-plugin-vercel to enable support for all Vercel features. This is no longer a fast-moving target (sorry for the changes between v1 and v3) and has now stabilized. The Build Output API is what all of the meta-frameworks on Vercel and moving towards targeting, including SvelteKit, Nuxt, Astro, and more.
Learn more: https://vercel.com/blog/build-output-api

Also - would be happy to sponsor y'all with a free open-source plan on Vercel. Say the word and I'll help get it set up!

Thanks for the PR!
Knowing my users, I think a lot of them actually do like to directly use Vercel APIs instead of using a middle-man such as vite-plugin-vercel. Don't take me wrong: vite-plugin-vercel is great and I like it a lot. It's just about documenting the full range of options to vite-plugin-ssr users. A lot of them actually directly use the Build Output API — that's the kind of users vite-plugin-ssr has. So I accommodated the PR for these users. But feel free to let me know if you disagree with anything. Merging in the meantime.

Also - would be happy to sponsor y'all with a free open-source plan on Vercel. Say the word and I'll help get it set up!

Neat, thanks. The free Vercel plan works for me so far but I'll let you know if I need one 👍.
I'm actually thinking: Vercel is sponsoring projects like Astro and SvelteKit.  I'm thinking maybe @magne4000 being the author of vite-plugin-vercel is eligible.

Oh I didn't realize you were using Vercel since https://vite-plugin-ssr.com/ wasn't on Vercel here 😄


SDWebImage and Xcode 7

Hi,
I know that Xcode 7 is still in beta and have some internal bugs,
but is it possible that Apple again "improved" something the way that
SDWebImage will need considerable changes to make it work with Xcode 7, iOS 9?
I mean, at this moment it does not work with beta4.

i do not have it installed as its in beta . What seems to be the problem with XCode 7 and SDWebImage?

Project[39121:248990] CFNetwork SSLHandshake failed (-9824)
Project[39121:248990] NSURLSession/NSURLConnection HTTP load failed (kCFStreamErrorDomainSSL, -9824)

its not this library that causes the issue
more here and here

@mythodeia @nickfl It's not working with me neither. How did you guys fix it?!

@holgersindbaek check the links above.

@mythodeia I have checked the links above... I need a "here's what you need to do to fix this problem"-link, not a "read these many pages and you might be able to google your way to a solution somewhere in the future"-link. Is this a fixable problem or?!

@holgersindbaek i think both the links i provided, excluding the Apple one, provide solutions.
the stackoverflow one provides a solution on the 2nd answer. The other does the same thing but explains why you should pay attention to something like this. If you need more assistance i am sure someone here will assist you if you are patient.

@mythodeia You're right... sorry for the impatience.

no worries. if you encounter issues with any of the solutions please reply back and hopefully we can work it out. :+1:


Problem:     Bot cannot login, bad credentials.

musicbot.log
Please tick all applicable boxes.

[x] I am using Python 3.5 or higher (run python --version on the command line)
[x] I have followed the official guides to install the bot for my system
[x] I have updated my dependencies to the latest version using the appropriate update_dependencies script

Which version are you using?

[x] The latest master version (1.9.7)
[ ] The latest review version

What type of issue are you creating?

[x] Bug
[ ] Feature request
[ ] Question

Description of issue
Starting MusicBot 1.9.7
Loaded autoplaylist with 2531 entries
.[INFO] launcher:
An error has occured:
  Problem:
    Bot cannot login, bad credentials.

  Solution:
    Fix your token in the options file.  Remember that each field should be on their own line.

[INFO] launcher: All done.

Steps to reproduce

Run the bot with Docker command docker run -it musicbot:0.1

musicbot.log

@AutumnClove I have done all of those things.

_autoplaylist.txt  example_options.ini  example_permissions.ini  i18n  options.ini  permissions.ini```

![image](https://user-images.githubusercontent.com/6967592/37905269-391ee3cc-30f6-11e8-89d3-d37c425285f3.png)

As far as I know bot tokens start with ND

@AutumnClove There are multiple prefixes, idk if that’s one of them

I just tried using the bot, within a docker container. I had the same error.
I was already using the bot this way with a previous version, and it used to work well.

ohh I think I might know the problem.
The Docker container doesn't have access to the options file.  The same thing happened with Group Butler in a Docker container.
How can I give it access?

I don't think it's the problem.
The whole directory is copied during the image build process
# Add project source
WORKDIR /usr/src/musicbot
COPY . ./

And a volume is actually mounted to map the the config directory from the hard disk
# Create volume for mapping the config
VOLUME /usr/src/musicbot/config

Appears resolved. If you have any further questions please feel free to reopen :)


RPM Python binding on system Python should be installed manually.

$ docker run -ti fedora:28 bash -c "dnf install -y python2-pip && pip2 install rpm-py-installer"
Collecting rpm-py-installer
  Downloading https://files.pythonhosted.org/packages/6f/47/d7f5a2cd4977d517edc49f794b5f72cdf966240f7ef9abcf0e8acc0b02df/rpm-py-installer-0.8.0.tar.gz
    Complete output from command python setup.py egg_info:
    running egg_info
    creating pip-egg-info/rpm_py_installer.egg-info
    writing pip-egg-info/rpm_py_installer.egg-info/PKG-INFO
    writing top-level names to pip-egg-info/rpm_py_installer.egg-info/top_level.txt
    writing dependency_links to pip-egg-info/rpm_py_installer.egg-info/dependency_links.txt
    writing manifest file 'pip-egg-info/rpm_py_installer.egg-info/SOURCES.txt'
    reading manifest file 'pip-egg-info/rpm_py_installer.egg-info/SOURCES.txt'
    writing manifest file 'pip-egg-info/rpm_py_installer.egg-info/SOURCES.txt'
    [INFO] Installing...
    Traceback (most recent call last):
      File "install.py", line 1678, in <module>
        main()
      File "install.py", line 1673, in main
        app.run()
      File "install.py", line 31, in run
        self.linux.verify_system_status()
      File "install.py", line 1008, in verify_system_status
        raise InstallError(message)
    __main__.InstallError:
    RPM Python binding on system Python should be installed manually.
    Install the proper RPM package of python{,2,3}-rpm.

    Traceback (most recent call last):
      File "<string>", line 1, in <module>
      File "/tmp/pip-build-Zo2zlg/rpm-py-installer/setup.py", line 128, in <module>
        'bdist_wheel': BdistWheelCommand,
      File "/usr/lib/python2.7/site-packages/setuptools/__init__.py", line 129, in setup
        return distutils.core.setup(**attrs)
      File "/usr/lib64/python2.7/distutils/core.py", line 151, in setup
        dist.run_commands()
      File "/usr/lib64/python2.7/distutils/dist.py", line 953, in run_commands
        self.run_command(cmd)
      File "/usr/lib64/python2.7/distutils/dist.py", line 972, in run_command
        cmd_obj.run()
      File "/tmp/pip-build-Zo2zlg/rpm-py-installer/setup.py", line 57, in run
        install_rpm_py()
      File "/tmp/pip-build-Zo2zlg/rpm-py-installer/setup.py", line 20, in install_rpm_py
        raise Exception('Command failed: {0}'.format(cmd))
    Exception: Command failed: /usr/bin/python2 install.py

    ----------------------------------------
Command "python setup.py egg_info" failed with error code 1 in /tmp/pip-build-Zo2zlg/rpm-py-installer/

RPM Python binding on system Python should be installed manually.
Install the proper RPM package of python{,2,3}-rpm.

Thank you for the report.
The message in the log shows the reason.
Maybe you tried to install RPM Python binding on /usr/bin/python*, right?
In this case, I would recommend to install dnf install python{,2,3}-rpm.

Aha, that's it. Thanks !
You close this if you want.

I hit this again when I tried the following on centos-7
yum -y install epel-release && yum -y install python36-pip && pip3.6 install rpm_py_installer

It took me some time to realize that I need to also run pip3.6 install rpm

This can be closed I think.

It took me some time to realize that I need to also run pip3.6 install rpm.
EDIT: Which did not help, because what I need is python36-rpm, which does not exist.

Oh you could run "pip3.6 install rpm"?
Right now the rpm is just reserved as dummy.
https://pypi.org/project/rpm/

Right now, this package just reserves the rpm name on PyPI to avoid the potential for a name conflict with the python2-rpm and python3-rpm Python bindings on RPM-based Linux distros.

EDIT: Which did not help, because what I need is python36-rpm, which does not exist.

Also no python3-rpm right?
I think maybe rpm-py-installer should provide the option to install it to system Python.


Create an Atlas Core Module to support mapping to <-> from Atlas Primitive Types

@mattrpav commented on Wed Sep 27 2017
Discussion w/ John and Tomo:

Support a sourceUri, targetUri scheme of 'atlas:core...' that would support mapping to and from atlas.FieldTypes

atlas:core as a Source would support 1 to many mapping defintions

atlas:core as a Target would only support 1 mapping definition
a. Advanced uses cases probably require the AtlasGroupStrategy and FieldAction support for GroupStrategy

Final AtlasSession ouput values would align to the Java class of the Atlas.FieldType

@igarashitm commented on Wed Nov 08 2017
Still under consideration though, possibly multiple target is also required to output headers, parameters as well as payload (#64).

Haven't had time to implement yet, can revisit in a future sprint


Added hover effects in the footer-menu class links

Fixes

Fixes #275 by @[SumaiyaaRq]

Description
Added hover effects in the context of the footer-menu
Technical details

Tests

Screenshots

Checklist

[ ] My pull request has a descriptive title (not a vague title like Update index.md).
[ ] My pull request targets the default branch of the repository (main or master).
[ ] My commit messages follow best practices.
[ ] My code follows the established code style of the repository.
[ ] I added or updated tests for the changes I made (if applicable).
[ ] I added or updated documentation (if applicable).
[ ] I tried running the project locally and verified that there are no
visible errors.

Developer Certificate of Origin

For the purposes of this DCO, "license" is equivalent to "license or public domain dedication," and "open source license" is equivalent to "open content license or public domain dedication."

Developer Certificate of Origin
Developer Certificate of Origin
Version 1.1

Copyright (C) 2004, 2006 The Linux Foundation and its contributors.
1 Letterman Drive
Suite D4700
San Francisco, CA, 94129

Everyone is permitted to copy and distribute verbatim copies of this
license document, but changing it is not allowed.

Developer's Certificate of Origin 1.1

By making a contribution to this project, I certify that:

(a) The contribution was created in whole or in part by me and I
    have the right to submit it under the open source license
    indicated in the file; or

(b) The contribution is based upon previous work that, to the best
    of my knowledge, is covered under an appropriate open source
    license and I have the right under that license to submit that
    work with modifications, whether created in whole or in part
    by me, under the same open source license (unless I am
    permitted to submit under a different license), as indicated
    in the file; or

(c) The contribution was provided directly to me by some other
    person who certified (a), (b) or (c) and I have not modified
    it.

(d) I understand and agree that this project and the contribution
    are public and that a record of the contribution (including all
    personal information I submit with it, including my sign-off) is
    maintained indefinitely and may be redistributed consistent with
    this project or the open source license(s) involved.

Hello @possumbilities, this is the PR. Please kindly review.

Hi @Macomi27 This PR is for an Issue that doesn't exist. Please attach the correct Issue to this PR.

Hi @Macomi27 It looks like you opened this PR in reference to an Issue that was migrated away from this repository.
It can now be found here:

https://github.com/creativecommons/vocabulary/issues/179

As this is now a matter for another repository, and that Issue is listed currently as: https://github.com/creativecommons/vocabulary/labels/🚧 status%3A blocked I'm moving this PR to closed for now.
If that Issue becomes unblocked feel free to submit a relevant PR on the migrated Issue in the future.


fix introduced regression to ingesting Xray scan

Signed-off-by: Fred Blaise<EMAIL_ADDRESS>Found out some space removal introduced a month ago during some "cleanup", breaking XRay ingestion. Fixing these here.
This broke the intake with error Unknown Test Type.

Looks like it was introduced in https://github.com/DefectDojo/django-DefectDojo/commit/8c4fe35865f5eff4741fadce0063038c41ad26d9 ?

Looks like it was introduced in 8c4fe35 ?

It was..


Added two player functionality

Added 'vs Human' and 'vs AI' button. Starts off 'vs AI' by default.

Great job, Thanks!