Get position (coordinates) of mouse in current Tile (Image)

Hallo,
how can i get the position on the current Tile (Image) in image-coordinates. So let me explain a little bit more.
I have a big image and when you zoom they get replaced by other images. Imagine the mouse is on the Tile (Image) 13_34.png which is 320x320pixel (x=0 and y=0 is on the bottom left of this image) and the mouse is for example in the middle left of this image so than i want to get x=0 and y=160.
Hope you understand what i mean.

We don't currently have a direct API for this, but you can figure it out by examining the lastDrawn property of your TiledImage. It's an array of Tile objects, and they all know their locations (in web coordinates, I believe; the same as the mouse event). For instance, take a look at the debug info drawing code:
https://github.com/openseadragon/openseadragon/blob/master/src/tiledimage.js#L1378

I can't figure it out how i will use this. Do i have to set the param debugMode: true to see this debugInfos ? Sry.
Is there no way to get this information ? OpenSeadragon knows on which image im moving. I only want the image coordinates of this tile.

@Sityle You don't need to turn debug mode on; I was just saying you could use that code for reference. At any rate, here is the idea:
viewer.addHandler('canvas-click', function(event) {
    console.log('click', event.position);
    var tiledImage = viewer.world.getItemAt(0);
    var tile, tileRight, tileBottom;
    for (var i = 0; i < tiledImage.lastDrawn.length; i++) {
        tile = tiledImage.lastDrawn[i];
        tileRight = tile.position.x + tile.size.x;
        tileBottom = tile.position.y + tile.size.y;
        if (event.position.x >= tile.position.x && event.position.x < tileRight &&
                event.position.y >= tile.position.y && event.position.y < tileBottom) {
            console.log('clicked on tile ' + tile.x + ',' + tile.y + '; relative coordinates: ' +
                (event.position.x - tile.position.x) + ',' + (event.position.y - tile.position.y));
        }
    }
});

Let me know if that works for you.
Btw, I'm curious what you're working on that needs this info; I'd love to know more about your use case.

@iangilman first of all thank you for your fast answer. This works for the moment so far that there is one problem with that. The problem the tile size changing by zoom, so that i cant get the right position in this image  The more i zoom the bigger the coordinates. For example the image is in truth 420x420 but when i zoom in and click on the bottom right i get 760x760. Normally this would be out of range by his image. Is there any possibility to normalize ?
OK let me tell you a little bit about my project, a little bit because its really secret at this time. The project is about placing objects in a big image. For this i need the position of the mouse on the current image so that i can place an object at this position.

@iangilman i did it by this steps:

Getting image dimensions
Calulating the factor between img.width and tile.size.x, img.height and tile.size.y

And with it i can scale into my original picture dimensions.
Thank you !

@Sityle Glad to hear you got a solution that works! And thank you for the info about the project. Please share it when it's no longer secret; I'd love to see it in action and add it to our "in the wild" page.


You might have something I need

Hello I am someone who serves the public, preserves history and also is very pretentious I was wondering if you are id 236 on roblox also known as tmcgannon who registered may 31st 2006. I need to know how I can contact you more to discuss this. Do not merge this pull btw it just overwrites your readme and that would be terrible but you could roll back but just ...dont merge thanks.

wait this isnt tmc gannon's fork oops


remove certmanager dependency.

ref: https://github.com/open-cluster-management/backlog/issues/11088
Signed-off-by: morvencao<EMAIL_ADDRESS>

/lgtm


Exit app for files to Sync

BPC 3.3.0 RC2 had to exit app for newly added files from Desktop app to appear in mobile app.

3.5.0 not necessary to exit app but I had to navigate out of the device in question on the mobile app and then back to it .
IE
Device A on Desktop downloads new data
To see that data in Device A on mobile, I have to navigate to Device C in the mobile menu and then back to Device A before the new data shows up

See: #694 #474 #556 etc


update .gitignore to ignore .env file

In the Quick Start guide one of the first steps is to make a new file called .env. The gitignore does not ignore this file. This can cause credentials to be leaked if accidentally pushed up

@adrianhajdin , 👋 This peaked our interest @dwolla. We noticed that people are leaking their Dwolla API credentials in a .env file that are getting pushed to public repositories. We're wondering if you could remove these API credentials as well as merge this PR to add .env* to .gitignore of this project? 🙏  Feel free to tag me if you have any questions on the Dwolla side!

@adrianhajdin , 👋 This peaked our interest @Dwolla. We noticed that people are leaking their Dwolla API credentials in a .env file that are getting pushed to public repositories. We're wondering if you could remove these API credentials as well as merge this PR to add .env* to .gitignore of this project? 🙏 Feel free to tag me if you have any questions on the Dwolla side!

I noticed this earlier this week, that the .env wasn't added to the gitignore, luckily for me my repo isn't public, I later unlisted my .env from git them made all the necessary changes. Thanks for raising the concern.


Add usage documentation

[x] How to install opkg
[x] How to add the toltec repository to opkg
[x] How to update the list of packages
[x] How to install, remove, upgrade packages
[ ] Which channel to choose (stable/testing)

All that's left is https://github.com/toltec-dev/toltec/blob/testing/docs/channels.md

Which is added in #81.


[bug] when cancelling metamask's connections and click retry, the notification will be popup 'address in invalid'

Link to minimal reproducible example
N/A
Summary
Only Mobile physical device is triggerable, desktop or responsive isn't able to trigger this.
Using Device:

iPhone 12 Pro, iOS 17.0

Ways to trigger:

Connect wallet using Metamask

When 'Open this page in "MetaMask"?' popup comes out, click Cancel

Click Try Again on the modal

A popup 'Safari cannot open the page because the address is invalid.' will be show and keep, ways only to solve is to reload whole page.

List of related npm package versions
"@headlessui/react": "^1.7.17",
"@nanostores/persistent": "^0.9.1",
"@nanostores/react": "^0.7.1",
"@types/node": "20.5.9",
"@types/react": "18.2.21",
"@types/react-dom": "18.2.7",
"@uniswap/widgets": "^2.59.0",
"@web3modal/wagmi": "^3.2.0",
"autoprefixer": "10.4.15",
"axios": "^1.6.0",
"classnames": "^2.3.2",
"downloadjs": "^1.4.7",
"eslint": "8.48.0",
"eslint-config-next": "13.4.19",
"firebase": "^10.5.2",
"html-to-image": "^1.11.11",
"lightweight-charts": "^4.1.1",
"lodash": "^4.17.21",
"nanostores": "^0.9.4",
"next": "13.4.19",
"postcss": "8.4.29",
"react": "18.2.0",
"react-dom": "18.2.0",
"react-toastify": "^9.1.3",
"react-tooltip": "^5.21.6",
"recharts": "^2.9.1",
"sass": "^1.69.5",
"sortablejs": "^1.15.0",
"ua-parser-js": "^1.0.37",
"viem": "^1.18.1",
"wagmi": "^1.4.5"

我的问你跟你的差不多

我的问题和你差不多，解决了么

This is limitation of iOS native system that we have no control over. However, we have few ideas on how to improve this and are tracking them here https://github.com/WalletConnect/web3modal/issues/1429 (closing this issue in favor of existing feature-request)


MMM class cannot be used with sklearn pipeline

Hello,
I was trying to implement a pipeline using the sklearn pipeline which would do the transformations if needed and then do the model fitting and posterior predictive sampling/predict with the MMM class.
But it says that it is not compatible with the sklearn pipeline.
I understand why this is so but wanted to know if there is a way to do it?

With sklearn, you can always make a custom regression. You will just have to hide the MMM class in the fit, predict of the child class

Hello @wd60622 ,
I think I understand.
It will be something like the below :
"""
from typing import Any, Dict, List, Tuple, Callable
import pandas as pd
import pymc as pm
from pymc_marketing.mmm import MMM
import arviz as az
class PyMCPipeline:
def init(
self,
steps: List[Tuple[str, Callable]],
mmm: MMM,
) -> None:
"""
Initialize the PyMCPipeline with preprocessing steps and a PyMC Marketing MMM model.
    Parameters
    ----------
    steps : List[Tuple[str, Callable]]
        List of (name, transform) tuples that are applied sequentially.
    mmm : MMM
        An instance of the MMM model from pymc_marketing.
    """
    self.steps = steps
    self.mmm = mmm
    self.model = None
    self.trace = None

def fit(self, X: pd.DataFrame, y: pd.Series) -> 'PyMCPipeline':
    """
    Fit the pipeline, including all preprocessing steps and the PyMC model.

    Parameters
    ----------
    X : pd.DataFrame
        The input features, including channel and control variables.
    y : pd.Series
        The target variable.

    Returns
    -------
    self : PyMCPipeline
        The fitted pipeline.
    """
    # Apply each step sequentially
    for name, transform in self.steps:
        X = transform.fit_transform(X)

    # Build the PyMC model
    self.mmm.build_model(X, y)

    # Sample from the posterior distribution
    self.trace = self.mmm.sample()

    return self

def predict(self, X: pd.DataFrame) -> az.InferenceData:
    """
    Generate predictions using the fitted PyMC model.

    Parameters
    ----------
    X : pd.DataFrame
        The input features, including channel and control variables.

    Returns
    -------
    az.InferenceData
        Posterior predictive samples.
    """
    if self.trace is None:
        raise RuntimeError("The model must be fitted before making predictions.")

    # Apply preprocessing steps
    for name, transform in self.steps:
        X = transform.transform(X)

    # Generate predictions using posterior predictive sampling
    return self.mmm.sample_posterior_predictive(X_pred=X)

def fit_predict(self, X: pd.DataFrame, y: pd.Series) -> az.InferenceData:
    """
    Fit the pipeline and then generate predictions.

    Parameters
    ----------
    X : pd.DataFrame
        The input features, including channel and control variables.
    y : pd.Series
        The target variable.

    Returns
    -------
    az.InferenceData
        Posterior predictive samples.
    """
    return self.fit(X, y).predict(X)

"""
Closing this!

Hi @shuvayan,
Think that might work. I was thinking a bit more like their recommended workflow of creating RegressorMixin subclass which then works in the pipeline.
Ref: https://scikit-learn.org/stable/modules/generated/sklearn.base.RegressorMixin.html

Hello @wd60622 ,
I think I get it. It will be something like below:

from sklearn.base import BaseEstimator, TransformerMixin, RegressorMixin
from sklearn.pipeline import Pipeline
import pandas as pd
import numpy as np
import pymc as pm
import arviz as az
import matplotlib.pyplot as plt
import warnings

class MMM(BaseEstimator, RegressorMixin):
    def __init__(
        self,
        date_column: str,
        channel_columns: list[str],
        adstock,
        saturation,
        control_columns: list[str] | None = None,
        yearly_seasonality: int | None = None,
        adstock_first: bool = True
    ) -> None:
        self.date_column = date_column
        self.channel_columns = channel_columns
        self.adstock = adstock
        self.saturation = saturation
        self.control_columns = control_columns or []
        self.yearly_seasonality = yearly_seasonality
        self.adstock_first = adstock_first

    def fit(self, X: pd.DataFrame, y: pd.Series) -> "MMM":
        """Fit the MMM model to the data."""
        # Initialize and build the model here
        self.X = X
        self.y = y
        self.build_model(X, y)
        return self

    def predict(self, X: pd.DataFrame) -> np.ndarray:
        """Predict using the MMM model."""
        # Ensure the model has been built and perform prediction
        if not hasattr(self, "model"):
            raise RuntimeError("The model has not been built yet.")
        return self.sample_posterior_predictive(X).mean(dim="sample").values

    def add_lift_test_measurements(
        self,
        df_lift_test: pd.DataFrame,
        dist: type[pm.Distribution] = pm.Gamma,
        name: str = "lift_measurements",
    ) -> None:
        """Add lift tests to the model."""
        if not hasattr(self, "model"):
            raise RuntimeError("The model has not been built yet.")
        if "channel" not in df_lift_test.columns:
            raise KeyError("The 'channel' column is required to map the lift measurements to the model.")
        df_lift_test_scaled = scale_lift_measurements(
            df_lift_test=df_lift_test,
            channel_col="channel",
            channel_columns=self.channel_columns,  # type: ignore
            channel_transform=self.channel_transformer.transform,
            target_transform=self.target_transformer.transform,
        )
        time_varying_var_name = (
            "media_temporal_latent_multiplier" if self.time_varying_media else None
        )
        add_lift_measurements_to_likelihood_from_saturation(
            df_lift_test=df_lift_test_scaled,
            saturation=self.saturation,
            time_varying_var_name=time_varying_var_name,
            model=self.model,
            dist=dist,
            name=name,
        )

    def _create_synth_dataset(
        self,
        df: pd.DataFrame,
        date_column: str,
        allocation_strategy: dict[str, float],
        channels: list[str] | tuple[str],
        controls: list[str] | None,
        target_col: str,
        time_granularity: str,
        time_length: int,
        lag: int,
        noise_level: float = 0.01,
    ) -> pd.DataFrame:
        """Create a synthetic dataset based on the given allocation strategy (Budget) and time granularity."""
        time_offsets = {
            "daily": {"days": 1},
            "weekly": {"weeks": 1},
            "monthly": {"months": 1},
            "quarterly": {"months": 3},
            "yearly": {"years": 1},
        }
        if time_granularity not in time_offsets:
            raise ValueError("Unsupported time granularity. Choose from 'daily', 'weekly', 'monthly', 'quarterly', 'yearly'.")
        if controls is not None:
            _controls: list[str] = controls
        else:
            controls = []

        last_date = pd.to_datetime(df[date_column]).max()
        new_dates = []
        for i in range(1, time_length + 1):
            if time_granularity == "daily":
                new_date = last_date + pd.DateOffset(days=i)
            elif time_granularity == "weekly":
                new_date = last_date + pd.DateOffset(weeks=i)
            elif time_granularity == "monthly":
                new_date = last_date + pd.DateOffset(months=i)
            elif time_granularity == "quarterly":
                new_date = last_date + pd.DateOffset(months=3 * i)
            elif time_granularity == "yearly":
                new_date = last_date + pd.DateOffset(years=i)
            new_dates.append(new_date)

        new_rows = [
            {
                self.date_column: pd.to_datetime(new_date),
                **{
                    channel: allocation_strategy.get(channel, 0)
                    + np.random.normal(
                        0, noise_level * allocation_strategy.get(channel, 0)
                    )
                    for channel in channels
                },
                **{control: 0 for control in _controls},
                target_col: 0,
            }
            for new_date in new_dates
        ]

        return pd.DataFrame(new_rows)

    def allocate_budget_to_maximize_response(
        self,
        budget: float | int,
        time_granularity: str,
        num_periods: int,
        budget_bounds: dict[str, tuple[float, float]] | None = None,
        custom_constraints: dict[str, float] | None = None,
        quantile: float = 0.5,
        noise_level: float = 0.01,
    ) -> az.InferenceData:
        """Allocate the given budget to maximize the response over a specified time period."""
        parameters_mid = self.format_recovered_transformation_parameters(quantile=quantile)
        allocator = BudgetOptimizer(
            adstock=self.adstock,
            saturation=self.saturation,
            parameters=parameters_mid,
            adstock_first=self.adstock_first,
            num_periods=num_periods,
            scales=self.channel_transformer["scaler"].scale_,
        )
        self.optimal_allocation_dict, _ = allocator.allocate_budget(
            total_budget=budget,
            budget_bounds=budget_bounds,
            custom_constraints=custom_constraints,
        )
        synth_dataset = self._create_synth_dataset(
            df=self.X,
            date_column=self.date_column,
            allocation_strategy=self.optimal_allocation_dict,
            channels=self.channel_columns,
            controls=self.control_columns,
            target_col=self.output_var,
            time_granularity=time_granularity,
            time_length=num_periods,
            lag=self.adstock.l_max,
            noise_level=noise_level,
        )
        return self.sample_posterior_predictive(
            X_pred=synth_dataset,
            extend_idata=False,
            include_last_observations=True,
            original_scale=False,
            var_names=["y", "channel_contributions"],
            progressbar=False,
        )

    def plot_budget_allocation(
        self,
        samples: Dataset,
        figsize: tuple[float, float] = (12, 6),
        ax: plt.Axes | None = None,
        original_scale: bool = True,
    ) -> tuple[plt.Figure, plt.Axes]:
        """Plot the budget allocation and channel contributions."""
        if original_scale:
            channel_contributions = (
                samples["channel_contributions"]
                .mean(dim=["sample"])
                .mean(dim=["date"])
                .values
                * self.get_target_transformer()["scaler"].scale_
            )
            allocate_spend = (
                np.array(list(self.optimal_allocation_dict.values()))
                * self.channel_transformer["scaler"].scale_
            )
        else:
            channel_contributions = (
                samples["channel_contributions"]
                .mean(dim=["sample"])
                .mean(dim=["date"])
                .values
            )
            allocate_spend = np.array(list(self.optimal_allocation_dict.values()))

        if ax is None:
            fig, ax = plt.subplots(figsize=figsize)
        else:
            fig = ax.get_figure()

        bar_width = 0.35
        opacity = 0.7
        index = np.arange(len(self.channel_columns))

        bars1 = ax.bar(
            index,
            allocate_spend,
            bar_width,
            color="b",
            alpha=opacity,
            label="Allocate Spend",
        )

        ax2 = ax.twinx()
        bars2 = ax2.bar(
            index + bar_width,
            channel_contributions,
            bar_width,
            color="r",
            alpha=opacity,
            label="Channel Contributions",
        )

        ax.set_xlabel("Channels")
        ax.set_ylabel("Allocate Spend", color="b")
        ax.tick_params(axis="x", rotation=90)
        ax.set_xticks(index + bar_width / 2)
        ax.set_xticklabels(self.channel_columns)
        ax.legend(loc="upper left")
        ax2.set_ylabel("Channel Contributions", color="r")
        ax2.legend(loc="upper right")

        plt.tight_layout()
        return fig, ax

    def plot_allocated_contribution_by_channel(
        self,
        samples: Dataset,
        figsize: tuple[float, float] = (12, 6),
        ax: plt.Axes | None = None,
        original_scale: bool = True,
    ) -> tuple[plt.Figure, plt.Axes]:
        """Plot the allocated contribution by channel."""
        if original_scale:
            channel_contributions = (
                samples["channel_contributions"]
                .mean(dim=["sample"])
                .mean(dim=["date"])
                .values
                * self.get_target_transformer()["scaler"].scale_
            )
        else:
            channel_contributions = (
                samples["channel_contributions"]
                .mean(dim=["sample"])
                .mean(dim=["date"])
                .values
            )

        if ax is None:
            fig, ax = plt.subplots(figsize=figsize)
        else:
            fig = ax.get_figure()

        bar_width = 0.35
        opacity = 0.7
        index = np.arange(len(self.channel_columns))

        bars = ax.bar(
            index,
            channel_contributions,
            bar_width,
            color="b",
            alpha=opacity,
        )

        ax.set_xlabel("Channels")
        ax.set_ylabel("Channel Contributions", color="b")
        ax.tick_params(axis="x", rotation=90)
        ax.set_xticks(index)
        ax.set_xticklabels(self.channel_columns)
        ax.legend(["Channel Contributions"], loc="upper left")

        plt.tight_layout()
        return fig, ax

    def build_model(self, X: pd.DataFrame, y: pd.Series) -> None:
        """Build the PyMC model."""
        # Implement the model building here
        pass

    def sample_posterior_predictive(self, X_pred: pd.DataFrame, **kwargs) -> az.InferenceData:
        """Sample from the posterior predictive distribution."""
        # Implement the sampling here
        pass

Kindly let me know if this is the right way to proceed?


Transpilation doesn't work for tests when hinting is turned on

I'm on the latest everything ( ember, ember-cli-babel, etc.. ).
Running into a really weird issue where the app works great with hinting turned off, but when I turn it on, the transpilation suddenly fails.

Build failed.
The Broccoli Plugin: [BroccoliMergeTrees: TreeMerger (appTestTrees)] failed with:
SyntaxError: ...
Unexpected token (57:8)
55 |       return EmberObject.create({
56 |         isSelected: (selectedStates.indexOf(state.id) !== -1),
57 |         ...state
|         ^
58 |       });
59 |     });

I do have "transform-object-rest-spread" set up as in my ember-cli-build.js as instructed in the README here. Even if I comment out the spread operator stuff, tests will still fail with messages like: Global error: SyntaxError: Unexpected token 'const' at http://localhost:7357/assets/tests.js, line 8". Strangely enough, everything works perfectly if I just set hinting to false in the ember-cli-build.js. Wtf?

I helped someone with a similar issue a couple months ago, most likely you have a misbehaving linter. I have PR'ed ~ 4 different style linters that were causing this issue, you should check into yours to confirm you have latest versions.

See https://github.com/ember-cli/ember-cli/issues/7063 and cross linked PR's.

Oh! You are correct. It was due to a misbehaving linter. We switched over to eslint-plugin-ember-suave but forgot to https://github.com/DockYard/eslint-plugin-ember-suave#upgrading-from-ember-suave
It would appear that ember-suave was causing my breakage. Thanks!


Session Cookie Does Not Contain the "Secure" Attribute

THREAT:
The secure cookie flag is an option that can be set by the application server when sending a new cookie to the user within an HTTP
Response. The purpose of the secure flag is to prevent cookies from being observed by unauthorized parties due to the transmission of a
the cookie in clear text. By setting the secure flag, the browser will prevent the transmission of a cookie over an unencrypted channel.
A cookie with the secure attribute was not detected in the scan.
QID Detection Logic:
This unauthenticated QID checks for the existence of the "secure" cookie flag.
IMPACT:
Session cookies sent via HTTP expose users to sniffing attacks that could lead to user impersonation or account compromise.
SOLUTION:
Apply the "secure" attribute to session cookies to ensure that they are sent via HTTPS only. More information about this flag can be
found here: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Set-Cookie.

@RoBuerger , Konga doesn't use sessions. It's stateless and uses JWT auth instead.


How to merge multiple vector indices in v0.6.0?

I have generated indexes for each uploaded file, and I want to obtain answers from these indexes when querying. Do I need to merge them first? Or should we use other more suitable solutions?

documents = SimpleDirectoryReader(input_files=[filepath]).load_data()
index = GPTVectorStoreIndex.from_documents(documents,
                                           service_context=service_context,
                                           storage_context=storage_context,)
path = get_index_filepath(index_name)
storage_context.persist(persist_dir=f'{path}')

Is it using llama_ Index.merger, but when I imported it, I found that 0.6.0 does not exist


🐛 Bug Report: TechDocs header disappears after initial generation

📜 Description
We are using "local" option for builder, generator and publisher for techdocs. When a document is viewed for the first time, the header disappears and the following notification is displayed:

We would expect the header to become visible after the generation has completed. But that's not the case; the header doesn't get displayed until the page is completely refreshed.

👍 Expected behavior
The header to should visible after the initial document generation has completed.
👎 Actual Behavior with Screenshots
The header never becomes visible until the page is manually refreshed.
👟 Reproduction steps

Configure techdocs as shown below:techdocs:
  builder: 'local'
generator:
  runIn: 'local'
publisher:
  type: 'local'

Create a new document.
Display the document.

📃 Provide the context for the Bug.
No response
🖥 Your Environment
OS:   Linux <IP_ADDRESS>-microsoft-standard-WSL2 - linux/x64
node: v16.16.0
yarn: 1.22.19
cli:  0.22.5 (installed)
backstage:  1.12.1
Dependencies:
@backstage/app-defaults                            1.2.1
@backstage/backend-app-api                         0.4.1
@backstage/backend-common                          0.18.3
@backstage/backend-dev-utils                       0.1.1
@backstage/backend-plugin-api                      0.5.0
@backstage/backend-tasks                           0.5.0
@backstage/catalog-client                          1.4.0
@backstage/catalog-model                           1.2.1
@backstage/cli-common                              0.1.12
@backstage/cli                                     0.22.5
@backstage/config-loader                           1.1.9
@backstage/config                                  1.0.7
@backstage/core-app-api                            1.6.0
@backstage/core-components                         0.12.5
@backstage/core-plugin-api                         1.5.0
@backstage/dev-utils                               1.0.13
@backstage/errors                                  1.1.5
@backstage/eslint-plugin                           0.1.2
@backstage/integration-aws-node                    0.1.2
@backstage/integration-react                       1.1.11
@backstage/integration                             1.4.3
@backstage/plugin-api-docs                         0.9.1
@backstage/plugin-app-backend                      0.3.43
@backstage/plugin-auth-backend                     0.18.1
@backstage/plugin-auth-node                        0.2.12
@backstage/plugin-bitbucket-cloud-common           0.2.4
@backstage/plugin-catalog-backend-module-bitbucket 0.2.10
@backstage/plugin-catalog-backend                  1.8.0
@backstage/plugin-catalog-common                   1.0.12
@backstage/plugin-catalog-graph                    0.2.28
@backstage/plugin-catalog-import                   0.9.6
@backstage/plugin-catalog-node                     1.3.4
@backstage/plugin-catalog-react                    1.4.0
@backstage/plugin-catalog                          1.9.0
@backstage/plugin-github-actions                   0.5.16
@backstage/plugin-home                             0.4.32
@backstage/plugin-org                              0.6.6
@backstage/plugin-permission-common                0.7.4
@backstage/plugin-permission-node                  0.7.6
@backstage/plugin-permission-react                 0.4.11
@backstage/plugin-proxy-backend                    0.2.37
@backstage/plugin-scaffolder-backend               1.12.0
@backstage/plugin-scaffolder-common                1.2.6
@backstage/plugin-scaffolder-node                  0.1.1
@backstage/plugin-scaffolder-react                 1.2.0
@backstage/plugin-scaffolder                       1.12.0
@backstage/plugin-search-backend-module-pg         0.5.4
@backstage/plugin-search-backend-node              1.1.4
@backstage/plugin-search-backend                   1.2.4
@backstage/plugin-search-common                    1.2.2
@backstage/plugin-search-react                     1.5.1
@backstage/plugin-search                           1.1.1
@backstage/plugin-sonarqube-backend                0.1.8
@backstage/plugin-sonarqube-react                  0.1.4
@backstage/plugin-sonarqube                        0.6.5
@backstage/plugin-tech-radar                       0.6.2
@backstage/plugin-techdocs-backend                 1.6.0
@backstage/plugin-techdocs-module-addons-contrib   1.0.11
@backstage/plugin-techdocs-node                    1.6.0
@backstage/plugin-techdocs-react                   1.1.4
@backstage/plugin-techdocs                         1.6.0
@backstage/plugin-user-settings-backend            0.1.7
@backstage/plugin-user-settings                    0.7.1
@backstage/release-manifests                       0.0.9
@backstage/test-utils                              1.2.6
@backstage/theme                                   0.2.18
@backstage/types                                   1.0.2
@backstage/version-bridge                          1.0.3
👀 Have you spent some time to check if this bug has been raised before?

[X] I checked and didn't find similar issue

🏢 Have you read the Code of Conduct?

[X] I have read the Code of Conduct

Are you willing to submit PR?
No, but I'm happy to collaborate on a PR with someone else

Related #13346, looks like it was merged in v1.13.0-next.0.

@anicke thanks! this does seem to be fixed indeed. It will be released into mainline next Tuesday. Gonna close this as a duplicate.


MGMT-1318 - enhance BMH CRs with relevant inventory data

Although bm-inentory is starting the kubeconfig-generate job so technically it can just pass the relevant info in the job env.

i thought about it , but since we want to get all the hosts with all the data and parse, it is better to bring in the client, with defined structs - more clear code


Update Android NDK version and API version

This PR updates Android NDK version and API version as the same as libc crate.
https://github.com/rust-lang/libc/blob/master/ci/android-install-ndk.sh
Fix https://github.com/rust-embedded/cross/issues/195

Why did you close this PR? I don't see anything wrong with it, and the CI failure is wide, see #609

I think CI failure is caused by the directory structure changing by NDK update.
I'll fix it, and reopen this PR.

I opened the new PR https://github.com/rust-embedded/cross/pull/629 because this PR can't be reopened.


Keypress doesn't work in Microsoft Edge

Can't seem to make it work in Edge-browser.
<EventListener target='window' onKeyPress={this.handleDocumentClick} />
handleDocumentClick(e) {
  console.log(e)
}

Works fine in Chrome & FF

The following code is working on my end with Edge 15. What version are you using? I'm not sure what's going on.
window.addEventListener('keypress', console.log)

Microsoft EdgeHTML 15.15063
Yes addEventListener works fine if I call it manually in my code or console but the EventListener-component doesn't seem to work for me.

I have no idea what could go wrong here. Sounds really weird! Did you get any other even type working? Let us know if you find a solution.


Null value when using Stack inside Sliver

As mentioned in the title, I get a null value error in my flutter app when I use Stack() inside a SliverToBoxAdapter.
I am on the latest version of flutter (web)
flutter doctor - v

flutter doctor -v
[✓] Flutter (Channel stable, 2.2.1, on macOS 11.4 20F71 darwin-x64, locale en-US)
    • Flutter version 2.2.1 at /Users/***/flutter
    • Framework revision 02c026b03c (32 hours ago), 2021-05-27 12:24:44 -0700
    • Engine revision 0fdb562ac8
    • Dart version 2.13.1

[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
    • Android SDK at /Users/***/Library/Android/sdk
    • Platform android-29, build-tools 29.0.3
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b4-5784211)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.5, Build version 12E262
    • CocoaPods version 1.10.0

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 3.6)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b4-5784211)

[✓] VS Code (version 1.56.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.22.0

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-x64     • macOS 11.4 20F71 darwin-x64
    • Chrome (web)    • chrome • web-javascript • Google Chrome 90.0.4430.212
    ! Error: *** iPhone is not connected. Xcode will continue when *** iPhone is connected. (code -13)

• No issues found!
[✓] Flutter (Channel stable, 2.2.1, on macOS 11.4 20F71 darwin-x64, locale en-US)
    • Flutter version 2.2.1 at /Users/****/flutter
    • Framework revision 02c026b03c (32 hours ago), 2021-05-27 12:24:44 -0700
    • Engine revision 0fdb562ac8
    • Dart version 2.13.1

[✓] Android toolchain - develop for Android devices (Android SDK version 29.0.3)
    • Android SDK at /Users/***/Library/Android/sdk
    • Platform android-29, build-tools 29.0.3
    • Java binary at: /Applications/Android Studio.app/Contents/jre/jdk/Contents/Home/bin/java
    • Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b4-5784211)
    • All Android licenses accepted.

[✓] Xcode - develop for iOS and macOS
    • Xcode at /Applications/Xcode.app/Contents/Developer
    • Xcode 12.5, Build version 12E262
    • CocoaPods version 1.10.0

[✓] Chrome - develop for the web
    • Chrome at /Applications/Google Chrome.app/Contents/MacOS/Google Chrome

[✓] Android Studio (version 3.6)
    • Android Studio at /Applications/Android Studio.app/Contents
    • Flutter plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/9212-flutter
    • Dart plugin can be installed from:
      🔨 https://plugins.jetbrains.com/plugin/6351-dart
    • Java version OpenJDK Runtime Environment (build 1.8.0_212-release-1586-b4-5784211)

[✓] VS Code (version 1.56.2)
    • VS Code at /Applications/Visual Studio Code.app/Contents
    • Flutter extension version 3.22.0

[✓] Connected device (2 available)
    • macOS (desktop) • macos  • darwin-x64     • macOS 11.4 20F71 darwin-x64
    • Chrome (web)    • chrome • web-javascript • Google Chrome 90.0.4430.212
    ! Error: *** iPhone is not connected. Xcode will continue when *** iPhone is connected. (code -13)

• No issues found!

home_screen.dart

code snippet
import 'package:flutter/material.dart';
import 'package:flutter_hooks/flutter_hooks.dart';
import 'package:gojira/config/app_colors.dart';
import 'package:gojira/widgets/widgets.dart';

class HomeScreen extends HookWidget {
  @override
  Widget build(BuildContext context) {
    return Background(
      sliverWidgets: [
        SliverToBoxAdapter(
          child: Column(
            children: [
              Container(
                width: MediaQuery.of(context).size.width,
                child: Stack(
                  alignment: AlignmentDirectional.center,
                  children: [
                    FittedBox(
                      child: Image.asset('images/mobile_banking_banner.jpg'),
                      fit: BoxFit.fill,
                    ),
                    Padding(
                      padding: const EdgeInsets.all(8.0),
                      child: Text(
                        "Bridiging Crypto with Banking.",
                        style: TextStyle(
                          letterSpacing: 0.5,
                          color: AppColors.textColor,
                          fontSize: 40,
                          fontWeight: FontWeight.bold,
                          fontStyle: FontStyle.normal,
                          shadows: [
                            Shadow(
                                color: Colors.black.withOpacity(1),
                                offset: Offset(0, 0),
                                blurRadius: 5),
                          ],
                        ),
                      ),
                    ),
                  ],
                ),
              ),
              Text(
                "MEMEsdjkhlfasdjklfhasdjofhasdkl;hjfkl;asdfjkl;asdjfkl;asdjf;ioasd ufrtio;e4wujro;isdjfkl;asdh jfkl;adshf ;klsdh;fjksdhajkpfhasdiljkfghasdjklhfljkasdhfjkl;sadhfjk;lsdhajklfhsdalfjasldfhjaskdh;fljkasdjfkl",
                style: TextStyle(
                  fontSize: 100,
                ),
              ),
            ],
          ),
        ),
      ],
    );
  }
}

/*

            SliverPersistentHeader(
              pinned: true,
              floating: false,
              delegate: SliverHeaderDelegate(
                body: Stack(
                  alignment: AlignmentDirectional.center,
                  children: [
                    FittedBox(
                      child: Image.asset('images/mobile_banking_banner.jpg'),
                      fit: BoxFit.fill,
                    ),
                    Center(
                      child: Text(
                        "Bridiging Crypto with Banking.",
                        style: TextStyle(
                          color: AppColors.textColor,
                          fontSize: 40,
                          fontWeight: FontWeight.bold,
                          fontStyle: FontStyle.normal,
                          shadows: [
                            Shadow(
                                color: Colors.black.withOpacity(1),
                                offset: Offset(0, 0),
                                blurRadius: 5),
                          ],
                        ),
                      ),
                    ),
                  ],
                ),
              ),
            ),

 */

background.dart

code snippet
import 'package:flutter/material.dart';
import 'package:gojira/widgets/widgets.dart';

class Background extends StatelessWidget {
  final List<Widget>? sliverWidgets;
  const Background({Key? key, this.sliverWidgets}) : super(key: key);

  @override
  Widget build(BuildContext context) {
    return GestureDetector(
      onTap: () => FocusScope.of(context).unfocus(),
      child: Scaffold(
        body: SliverBar(
          sliverWidgets: sliverWidgets,
        ),
      ),
    );
  }
}

sliver_bar.dart
import 'package:fluro/fluro.dart';
import 'package:flutter/material.dart';
import 'package:gojira/config/app_colors.dart';
import 'package:gojira/config/config.dart';
import 'package:gojira/providers/providers.dart';
import 'package:gojira/widgets/widgets.dart';
import 'package:hooks_riverpod/hooks_riverpod.dart';

class SliverBar extends ConsumerWidget {
  final List<Widget>? sliverActionsWidgets;
  final List<Widget>? sliverWidgets;
  const SliverBar({Key? key, this.sliverWidgets, this.sliverActionsWidgets})
      : super(key: key);

  @override
  Widget build(BuildContext context, ScopedReader watch) {
    var router = context.read(routerProvider);
    var authController =
        context.read(authenticationControllerProvider.notifier);
    return CustomScrollView(
      physics: BouncingScrollPhysics(),
      slivers: [
        SliverAppBar(
          snap: true,
          floating: true,
          centerTitle: false,
          primary: true,
          pinned: false,
          automaticallyImplyLeading: false,
          backgroundColor: AppColors.appBarColor,
          title: TextButton(
            onPressed: () => router.navigateTo(context, "/",
                transition: TransitionType.none),
            child: Text(
              Config.appName,
              style: TextStyle(
                  color: AppColors.titleColor,
                  fontSize: 40.0,
                  fontWeight: FontWeight.bold,
                  letterSpacing: -1.2),
            ),
          ),
          actions: [
            SliverButton(
              buttonText: 'ABOUT US',
              fontSize: 15.0,
              textColor: AppColors.textColor,
              buttonColor: AppColors.buttonColor,
              onPressed: () => router.navigateTo(context, "/about-us",
                  transition: TransitionType.none),
            ),
            if (!authController.isOfficiallySignedIn()!)
              SliverButton(
                buttonText: 'SIGN UP',
                fontSize: 15.0,
                textColor: AppColors.textColor,
                buttonColor: AppColors.buttonColor,
                onPressed: () => router.navigateTo(context, "/sign-up",
                    transition: TransitionType.none),
              ),
            if (!authController.isOfficiallySignedIn()!)
              SliverButton(
                buttonText: 'LOGIN',
                fontSize: 15.0,
                textColor: AppColors.textColor,
                buttonColor: AppColors.buttonColor,
                onPressed: () => router.navigateTo(context, "/log-in",
                    transition: TransitionType.none),
              ),
            if (authController.isOfficiallySignedIn()!)
              SliverButton(
                buttonText: 'PROFILE',
                fontSize: 15.0,
                textColor: AppColors.textColor,
                buttonColor: AppColors.buttonColor,
                onPressed: () => router.navigateTo(context, "/profile",
                    transition: TransitionType.none),
              ),
            if (authController.isOfficiallySignedIn()!)
              SliverButton(
                buttonText: 'PORTFOLIO',
                fontSize: 15.0,
                textColor: AppColors.textColor,
                buttonColor: AppColors.buttonColor,
                onPressed: () => router.navigateTo(context, "/porfolio",
                    transition: TransitionType.none),
              ),
            if (authController.isOfficiallySignedIn()!)
              SliverButton(
                buttonText: 'SIGN OUT',
                fontSize: 15.0,
                textColor: AppColors.textColor,
                buttonColor: AppColors.buttonColor,
                onPressed: () => router.navigateTo(context, "/sign-out",
                    transition: TransitionType.none),
              ),
            ...?sliverActionsWidgets
          ],
        ),
        ...?sliverWidgets
      ],
    );
  }
}

StackTrace:

logs
[        ] ════════════════════════════════════════════════════════════════════════════════════════════════════
[        ] ══╡ EXCEPTION CAUGHT BY RENDERING LIBRARY ╞═════════════════════════════════════════════════════════
[        ] The following TypeErrorImpl was thrown during paint():
[        ] Unexpected null value.
[        ] The relevant error-causing widget was:
[        ]   CustomScrollView file:///Users/****/Projects/gojira/lib/widgets/sliver_app_bar.dart:20:12
[        ] When the exception was thrown, this was the stack:
[        ] dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/errors.dart 236:49      throw_
[        ] dart-sdk/lib/_internal/js_dev_runtime/private/ddc_runtime/operations.dart 518:63  nullCheck
[        ] packages/flutter/src/rendering/viewport.dart 653:27                               [_paintContents]
[        ] packages/flutter/src/rendering/object.dart 394:12                                 pushLayer
[        ] packages/flutter/src/rendering/object.dart 450:7                                  pushClipRect
[        ] packages/flutter/src/rendering/viewport.dart 635:31                               paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 139:10                                 _repaintCompositedChild
[        ] packages/flutter/src/rendering/object.dart 100:5                                  repaintCompositedChild
[        ] packages/flutter/src/rendering/object.dart 204:7                                  [_compositeChild]
[        ] packages/flutter/src/rendering/object.dart 185:7                                  paintChild
[        ] packages/flutter/src/rendering/proxy_box.dart 140:14                              paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 187:12                                 paintChild
[        ] packages/flutter/src/rendering/proxy_box.dart 140:14                              paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 187:12                                 paintChild
[        ] packages/flutter/src/rendering/proxy_box.dart 140:14                              paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 187:12                                 paintChild
[        ] packages/flutter/src/rendering/proxy_box.dart 140:14                              paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 187:12                                 paintChild
[        ] packages/flutter/src/rendering/proxy_box.dart 140:14                              paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 187:12                                 paintChild
[        ] packages/flutter/src/rendering/proxy_box.dart 140:14                              paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 187:12                                 paintChild
[        ] packages/flutter/src/rendering/proxy_box.dart 140:14                              paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 139:10                                 _repaintCompositedChild
[        ] packages/flutter/src/rendering/object.dart 100:5                                  repaintCompositedChild
[        ] packages/flutter/src/rendering/object.dart 204:7                                  [_compositeChild]
[        ] packages/flutter/src/rendering/object.dart 185:7                                  paintChild
[        ] packages/flutter/src/rendering/proxy_box.dart 140:14                              paint
[        ] packages/flutter/src/rendering/custom_paint.dart 608:11                           paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 187:12                                 paintChild
[        ] packages/flutter/src/rendering/proxy_box.dart 140:14                              paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 187:12                                 paintChild
[        ] packages/flutter/src/rendering/proxy_box.dart 140:14                              paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 187:12                                 paintChild
[        ] packages/flutter/src/rendering/proxy_box.dart 140:14                              paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 187:12                                 paintChild
[        ] packages/flutter/src/rendering/proxy_box.dart 140:14                              paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 139:10                                 _repaintCompositedChild
[        ] packages/flutter/src/rendering/object.dart 100:5                                  repaintCompositedChild
[        ] packages/flutter/src/rendering/object.dart 204:7                                  [_compositeChild]
[        ] packages/flutter/src/rendering/object.dart 185:7                                  paintChild
[        ] packages/flutter/src/rendering/box.dart 2795:14                                   defaultPaint
[        ] packages/flutter/src/rendering/custom_layout.dart 409:5                           paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 187:12                                 paintChild
[        ] packages/flutter/src/rendering/proxy_box.dart 140:14                              paint
[        ] packages/flutter/src/material/material.dart 551:11                                paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 187:12                                 paintChild
[        ] packages/flutter/src/rendering/proxy_box.dart 140:14                              paint
[        ] packages/flutter/src/rendering/object.dart 394:12                                 pushLayer
[        ] packages/flutter/src/rendering/proxy_box.dart 1922:14                             paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 187:12                                 paintChild
[        ] packages/flutter/src/rendering/proxy_box.dart 140:14                              paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 187:12                                 paintChild
[        ] packages/flutter/src/rendering/proxy_box.dart 140:14                              paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 187:12                                 paintChild
[        ] packages/flutter/src/rendering/proxy_box.dart 140:14                              paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 187:12                                 paintChild
[        ] packages/flutter/src/rendering/proxy_box.dart 140:14                              paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 139:10                                 _repaintCompositedChild
[        ] packages/flutter/src/rendering/object.dart 100:5                                  repaintCompositedChild
[        ] packages/flutter/src/rendering/object.dart 204:7                                  [_compositeChild]
[        ] packages/flutter/src/rendering/object.dart 185:7                                  paintChild
[        ] packages/flutter/src/rendering/proxy_box.dart 140:14                              paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 187:12                                 paintChild
[        ] packages/flutter/src/rendering/box.dart 2795:14                                   defaultPaint
[        ] packages/flutter/src/rendering/stack.dart 629:5                                   paintStack
[        ] packages/flutter/src/rendering/stack.dart 645:7                                   paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 187:12                                 paintChild
[        ] packages/flutter/src/rendering/proxy_box.dart 140:14                              paint
[        ] packages/flutter/src/rendering/proxy_box.dart 2162:11                             paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 187:12                                 paintChild
[        ] packages/flutter/src/rendering/proxy_box.dart 140:14                              paint
[        ] packages/flutter/src/rendering/proxy_box.dart 2723:13                             paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 187:12                                 paintChild
[        ] packages/flutter/src/rendering/proxy_box.dart 140:14                              paint
[        ] packages/flutter/src/rendering/proxy_box.dart 2723:13                             paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 187:12                                 paintChild
[        ] packages/flutter/src/rendering/proxy_box.dart 140:14                              paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 139:10                                 _repaintCompositedChild
[        ] packages/flutter/src/rendering/object.dart 100:5                                  repaintCompositedChild
[        ] packages/flutter/src/rendering/object.dart 204:7                                  [_compositeChild]
[        ] packages/flutter/src/rendering/object.dart 185:7                                  paintChild
[        ] packages/flutter/src/rendering/proxy_box.dart 140:14                              paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[   +1 ms] packages/flutter/src/rendering/object.dart 187:12                                 paintChild
[        ] packages/flutter/src/rendering/proxy_box.dart 140:14                              paint
[        ] packages/flutter/src/rendering/proxy_box.dart 3383:11                             paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 187:12                                 paintChild
[        ] packages/flutter/src/rendering/proxy_box.dart 140:14                              paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 187:12                                 paintChild
[        ] packages/flutter/src/widgets/overlay.dart 780:14                                  paintStack
[        ] packages/flutter/src/widgets/overlay.dart 798:7                                   paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 187:12                                 paintChild
[        ] packages/flutter/src/rendering/proxy_box.dart 140:14                              paint
[   +1 ms] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 187:12                                 paintChild
[        ] packages/flutter/src/rendering/proxy_box.dart 140:14                              paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 187:12                                 paintChild
[        ] packages/flutter/src/rendering/proxy_box.dart 140:14                              paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 187:12                                 paintChild
[        ] packages/flutter/src/rendering/shifted_box.dart 79:14                             paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 187:12                                 paintChild
[        ] packages/flutter/src/rendering/proxy_box.dart 140:14                              paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 187:12                                 paintChild
[        ] packages/flutter/src/rendering/proxy_box.dart 140:14                              paint
[        ] packages/flutter/src/rendering/proxy_box.dart 2595:13                             [_paintChildWithTransform]
[        ] packages/flutter/src/rendering/proxy_box.dart 2615:17                             paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 187:12                                 paintChild
[        ] packages/flutter/src/rendering/proxy_box.dart 140:14                              paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 187:12                                 paintChild
[        ] packages/flutter/src/rendering/box.dart 2795:14                                   defaultPaint
[        ] packages/flutter/src/rendering/stack.dart 629:5                                   paintStack
[        ] packages/flutter/src/rendering/stack.dart 645:7                                   paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 187:12                                 paintChild
[        ] packages/flutter/src/rendering/proxy_box.dart 140:14                              paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 187:12                                 paintChild
[        ] packages/flutter/src/rendering/proxy_box.dart 140:14                              paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 187:12                                 paintChild
[        ] packages/flutter/src/rendering/proxy_box.dart 140:14                              paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 187:12                                 paintChild
[        ] packages/flutter/src/rendering/view.dart 200:14                                   paint
[        ] packages/flutter/src/rendering/object.dart 2317:7                                 [_paintWithContext]
[        ] packages/flutter/src/rendering/object.dart 139:10                                 _repaintCompositedChild
[        ] packages/flutter/src/rendering/object.dart 100:5                                  repaintCompositedChild
[        ] packages/flutter/src/rendering/object.dart 975:29                                 flushPaint
[        ] packages/flutter/src/rendering/binding.dart 464:19                                drawFrame
[        ] packages/flutter/src/widgets/binding.dart 876:13                                  drawFrame
[        ] packages/flutter/src/rendering/binding.dart 328:5                                 [_handlePersistentFrameCallback]
[        ] packages/flutter/src/scheduler/binding.dart 1144:15                               [_invokeFrameCallback]
[        ] packages/flutter/src/scheduler/binding.dart 1082:9                                handleDrawFrame
[        ] packages/flutter/src/scheduler/binding.dart 998:5                                 [_handleDrawFrame]
[        ] lib/_engine/engine/platform_dispatcher.dart 963:13                                invoke
[        ] lib/_engine/engine/platform_dispatcher.dart 152:5                                 invokeOnDrawFrame
[        ] lib/_engine/engine.dart 262:45                                                    <fn>
[        ] The following RenderObject was being processed when the exception was fired: RenderViewport#54088:
[        ]   needs compositing
[        ]   creator: Viewport ← IgnorePointer-[GlobalKey#bf6c0] ← Semantics ← Listener ← _GestureSemantics ←
[        ]     RawGestureDetector-[LabeledGlobalKey<RawGestureDetectorState>#b9114] ← Listener ← _ScrollableScope
[        ]     ← _ScrollSemantics-[GlobalKey#6be06] ← RepaintBoundary ← CustomPaint-[GlobalKey#ce0af] ←
[        ]     _RawMouseRegion ← ⋯
[        ]   parentData: <none> (can use size)
[        ]   constraints: BoxConstraints(0.0<=w<=1680.0, 0.0<=h<=946.0)
[        ]   layer: OffsetLayer#b82ce DETACHED
[        ]   size: Size(1680.0, 946.0)
[        ]   axisDirection: down
[        ]   crossAxisDirection: right
[        ]   offset: ScrollPositionWithSingleContext#6619e(offset: 0.0, range: null..null, viewport: 946.0,
[        ]     ScrollableState, BouncingScrollPhysics -> BouncingScrollPhysics -> RangeMaintainingScrollPhysics,
[        ]     IdleScrollActivity#5a821, ScrollDirection.idle)
[        ]   anchor: 0.0
[        ] This RenderObject had the following descendants (showing up to depth 5):
[        ]     center child: _RenderSliverFloatingPersistentHeaderForWidgets#bab3c relayoutBoundary=up1 NEEDS-PAINT
[        ]       child: RenderSemanticsAnnotations#d737d relayoutBoundary=up2 NEEDS-PAINT
[        ]         child: RenderAnnotatedRegion<SystemUiOverlayStyle>#31501 relayoutBoundary=up3 NEEDS-PAINT
[        ]           child: RenderPhysicalModel#3358a relayoutBoundary=up4 NEEDS-PAINT
[        ]             child: _RenderInkFeatures#4fe7d relayoutBoundary=up5 NEEDS-PAINT
[        ]     child 1: RenderSliverToBoxAdapter#ba4a5 relayoutBoundary=up1 NEEDS-PAINT
[        ]       child: RenderFlex#c42c7 relayoutBoundary=up2 NEEDS-PAINT
[        ]         child 1: RenderConstrainedBox#7b66b relayoutBoundary=up3 NEEDS-PAINT
[        ]           child: RenderStack#a5e65 relayoutBoundary=up4 NEEDS-PAINT
[        ]             child 1: RenderFittedBox#9fabd relayoutBoundary=up5 NEEDS-PAINT
[        ]         child 2: RenderParagraph#82731 NEEDS-LAYOUT NEEDS-PAINT
[        ]           text: TextSpan
[        ] ════════════════════════════════════════════════════════════════════════════════════════════════════

Hi @sjosegarcia
Thanks for filing the issue
Your code seems to have unrelated pieces of code in your snippets, Can you please provide a complete reproducible minimal code sample with just Sliver -> Stack, and complete flutter run --verbose logs running the minimal code sample?
Thank you

I managed to take care of it. Closing.


workflow-event-bindings page support basehref

Summary

If the basehref is set, the placeholder address of the workflow-event-bindings page should also be added synchronously
Similarly, the Swagger-API docs needs to be handled

Message from the maintainers:
Love this enhancement proposal? Give it a 👍. We prioritise the proposals with the most 👍.

This is where this needs to be fixed:
https://github.com/argoproj/argo-workflows/blob/dbda60fc5c72c02729d98b4e5ff08f89a6bf428c/ui/src/app/workflow-event-bindings/components/workflow-event-bindings/workflow-event-bindings.tsx#L109
Should be like this:
https://github.com/argoproj/argo-workflows/blob/master/ui/src/app/apidocs/components/apiDocs.tsx#L10
Would you like to submit a PR? We can set you up with a mentor to help if you're interested.


selfhost/typechecker+codegen: Make optional/none_coalescing.jakt pass

Since you both preferred #834 I'll land that and close this. Thanks all


Offline support

Can I deploy this app with server on offline systems?

Hi @ben9992 ,
Not at the moment, but we are working on it. If you can share your use case (here or dm to sergey@sourcerer.io), I will appreciate it.
= Sergey


ErrorException: Undefined property: stdClass:: in /srv/dns-ui/templates/zone.php:334

Good day,
Busy with installing/testing/etc. and imported a zone file, which has remove and additions, I accepted the changes and then it gives this every time I try to access the zone. The zone list shows the zone have pending updates, but every time I try to access, it fails with this error
PHP message:<PHONE_NUMBER>: ErrorException: Undefined property: stdClass:: in /srv/dns-ui/templates/zone.php:334
 PHP message:<PHONE_NUMBER>: Stack trace:
 PHP message:<PHONE_NUMBER>: #0 /srv/dns-ui/templates/zone.php(334): exception_error_handler()
 PHP message:<PHONE_NUMBER>: #1 /srv/dns-ui/pagesection.php(69): include('...')
 PHP message:<PHONE_NUMBER>: #2 /srv/dns-ui/pagesection.php(57): PageSection->generate()
 PHP message:<PHONE_NUMBER>: #3 /srv/dns-ui/templates/base.php(81): PageSection->get()
 PHP message:<PHONE_NUMBER>: #4 /srv/dns-ui/pagesection.php(69): include('...')
 PHP message:<PHONE_NUMBER>: #5 /srv/dns-ui/views/zone.php(357): PageSection->generate()
 PHP message:<PHONE_NUMBER>: #6 /srv/dns-ui/requesthandler.php(64): require('...')
 PHP message:<PHONE_NUMBER>: #7 /srv/dns-ui/public_html/init.php(18): require('...')
 PHP message:<PHONE_NUMBER>: #8 {main} while reading response header from upstream, client: <IP_ADDRESS>, server: dns-ui.example.com, request: GET /zones/qquark.in HTTP/1.1, upstream: fastcgi://unix:/run/php/php8.2-fpm.sock:

see: https://github.com/operasoftware/dns-ui/pull/212

Fix merged. Thanks for the patch!


🚧Increase spacing between buttons on rect scene

I have done the items below . . .

[X] I have updated the title by replacing the '<title>' section.

Description
For the rectangle scene in the VelaptorTesting application, the 3 buttons on the bottom for gradient color control need to have its spacing increased so the buttons to do not touch.
The existence of buttons will probably be temporary and replaced with better controls as they are developed.  If it is easy, we could just re-invoke the code in the scene that determines the spacing upon button construction.  If we invoke that code to readjust the spacing every time 1 of the 3 buttons are clicked, they will automatically be readjusted every time and never render on top of each other.
Acceptance Criteria
This issue is finished when:

[ ] When the buttons do not over lap each other when the buttons' width increases
[ ] Code documentation added if required
[ ] Unit tests added
[ ] All unit tests pass

ToDo Items

[ ] Draft pull request created and linked to this issue
[X] Priority label added to issue (low priority, medium priority, or high priority)
[ ] Issue linked to the proper project
[X] Issue linked to proper milestone

Issue Dependencies
No response
Related Work
No response
Code of Conduct

[X] I agree to follow this project's Code of Conduct

I'd like to try to figure this one out.


Fix package dependency version

pinned mlprimitives to version 0.1.6.
changed tox 3.5 and 3.6 environments to python3.5 and python3.6.

outdated, will create another PR.


Choose a license (revisited)

There was an extensive discussion regarding cheat's license some time ago. At the time, it was decided that the best option was to dual-license cheat, because it was questionable whether it was possible to re-license it without contributors' explicit permission.
However, the dual-license - at most - made the best of a bad situation. It was a confusing compromise.
With the v3 re-write, we have a unique opportunity here: because the code is now 100% my own, the consent of others is no longer needed to change the license. That being said, now is the time to choose the best license for the project going forward.
Please share your thoughts regarding the appropriate license below. My goals regarding the license are:

To remain as "libre" and "gratis" as possible
To make it as painless as possible for upstream stakeholders to incorporate cheat into their distributions

(I'll note that I'm uncertain if it's possible to change the license of the cheatsheets repository, because it still contains numerous contributions from other authors. It may be stuck with the confusing dual-license, unfortunately.)

@TomasKorbar , @pirat89, I'm curious to get your perspective here. What is Red Hat's perspective on this kind of thing?

there is a difference in requirements for the license of the cheat application, and the license for the cheats themselves. for the cheats it is important that they can be used anywhere without risk, and therefore i'd recommend a BSD or MIT license for those.
for the cheat application any license would be fine, though using the same license for cheat examples and the application may be worth a consideration for simplicity's sake.

We cannot tell what is RH perspective on that. We acts here just as Fedora community members. From my previous experience, data cannot be licensed and cheatsheets are from my POV just data. So I guess we should talk only about license of the cheat source code. But I am not lawyer and I can be wrong.
Anyway, for me, both licenses are ok.

I was part of #347
since this is a matter of snippet-like stuff:
I advise the most minimal (short, to the point), portable (forward compatible to other open source licenses as well as private software), copy-paste friendly.
As for being copy-paste friendly, MIT:
stackoverflow, in 2016, decided to make code snippets MIT license: https://meta.stackexchange.com/questions/271080/the-mit-license-clarity-on-using-code-on-stack-overflow-and-stack-exchange

Double licensing with GPL and MIT

MIT is already forward compatible to GPL.
"Dual licensing" just calls intent of the project into question. Are you permissively licensed or not? If someone wanted to "pick GPL", they could copy MIT code into their GPL project, or fork the whole project and make it GPL.
If you wanted to do a contract where I buy a car from you, wouldn't it be a little odd we said, 'there's two contracts, radically different terms, you can switch any time'. It'd be a little murky what we're actually doing. Do I even own the car? Did I waive my right to hold you liable if it breaks? Do you own my house if I park it in my garage? (Why should the thought come to mind?)
Hopefully that analogy makes sense. Late by me 😆

Disclaimer
IANAL. Definitely not a copyright one.
Double licensing
This is moot now but as I understand it 1, as far as incorporating code under a specific license, while it would still have been finicky, it suffices to keep only the derivative under the original license and specifying which files fall under that.
This allows whatever other code you have written to stay under your chosen license, rather than having to (dual-)license the entire project.
Re-licensing

To remain as "libre" and "gratis" as possible

As for the license under which to continue, the main difference between the two licenses is in how much freedom any derivative project would have. Very broadly, GPL has many protections in place to ensure any derivative code and project is distributed under open source, while MIT allows any modified code to be distributed as anything.
It's basically an idealogical difference between what is more libre, allowing any derivative code to be used in more ways under less restrictions or to ensure that any code will be available under the same open-source license.
There are arguments for both sides and their relevance matters on a per project basis. Personally, I like to release smaller projects under MIT while any larger project I plan to maintain, and which are more interesting for hobby developers than companies, to be licensed under GPL.

To make it as painless as possible for upstream stakeholders to incorporate cheat into their distributions

This is entirely possible with both licenses, as long as they provide the license in some way. And, as they (usually) don't modify the code the main differences between these two licenses does not come up. The real issue is for developers and companies who want to use or fork your code and distribute it.
Additionally, provided all code is yours and you are the copyright holder, you are allowed to change the license at any time. Any previous copies will continue to be available on the old license though (and can thus be modified and distribute under the same old license).
Cheatsheet license
The re-licensing of contributed code is perhaps indeed a bit trickier and this is why a lot of projects require contributors to add a licensing notice to any new files (and in some cases even require copyright to be given over to a specific organisation).
As long as you are the only maintainer though, you are ultimately the one to merge code into the project, and there definitely is a case that any pull requests come with the implicit agreement that it is to be licensed under the same license as the rest of project. (Especially if the README says something to the effect of "all code is licensed under such and such license"). I doubt anyone will sue you over any of their contributions anyway.
As previously discussed, any code can be re-licensed under a different license as long as you own the code (which you arguably do).
Replies
@tony

MIT is already forward compatible to GPL

But not backwards, I don't know which code was initially what, but you can't re-license GPL code as MIT as it has many restrictions on use and deviation of the original code, while the MIT effectively has none.
As for shortness, GPL also has a shorter license notice to be added code files of the project. As long as the full license is provided somewhere in the project referencing this will be enough as a file header of other files.

1: Admittedly I have only personally done this with BSD licensed code.

Hi @chrisallenlane,
Unfortunately i do not have a recommendation here for you. And as @pirat89 said we are here as a members of Fedora community. I'm ok with both GPL and MIT. The choice is yours:)

Thanks to everyone that commented here. I read and reflected on everything that was shared.
I have decided to license cheat under the MIT license, which I just committed to the project. For those interested, I made that decision for the following reasons:

My understanding of the GPL "copyleft" license is that it intends to promote open-source software by mandating that "derivative works" of GPL-licensed software must itself be open-sourced. Given that cheat will likely never have derivative work, however, I don't believe that line of reasoning is applicable here. In our case, I believe we do a better job of promoting open-source by allowing others to use our open-source software, which is made easier by the MIT license.

While I believe that cheat is an enormously useful piece of software, it is in no way technologically exceptional. Should an organization desire to use cheat for non-free purposes, it would be a minor undertaking to re-implement it from scratch, thus bypassing our GPL-ed intentions with little effort. That being the case, the GPL does little for us.

Beyond the above, I have zero interest in legally enforcing a GPL license. If a licensee violated the terms of the license, I would not have the time, interest, or capital necessary to take the offender to court.

With all of that said, I believe the MIT is the best license for cheat going forward.
Thanks again to everyone that shared feedback. With the license committed, I'm now closing this as resolved.


German Post DE new Email Subject

Describe the bug
German Post DE "Briefankündigungen" never get detected due to a new subject "Ein Brief ist unterwegs zu Ihnen"
It could be an alteration but I can't say for sure
If I add it to const.py the Items get detected
"post_de_delivering": {
    "email": [
<EMAIL_ADDRESS>    ],
    "subject": [
        "Ein Brief kommt in Kürze bei Ihnen an",
        "Ein Brief ist unterwegs zu Ihnen",
    ],

Screenshots

If you'd like to submit a PR based on your changes that'd be amazing.

I don't know how, I'm sorry.

Whoops, forgot the WIP tag.

Should be fixed in the next release. Thanks!


"failed to start primary task" with Julia 1.9 and nthreads(:interactive) > 0

Reproducible on Julia 1.9 with:
julia --threads 2,1 -e "using FoldsThreads"
┌ Error: failed to start primary task
└ @ FoldsThreads.Implementations ~/.julia/packages/FoldsThreads/aWnRU/src/root_spawners.jl:34
ERROR: InitError: TaskFailedException

    nested task error: BoundsError: attempt to access 2-element Vector{Union{Nothing, Channel{Any}}} at index [3]
    Stacktrace:
     [1] setindex!
       @ ./array.jl:969 [inlined]
     [2] (::FoldsThreads.Implementations.var"#29#31")()
       @ FoldsThreads.Implementations ~/.julia/packages/FoldsThreads/aWnRU/src/root_spawners.jl:62
     [3] macro expansion
       @ ~/.julia/packages/FoldsThreads/aWnRU/src/utils.jl:6 [inlined]
...

It's caused by the assumption that the threadids are 1:nthreads, which is in case of nthreads(:interactive) > 0 not valid anymore:
https://github.com/JuliaFolds/FoldsThreads.jl/blob/6bc5651bbbfac60df4bc50ed84b4de2a9f9817a2/src/root_spawners.jl#L58-L64
EACH_THREAD is too short since the ids are distributed like this:
[1:nthreads(:interactive); nthreads(:interactive) .+ (1:nthreads())]

@tkf do you have any clue here?

for a start, we can simply change it to maxthreadid()
> julia --threads 2,1 -e "println(Threads.nthreads())"
2
> julia --threads 2,1 -e "println(Threads.maxthreadid())"
3

after that, we can add a init!() function like
https://github.com/JuliaConcurrent/MultiThreadedCaches.jl/blob/ad3f8ae91083faf830b10c517a241fbd2cbae9a6/src/MultiThreadedCaches.jl#L81-L86
and user can call this function whenever their threading situation changes (through adoption)

Any fixes are going to have to be implemented in https://github.com/JuliaFolds2/FoldsThreads.jl, so lets continue in https://github.com/JuliaFolds2/FoldsThreads.jl/issues/1

Fixed in https://github.com/JuliaFolds2/FoldsThreads.jl/pull/2


Tilescssfixes

Coverage increased (+0.005%) to 51.449% when pulling 55e8157322c3ee44f1dfb96bec53563afcf6b2bd on tilescssfixes into e155e6c2f043a949869ee8146d4b09feb21be42d on master.


MetaData requests contain no content at all

PR Description
When sending or receiving metadata requests, the request has no content at all - even the length prefix is omitted.
Fixed Issue(s)
Partial fix for #1992
Even with this Teku is unable to request metadata from Lighthouse correctly (but Lighthouse can request from Teku).

May be it's better to handle empty payload case somewhere in encoders/decoders code like LengthPrefixedEncoding and LengthPrefixedPayloadDecoder ?


Ian edits

Please add selected to Marathon-lb and Zeppelin package.json so that it is included for our local universe download and eases users
https://github.com/mesosphere/universe/tree/version-3.x/docker/local-universe
@pyronicide

If this is only for the sake of the local universe image the build params for local universe should be updated rather than the global package state.

@ianpward as per @BenWhitehead's comment, this PR can be closed.
Note: All PR's before October will be closed out by the end of this month.

@ianpward closing this PR


Remove out-of-date info about cursor hold

As per FixCursorHold plugin's readme and the neovim issue this has been fixed.

Is this something that can be merged into Neovim's core?

Potentially, I've not thought to raise the point to be honest :sweat_smile:


[Question] How can I slow the mouse speed in GN mode?

win-vind 4.2.1

In GUI normal mode, my mouse moves super fast.
One stroke of h,j,k,l leaves half across the screen.
I wrote this in my ~/.win-vind/.vindrc file,
set cursor_accel =5
set cursor_maxv = 1
set cursor_tweight = 10

but nothing changed.
Am I doing wrong something? Need help!

win-vind reproduces the physical acceleration motion, so it has a lot of parameters and is difficult to adjust optimally.
Therefore, you have to start with the default values and adjust only the cursor_accel. The higher the value makes the faster movement, and the smaller does slower. In command mode, you can adjust it directly, such as :set cursor_accel=100, and know the current value with :set cursor_accel?.
Then, determine the time units of motion with cursor_tweight. The smaller gives the faster movement because the mouse is moved in smaller time units. The larger makes it slower since it is done in rough time intervals.
If you have a better idea with fewer parameters and more natural movement, please post a pull request.
Thanks.


Create YAML files to deploy the operator itself

Currently the k8s operator template do not create any YAML deployment files to deploy the operator itself.
A basic set of YAML files should be generated.

Closed with #22


fix(macro): fix the group_peripherals!() macro

I see an added comma, but this compiled before w/o error on the only user we have. Could you say a word or two on what this fixes?


for jsonmodels 2.1.5 init super before setattr

Since JsonModels 2.1.5, jsonmodels.fields.BaseFields request in set method the attribute _cache_key created by constructor in jsonmodels.models.Base.
So _cache_key must be available before set _cuuid in TinyJsonModel constructor.

@GaetanF Thanks for the PR and sorry for the delay in doing his merge.


Major Postgres Version upgrade

The new timescaledb images contains pg 12-15 binaries, enabling using the newer images with older databases. I just successfully updated the image, retaining my pg14 data.
It would be super nice to be able to upgrade my cluster now to pg15 and then switch to the newer database binary by using pg_upgrade.
Is there any way of doing this or can we enable the helm chart to have some sort of in-place upgrade procedure?

Yup same question ^. I need to use the pg15 timescale image but the major version only goes up till 14!

Same question here. I'm in pg12 and I want to upgrade to continue deploy future timescaledb versions


UVI unit not supported

I have a device with a LTR-390 ambient light and UV sensor, and the binding it emits this warning every few seconds:
2024-09-01 21:44:17.986 [WARN ] [ernal.message.AbstractMessageHandler] - Unit 'UVI' unknown to openHAB, returning DecimalType for state '0.0' on channel 'esphome:device:mtr1:ltr390_uv_index'

I would guess it should be treated as a Number.

UVI is not listed as a valid unit here: (which is linked from esphome doc):  https://www.home-assistant.io/integrations/sensor/#device-class
Solution: In your esphome config, set device_class and unit to valid values.
Ie setting device_class to generic_number and unit to None or empty would treat the values as pure numbers (Number) without any quanity information.

Ok but this device (Apollo MTR-1) is built for HomeAssistant so it definitely works there. Perhaps it's sensible to default to Number for unknown units?
It would also be helpful to only warn on this once, not every few seconds.

Could you give the latest version a spin @marcusb ?

Yes, appears to be fixed. Thank you!


[review-pending] chore(docs): revise makeExcerpt mixin for DRYer ref to examples

Avoiding ts in the file path will make it a bit easier to construct the path to the Dart version (by simply appending to the path rather than having to massage the path).
This update allows us to be more DRY when referencing examples and excerpts. E.g.,
+makeExcerpt('quickstart/ts/app/app.component.ts', 'import', 'app/app.component.ts (import)')

can now be just
+makeExcerpt('app/app.component.ts', 'import')

Also defined new mixin named makeExample1, for examples, using this new argument scheme. The original makeExample has been left untouched.
Applied new mixins to quickstart.

@kwalrath can you have a look?

LGTM. @wardbell do you have an opinion? I wonder if the name, makeExample1, could be clearer. makeExample2? makeSimpleExample?

Or perhaps makeLocalExample? I personally don't like example1, example2 kind of names because you can easily forget which is which.

I like but the name has to change.  makeLocalExample isn't bad. Or makeProjectExample.  Either works for me ... anything except example1.
Happy to accept after that change.

I agree about the name, but figured I run by the basic idea first.
I originally thought of: makeEg as a short name (to represent that is takes the short argument list).
Otherwise, makeProjExample? (I'm trying to keep the name reasonably short.)

Then makeProjExample it is.
@kwalrath @wardbell : ready to merge.

OK, I'll merge a little later this morning. Thanks, Patrice!


Routing over unit capacitors

@soneryaldiz @Lastdayends @meghna09 @desmonddak @parijatm @arvuce22 @kkunal1408
Here is the case I was discussing yesterday in the team meeting. We are routing signals in metal5 over the top of the unit capacitors. Is this okay, or should we block off unit caps to force routing in the channels between the unit capacitors.
Let's discuss this using this GItHub issue. (If you can't see the picture below, view this issue using the GitHub web interface.)

Also the dummy flag and dummy gnd connection.
1 dummy flag in constraint to indicate whether dummy cap is needed. I can
update the constraint and coding for this part.
3 dummy gnd connection need power net in upper hierarchy to be connected. I
can update coding for this part. But need UMN team to add power net in
verillog file.
Yaguang
Steve Burns<EMAIL_ADDRESS>于 2019年10月23日周三 上午10:57写道：

@soneryaldiz
https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_soneryaldiz&d=DwMFaQ&c=u6LDEWzohnDQ01ySGnxMzg&r=ZMUCBc0sWFUe5MzbQ3jL6w&m=NT_0fqt5uEEWUUwO29nbNoSXQrxJcZdhawMqx96ZCgU&s=mdMD2ytpB9UCMc8XW_vdTjov0g1EyeLoj399TxJjaHo&e=
@Lastdayends
https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_Lastdayends&d=DwMFaQ&c=u6LDEWzohnDQ01ySGnxMzg&r=ZMUCBc0sWFUe5MzbQ3jL6w&m=NT_0fqt5uEEWUUwO29nbNoSXQrxJcZdhawMqx96ZCgU&s=xX2q3-Aoh3_AOhdZrIzfN9q5GE6KYZy6JrsNI_ZwiFY&e=
@meghna09
https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_meghna09&d=DwMFaQ&c=u6LDEWzohnDQ01ySGnxMzg&r=ZMUCBc0sWFUe5MzbQ3jL6w&m=NT_0fqt5uEEWUUwO29nbNoSXQrxJcZdhawMqx96ZCgU&s=0CkQHFw-mJlEWwEvX26AOY5rfn4dqSXFucrlzk-xLsU&e=
@desmonddak
https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_desmonddak&d=DwMFaQ&c=u6LDEWzohnDQ01ySGnxMzg&r=ZMUCBc0sWFUe5MzbQ3jL6w&m=NT_0fqt5uEEWUUwO29nbNoSXQrxJcZdhawMqx96ZCgU&s=TWye41Dl3YY2sNu9GbBTlrnSA4QW5gOkPyOvz9W-_gc&e=
@parijatm
https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_parijatm&d=DwMFaQ&c=u6LDEWzohnDQ01ySGnxMzg&r=ZMUCBc0sWFUe5MzbQ3jL6w&m=NT_0fqt5uEEWUUwO29nbNoSXQrxJcZdhawMqx96ZCgU&s=E8c2HDFh6s7SeJNRmpw2rB3FwDIGM4IPPUJdmxB4zB8&e=
@arvuce22
https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_arvuce22&d=DwMFaQ&c=u6LDEWzohnDQ01ySGnxMzg&r=ZMUCBc0sWFUe5MzbQ3jL6w&m=NT_0fqt5uEEWUUwO29nbNoSXQrxJcZdhawMqx96ZCgU&s=tHQNRIBnaTmWC3swuxvigZUuPMA34W2EZ71n8RrphqQ&e=
@kkunal1408
https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_kkunal1408&d=DwMFaQ&c=u6LDEWzohnDQ01ySGnxMzg&r=ZMUCBc0sWFUe5MzbQ3jL6w&m=NT_0fqt5uEEWUUwO29nbNoSXQrxJcZdhawMqx96ZCgU&s=CM_RNIJS0gwQzKwii5GmZNgKREf0Kj-aZcinhd8g_ls&e=
Here is the case I was discussing yesterday in the team meeting. We are
routing signals in metal5 over the top of the unit capacitors. Is this
okay, or should we block off unit caps to force routing in the channels
between the unit capacitors.
Let's discuss this using this GItHub issue. (If you can't see the picture
below, view this issue using the GitHub web interface.)
[image: Screenshot from 2019-10-23 08-52-25]
https://urldefense.proofpoint.com/v2/url?u=https-3A__user-2Dimages.githubusercontent.com_1512574_67411571-2Db0a21580-2Df572-2D11e9-2D97e4-2Dbebbb363a071.png&d=DwMFaQ&c=u6LDEWzohnDQ01ySGnxMzg&r=ZMUCBc0sWFUe5MzbQ3jL6w&m=NT_0fqt5uEEWUUwO29nbNoSXQrxJcZdhawMqx96ZCgU&s=00BuPhOe6KRYJqhfnCgcrq6fthnBZ6h0VG3oxIxdDY0&e=
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_ALIGN-2Danaloglayout_ALIGN-2Dpublic_issues_218-3Femail-5Fsource-3Dnotifications-26email-5Ftoken-3DAKIMLZUCYTER3VJPS2GC7OTQQBX7NA5CNFSM4JED4RBKYY3PNVWWK3TUL52HS4DFUVEXG43VMWVGG33NNVSW45C7NFSM4HT3WBPA&d=DwMFaQ&c=u6LDEWzohnDQ01ySGnxMzg&r=ZMUCBc0sWFUe5MzbQ3jL6w&m=NT_0fqt5uEEWUUwO29nbNoSXQrxJcZdhawMqx96ZCgU&s=78YBC4P3cWBroYg_h5gSLe3sEi6T_TXi-p6bLcRjDm8&e=,
or unsubscribe
https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_notifications_unsubscribe-2Dauth_AKIMLZQRCRNJ4MWMBH2A3XLQQBX7NANCNFSM4JED4RBA&d=DwMFaQ&c=u6LDEWzohnDQ01ySGnxMzg&r=ZMUCBc0sWFUe5MzbQ3jL6w&m=NT_0fqt5uEEWUUwO29nbNoSXQrxJcZdhawMqx96ZCgU&s=EZr3uhEnnf4nFxHx1Za1jH947ugUZ2mISm797wk-dww&e=
.

@kkunal1408
I think we want in the verilog file something like:
Cap_60fF c0 ( .MINUS(net63), .PLUS(net72), .MINUS_DUMMY( vss), .PLUS_DUMMY( vss));

and
Cap_30fF_Cap_60fF c1_c3 ( .MINUS1(net67), .P vss)LUS1(net63), .MINUS2(Voutn), .PLUS2(Vin_ota), .MINUS_DUMMY( vss), .PLUS_DUMMY( vss) );

Currently, there is no reference to the DUMMY terminals.
I think we want to reference both dummy terminals because that makes them like the other capacitors in the array, and we can use the existing flow to wire them together.

@Burns, Steven M<EMAIL_ADDRESS>@Kishor Kunal
<EMAIL_ADDRESS>Should vss be global gnd or gnd inner the switched capacitor combination?
If global gnd, then .minus_dummy(vss) and .plus_dummy(vss) are not
necessary. By default, any dummy pin will be connected to global gnd (power
routing). In this case, global power net should be provided in verilog file.
If gnd inner the switched capacitor combination, to keep consistent, then
when generating the verilog file, the .minus_dummy pin should be in verilog
file and the connection relationship should be indicated with the
.minus_dummy as .minus_dummy(vss). Also, since we are going to have a
dummy_flag to control whether dummy cap is needed or not. The dummy_flag
should also keep consistent with .minus_dummy in verilog file.
Yaguang
On Wed, Oct 23, 2019 at 3:17 PM Steve Burns<EMAIL_ADDRESS>wrote:

@kkunal1408
https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_kkunal1408&d=DwMCaQ&c=u6LDEWzohnDQ01ySGnxMzg&r=ZMUCBc0sWFUe5MzbQ3jL6w&m=xc4KFzy6qKzGEpNwIUeiCqGxRnC2j811f3KBnIPIFYo&s=jbVN9yaozDhYQbMh3FwzzAWiRAb89-L_AgKrEz-xQ8g&e=
I think we want in the verilog file something like:
Cap_60fF c0 ( .MINUS(net63), .PLUS(net72), .MINUS_DUMMY( vss), .PLUS_DUMMY( vss));
and
Cap_30fF_Cap_60fF c1_c3 ( .MINUS1(net67), .P vss)LUS1(net63), .MINUS2(Voutn), .PLUS2(Vin_ota), .MINUS_DUMMY( vss), .PLUS_DUMMY( vss) );
Currently, there is no reference to the DUMMY terminals.
I think we want to reference both dummy terminals because that makes them
like the other capacitors in the array, and we can use the existing flow to
wire them together.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_ALIGN-2Danaloglayout_ALIGN-2Dpublic_issues_218-3Femail-5Fsource-3Dnotifications-26email-5Ftoken-3DAKIMLZXFNFGXQSTQSUF4ZKTQQCWPHA5CNFSM4JED4RBKYY3PNVWWK3TUL52HS4DFVREXG43VMVBW63LNMVXHJKTDN5WW2ZLOORPWSZGOECCXP3Y-23issuecomment-2D545617903&d=DwMCaQ&c=u6LDEWzohnDQ01ySGnxMzg&r=ZMUCBc0sWFUe5MzbQ3jL6w&m=xc4KFzy6qKzGEpNwIUeiCqGxRnC2j811f3KBnIPIFYo&s=MGwB6inaTsyECSK_WcZI-MHx6qFM16tspZ_0o4yvIcc&e=,
or unsubscribe
https://urldefense.proofpoint.com/v2/url?u=https-3A__github.com_notifications_unsubscribe-2Dauth_AKIMLZTQBWV4DD4ROHQ35JLQQCWPHANCNFSM4JED4RBA&d=DwMCaQ&c=u6LDEWzohnDQ01ySGnxMzg&r=ZMUCBc0sWFUe5MzbQ3jL6w&m=xc4KFzy6qKzGEpNwIUeiCqGxRnC2j811f3KBnIPIFYo&s=Ejeox8SfmvsJNVe3qWQZVX-SW68BAGTlqifwI0i1HXs&e=
.

Dummy capacitors should be connected to analog gnd.
No consensus yet on whether to route over or between capacitors. To discuss on Friday.

@arvuce22 to tag the relevant PR & close this.

Resolved in #830


Add TargetAccount field to "Multiple Password resets by User" and "Process" field to "Excessive Windows logon failures"

I think it would be a good option to add the "TargetAccount" field to the "Multiple Password resets by User" rule, in order to see which account the password was tried to change at a glance.
Also, to add the "Process" field to "Excessive Windows logon failures" rule.

Is it necessary any more changes or can the PR be closed? @ashwin-patil


feat: remove unnecessary conversion from Multiaddr to IP

Gossipsub currently polls connection manager frequently to figure what IPs each peer connection has. This is very inneficient and causes performance issues in Lodestar

Similar to https://github.com/ChainSafe/discv5/pull/214

Instead js-libp2p should follow a similar pattern to rust-libp2p, which injects an AddressChange event into protocols. See https://github.com/sigp/rust-libp2p/blob/a3dec471c046127e8e0d88bc89a881affb56a76c/protocols/gossipsub/src/behaviour.rs#L3282
@achingbrain is js-libp2p emitting a similar event already? Where could this be added if not?

Good change, here's the event you're looking for: https://github.com/libp2p/js-libp2p-interfaces/blob/master/packages/interface-peer-store/src/index.ts#L209

Codecov Report
Base: 83.58% // Head: 83.26% // Decreases project coverage by -0.31% :warning:

Coverage data is based on head (f23795f) compared to base (129b9cd).
Patch coverage: 64.62% of modified lines in pull request are covered.

Additional details and impacted files
@@            Coverage Diff             @@
##           master     #369      +/-   ##
==========================================
- Coverage   83.58%   83.26%   -0.32%
==========================================
  Files          47       48       +1
  Lines       11771    11779       +8
  Branches     1266     1264       -2
==========================================
- Hits         9839     9808      -31
- Misses       1932     1971      +39

Impacted Files
Coverage Δ

src/index.ts
69.67% <37.50%> (-0.70%)
:arrow_down:

src/score/peer-score.ts
85.94% <53.84%> (-1.82%)
:arrow_down:

src/utils/multiaddr.ts
86.95% <86.95%> (ø)

test/peer-score.spec.ts
95.32% <94.73%> (-0.07%)
:arrow_down:

src/score/compute-score.ts
90.81% <100.00%> (ø)

src/score/scoreMetrics.ts
79.53% <100.00%> (ø)

src/utils/set.ts
100.00% <100.00%> (ø)

test/scoreMetrics.spec.ts
100.00% <100.00%> (ø)

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.

:heavy_check_mark: looks good! Can't approve since it's my PR


Feature/zephyr support

Add necessary file structure and build directives in order to be used withing the Zephyr build systems.

Hi! Can someone give a hint what exactly is going wrong?

Hi @dp7hgh7, we have not yet reviewed this PR but will be taking a look at it. Thank you for your contributions!

Hi @dp7hgh7 just to give an update here and be as transparent as possible. Additions such as these come with an expectation of support from our team which includes both the code and validating that it works (meaning continuous build pipeline validation). Ideally we would like to support as many platforms as are out there but each addition carries with it future support time and engineering hours. We are evaluating the costs of future support and current build system additions which would make this a well supported feature.
Hopefully that makes sense...didn't want to make it feel as though we were ignoring it. Thanks for the effort!

Hi, hanks for the heads up so far! I'm currently implementing a generic Azure integration for a customer of mine which I intend to contribute to mainline Zephyr. Therefore I will maintain this integration anyway. Only question is, where :-D.
Caspar

Hi @dp7hgh7, I am currently trying zephyr with IoT Hub and I am wondering if you have sample code or even documentation / tutorial you can share :)

@sebastianspross You might want to post this question directly the in the forked repo. https://github.com/dp7hgh7/azure-sdk-for-c/tree/feature/zephyr-support

Hi @sebastianspross, I have some old library code which at least worked back when I was on the project. I think I can share this but might take a few days. If you have, reach out to me on Zephyrs Discord (same username) since it's a bit easier to sync.