Support for Flutter Web Debugging in VS Code

Is your feature request related to a problem? Please describe.

Yes, it is related to a problem. I'm always frustrated when I have to manually copy the localhost URL into the VS Code instance to debug a Flutter web app. This process is inefficient and lacks the hot reload and restart features available in other debugging scenarios.
Describe the solution you'd like:

I would like the Microsoft Edge Tools for VS Code extension to support Flutter web debugging directly within VS Code. Specifically, I want to be able to run a Flutter web app by pressing F5 or starting a debug session and have it launch in the embedded Edge browser with full support for hot reload and restart features.
Describe alternatives you've considered:

The alternative I've considered is the current method of manually copying the localhost URL into the VS Code instance, but this is not efficient. Another alternative is using external tools or browsers, but these also lack the integrated experience and seamless hot reload functionality.
Additional context:

This feature would significantly improve the development workflow for Flutter web apps, making it more efficient and integrated. It would be a valuable addition for developers using Flutter with VS Code.

Thanks for filing this feature request.


Early return doesn't refine value in classes methods

Test case
Flow test case
// doesn't work

class Test1 {
  map = null

  test (): void {
    if (!this.map) return

    this.map.one()
    this.map.two()
  }
}

// works

class Test2 {
  map = null

  test (): void {
    if (!this.map) return

    this.map.one()
  }
}

const map = null

// works

function test3 (): void {
  if (!map) return

  map.one()
  map.two()
}

Expected
To yield no errors, since code after early return will never execute
Received
Test1 will yield Flow error:
Cannot call `this.map.two` because property `two` is missing in null [1]

despite the code after if (!this.map) return will never execute.
Note that error appears only if two different methods on this.map executed and does appear exlusively within classes methods.

Any function call invalidates refinements.
As far as Flow knows, your this.map.one() call might have the side
effect of resetting this.map to null.
As you can see, binding map before the execution prevents the error.

I know and that would be true, if not the fact that code after return with a null check will never execute? So, side effects will ever occur.
That error would make sense if we'd had following code:
class Test1 {
  map = null

  test (): void {
    if (this.map) {
      this.map.one()
      this.map.two()
    }
  }
}

But doesn't make sense with an early return.

I know and that would be true, if not the fact that code after return with a null check will never execute. So, side effects will ever occur.
That error would make sense if we'd had following code:
[…]
But doesn't make sense with an early return.

Your original code
class Test1 {
  map = null

  test (): void {
    if (!this.map) return

    this.map.one()
    this.map.two()
  }
}

is exactly equivalent to the second version
class Test1 {
  map = null

  test (): void {
    if (this.map) {
      this.map.one()
      this.map.two()
    }
  }
}

and in particular if in either version this.map.one() mutates this
such that its map argument is null (which it might) then the
following line this.map.two() will execute and error. The fact that
there has previously been an early-return is not relevant.
To be entirely explicit: you did not define the type of map. I can
provide the following definition that causes an error with your exact
code:
// @flow

class MyMap {
  target: Test1;
  constructor(target: Test1) {
    this.target = target;
  }
  one(): void {
    this.target.map = null;
  }
  two(): void {}
}

class Test1 {
  map = null;
  test(): void {
    if (!this.map) return;
    this.map.one();
    this.map.two();
  }
}

const test = new Test1();
test.map = new MyMap(test);
test.test();

This code raises “TypeError: Cannot read property 'two' of null” on the
call to this.map.two().

@wchargin is correct. thanks for the help!

Yeap, you're right after all. For some reason, I was under impression that early return should prohibit execution of further code completely, but I realized that if this.map won't be null, it will pass early return and might error on the second call.
I'm sorry for the confusion. You're explanation just took my thoughts in the wrong direction...


Multiple subnets on one Interface

Versions: OPNsense 17.1.4-amd64FreeBSD 11.0-RELEASE-p8OpenSSL 1.0.2k 26 Jan 2017
We have a customer who wants to migrate from Watchguard to OPNsense and he has multiple subnets assigned to one interface. Is there any way to configure something alike with OPNsense? I wasn't able to find a corresponding option.

under Firewall: Virtual IPs, IP Alias.
Upgrade to 17.7 if you can, 17.1 is no longer receiving stable updates.

Franco, thank you.

:)


Bad interaction between semantics trees and device_pixel_ratio on Fuchsia

This is a tracking bug for a Fuchsia-internal bug: https://bugs.fuchsia.dev/p/fuchsia/issues/detail?id=55485

cc @chunhtai --- @dnfield said you may be able to help with this. Thanks!

@kf6gpe and @Hixie I have marked as P0 as per @teisenbe suggestion. This seems to be a high risk issue that we should fix ASAP.

Quick update here as well - Fuchsia applies a transform right below the root to account for DPI, and is the only embedder that does so. A11y bridge has to account for that.

Current status: just set up a running device, still working on the fix. I currently target fixing this issue by the end of this week


add lvds support and new pll module ports

This PR matches to https://github.com/trabucayre/fpgalibs/pull/1.
TMDS signals are differential pairs using CC_LVDS_OBUF instances to reduce internal overhead.
Tested with latest toolchain binaries.

Applied!
Thanks @pu-cc !


WIP Add external symbols for typechecking

for testing, needs a js-slang push first
Description
Please include a summary of the change and which issue is fixed. Please also include relevant motivation and context. List any dependencies that are required for this change.
Fixes # (issue)
Type of change

[x] Bug fix (non-breaking change which fixes an issue)

How to Test
Load a library using the dropdown (and not by import), type a constant from that library and ctrl shift m to typecheck. There should not be an error saying that it is undefined.
Checklist

[x] I have tested this code

Pull Request Test Coverage Report for Build 6460

0 of 1 (0.0%)  changed or added relevant line in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage decreased (-0.01%) to 32.246%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

src/commons/editor/Editor.tsx
0
1
0.0%

Totals

Change from base Build 6439:
-0.01%

Covered Lines:
1869

Relevant Lines:
5406

💛  - Coveralls

This is a hopelessly outdated PR, and addresses a legacy component of the Source Academy: external symbols. The new feature is modules.


RKE2 and K3S - KDM Update for K8s February 2024 patch release for Rancher 2.7

KDM Updates

New Kubernetes Version
Min Rancher Version
Max Rancher Version

v1.26.14+rke2r1
v2.7.5-alpha1
v2.7.99

v1.27.11+rke2r1
v2.7.11-alpha1
v2.7.99

v1.26.14+k3s1
v2.7.5-alpha1
v2.7.99

v1.27.11+k3s1
v2.7.11-alpha1
v2.7.99

KDM Branch
dev-v2.7-2024-02-patches
Chart Changelog

Chart Name
New Version
Affected Kubernetes Version(s)

rke2-cilium
1.15.100
v1.26.14+rke2r1, v1.27.11+rke2r1

rancher-vsphere-csi
3.0.1-rancher101
v1.26.14+rke2r1, v1.27.11+rke2r1

rke2-calico
v3.27.002
v1.26.14+rke2r1, v1.27.11+rke2r1

rke2-calico-crd
v3.27.002
v1.26.14+rke2r1, v1.27.11+rke2r1

rke2-canal
v3.27.0-build2024020601
v1.26.14+rke2r1, v1.27.11+rke2r1

rke2-coredns
1.29.001
v1.26.14+rke2r1, v1.27.11+rke2r1

rke2-multus
v4.0.2-build2024020800
v1.26.14+rke2r1, v1.27.11+rke2r1

rke2-metrics-server
2.11.100-build2023051513
v1.26.14+rke2r1, v1.27.11+rke2r1

harvester-csi-driver
0.1.1700
v1.26.14+rke2r1, v1.27.11+rke2r1

Argument Changelog

Argument Name
Affected Kubernetes Version(s)

cni: flannel
v1.26.14+rke2r1, v1.27.11+rke2r1

Additional Notes
PRs:

RKE2 Flannel Addition: https://github.com/rancher/kontainer-driver-metadata/pull/1347
RKE2 Patches w/ charts: https://github.com/rancher/kontainer-driver-metadata/pull/1344
K3s Patches: https://github.com/rancher/kontainer-driver-metadata/pull/1333

This has been validated by the rke2 QA team, including upgrade of imported clusters and provisioning clusters. Screenshot to show versions:

Wanted to include a few more screenshots.
2.7.10 (see no v1.27.11 versions):

Also see no flannel available unless 1.26 is selected:


Bluetooth 4.2 question

This is more of a question on top of this question:
Q. Does this support Bluetooth v2?
No - please read about bluetooth specifications before using this library. LE (Low Energy) is part of the v4.0 specification.
Does this mean this library will not work with v4.2 of Bluetooth?  When I use this framework to connect to our raspberry pi devices I am able to connect just fine on the Raspberry PI 3 Model B which is Bluetooth v4.0 whereas Raspberry PI 3 Model B+ is Bluetooth v4.2.
Would it be that be the issue to why I am struggling to keep a connection to the B+ device?

BLE is part of specification v4.x +

That is what I thought, thanks!  I am just trying to rule out the issues to why it's not working on the device


Linux Arm: Chinese font and Emojis are not being rendered

Steps to reproduce

Have an ARM machine
install Linux desktop
install flutter
run minimal code sample app with 鉴 and/or 💙 in a text widget or textfield widget
See a lot of empty squares

Expected results
Both Emojis and Chinese letters should be rendered just like on AMD64 Linux machines!
Actual results
Both Emojis and Chinese letters are not rendered just like on AMD64 Linux machines and show empty squares instead!
Code sample
Code sample
import 'package:flutter/material.dart';

void main() {
  runApp(const MainApp());
}

class MainApp extends StatelessWidget {
  const MainApp({super.key});

  @override
  Widget build(BuildContext context) {
    return const MaterialApp(
      home: Scaffold(
        body: Center(
          child: Text('鉴 💙!'),
        ),
      ),
    );
  }
}

Screenshots or Video

Screenshots / Video demonstration
Linux Arm:

Linux AMD64:

Apple ARM:

Logs
Logs
[Paste your logs here]

Flutter Doctor output
Doctor output
ub@ub:~/fdfdsfsdf$ flutter doctor -v
[✓] Flutter (Channel stable, 3.16.5, on Ubuntu Noble Numbat (development branch) 6.5.0-9-generic, locale de_DE.UTF-8)
    • Flutter version 3.16.5 on channel stable at /home/ub/development/flutter
    • Upstream repository https://github.com/flutter/flutter.git
    • Framework revision 78666c8dc5 (vor 10 Tagen), 2023-12-19 16:14:14 -0800
    • Engine revision 3f3e560236
    • Dart version 3.2.3
    • DevTools version 2.28.4

[✗] Android toolchain - develop for Android devices
    ✗ Unable to locate Android SDK.
      Install Android Studio from: https://developer.android.com/studio/index.html
      On first launch it will assist you in installing the Android SDK components.
      (or visit https://flutter.dev/docs/get-started/install/linux#android-setup for detailed instructions).
      If the Android SDK has been installed to a custom location, please use
      `flutter config --android-sdk` to update to that location.

[✗] Chrome - develop for the web (Cannot find Chrome executable at google-chrome)
    ! Cannot find Chrome. Try setting CHROME_EXECUTABLE to a Chrome executable.

[✓] Linux toolchain - develop for Linux desktop
    • Ubuntu clang version 17.0.5 (1ubuntu1)
    • cmake version 3.27.8
    • ninja version 1.11.1
    • pkg-config version 1.8.1

[!] Android Studio (not installed)
    • Android Studio not found; download from https://developer.android.com/studio/index.html
      (or visit https://flutter.dev/docs/get-started/install/linux#android-setup for detailed instructions).

[✓] VS Code (version 1.84.2)
    • VS Code at /usr/share/code
    • Flutter extension version 3.78.0

[✓] Connected device (1 available)
    • Linux (desktop) • linux • linux-arm64 • Ubuntu Noble Numbat (development branch) 6.5.0-9-generic

[✓] Network resources
    • All expected network resources are available.

! Doctor found issues in 3 categories.

Thanks for the report @Feichtmeier
I think it is similar to https://github.com/flutter/flutter/issues/139293 so please follow-up in it for further updates.
Closing this as a duplicate. If you disagree, write in comments and I'll reopen it.

Ok indeed that looks very similar
I searched the issues for emoji and Chinese but didn't find it because the title hasn't had it
Thanks for finding the duplicate


Package installation using npm

Describe the bug
Cannot Install the package using npm
$ npm i react-parallax
npm ERR! code ERESOLVE
npm ERR! ERESOLVE unable to resolve dependency tree
npm ERR!
npm ERR! While resolving<EMAIL_ADDRESS>npm ERR! Found<EMAIL_ADDRESS>npm ERR! node_modules/react
npm ERR<EMAIL_ADDRESS>from the root project
npm ERR!
npm ERR! Could not resolve dependency:
npm ERR! peer<EMAIL_ADDRESS>|| 17.x.x" from<EMAIL_ADDRESS>npm ERR! node_modules/react-parallax
npm ERR!   react-parallax@"*" from the root project
npm ERR!
npm ERR! Fix the upstream dependency conflict, or retry
npm ERR! this command with --force, or --legacy-peer-deps
npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
npm ERR!
npm ERR! See C:\Users\sofiene feki\AppData\Local\npm-cache\eresolve-report.txt for a full report.

React 18 is not supported yet. I have to add it.

React 18 is now added to the list of peer dependencies.
Try again.


Running node-sass inside an extension?

I'm trying to use node-sass inside a vscode extension but I'm getting this error:

Node Sass does not yet support your current environment: OS X 64-bit with Unsupported runtime (49)

I suppose that it's because I use my local node version to install node-sass but vscode executes it with it's own node version...
Is there any way to fix that?

I would like to know how to solve this problem in Visual Studio Code?
And, how to setting in Visual Studio Code to let all characters are encoded correctly?

node-sass works by natively binding to libsass. Native dependencies are still an open issue: #6929


SIMSBIOHUB-226: Release dev staging changes

Changes from dev-staging have already been reviewed.
Links to Jira tickets

https://apps.nrs.gov.bc.ca/int/jira/browse/SIMSBIOHUB-296

When you delete an observation row before saving edits, you get a key error on the data grid.


Using docker build plugin and getting "Cannot connect to the Docker daemon."

I'm not sure the best strategy for this, but the path I took was to create a custom image from the public jenkins image, and I have installed docker into my custom image, adding the jenkins user to the docker group.  This is what my Dockerfile looks like:
FROM jenkins
USER root
RUN curl -sSL https://get.docker.com/ | sh &&
usermod -aG docker jenkins
USER jenkins
Then I launch the container using this command:
docker run -d --name=jenkins -p 8080:8080 -p 50000:50000 -v /data/jenkins:/var/jenkins_home jenkinscustom
As soon as I attempt a build using the plugin; however, I get the following error immediately after the docker build command is issued:
Cannot connect to the Docker daemon. Is the docker daemon running on this host?
Obviously the docker daemon isn't running since it is installed as a service.  I'm not sure this is even the right approach to take. Is there any guidance for the best way to use the Docker Build plugins when running jenkins inside a Docker container?

You need to have a docker daemon to connect to. As per https://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/, a convenient way of doing such is bind-mounting /var/run/docker.dock into your container.

right, you can't just run a docker daemon in a docker container

Thanks for the link and the additional info @dweomer.  That came in handy.  I managed to get something working that is a variation on what you suggested and I'd be curious to get your, or anyone else's opinions on best practices.

I tried the config as outlined in the ~jpetazzo article.  The issue I encountered due to bind-mounting both the docker.sock and the /usr/bin/docker binary is the other dependencies to run "docker build" were not present, so I encountered an error:
docker: error while loading shared libraries: libapparmor.so.1: cannot open shared object file: No such file or directory

So, from this I concluded I have to at least install docker into my image.  Note: Since I'm now installing docker into the image I had to map the group ID to a different name in the run.sh script below.

I haven't used gosu before, so I stuck to sudo, which I know and either had to be installed in the image regardless.  Using sudo I ran into a few issues with ENV variables between the users and HOME dir, which were resolved with parameters passed to the sudo command.

So now I have a Dockerfile that looks like this:
FROM jenkins USER root RUN curl -sSL https://get.docker.com/ | sh && \         usermod -aG docker jenkins && \         apt-get install sudo COPY run.sh ./run.sh ENTRYPOINT ["/bin/bash","-c","./run.sh"]
And I have a run.sh script that looks like this:
`#!/bin/bash -x
DOCKER_SOCKET=/var/run/docker.sock
DOCKER_GROUP=dockerhost
JENKINS_USER=jenkins
if [ -S ${DOCKER_SOCKET} ]; then
DOCKER_GID=$(stat -c '%g' ${DOCKER_SOCKET})
groupadd -for -g ${DOCKER_GID} ${DOCKER_GROUP}
usermod -aG ${DOCKER_GROUP} ${JENKINS_USER}
fi
exec sudo -E -H -u jenkins bash -c /usr/local/bin/jenkins.sh`

Bind-mounting the Docker executable is only feasible when it is a static (aka standalone) executable. Older articles mention doing this because it was common practice that relied on the fact that the docker executable for the longest time was statically compiled.
Installing docker via the get.docker.com URL is overkill for inside of container where you only really need a client setup (the script from that URL is a full daemon + client setup with a few extra packages that you simply do not need in a client container). Instead do something like this in your Dockerfile:
### Install Docker
RUN curl -fsSL --create-dirs --output /usr/local/bin/docker \
        "https://get.docker.com/builds/$(uname -s)/$(uname -m)/docker-${DOCKER_VERSION}" \
 && chmod +x /usr/local/bin/docker

This installs the statically linked Docker executable and does not attempt to install support packages like apparmor or aufs which will happen, depending on your base container, when using the get.docker.com script.

@dweomer: Good tip, thanks!  I updated my image accordingly and its still all working, so I think this is the way for me to go.

Thx, super helpful!
Here's how I got this to work w/o the curl to get.docker.com.
./docker-compose.yml
jenkins:
    build: ./jenkins
    volumes:
      - /var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/bin/docker:/usr/bin/docker
    environment:
      DOCKER_SOCKET: /var/run/docker.sock
      DOCKER_GROUP: dockerhost
      JENKINS_USER: jenkins
      JENKINS_URL: "https://jenkins.example.com/"
      DOCKER_HOST: unix:///var/run/docker.sock

./jenkins/Dockerfile
FROM jenkins

USER root

COPY ["entrypoint.sh", "/"]

RUN apt-get update && \
	apt-get install sudo && \
	chmod 755 /entrypoint.sh

ENTRYPOINT ["/bin/bash","-c","./entrypoint.sh"]

./jenkins/entrypoint.sh
#!/bin/bash

if [ -S ${DOCKER_SOCKET} ]; then
	DOCKER_GID=$(stat -c '%g' ${DOCKER_SOCKET})
	groupadd -for -g ${DOCKER_GID} ${DOCKER_GROUP}
	usermod -aG ${DOCKER_GROUP} ${JENKINS_USER}
fi

exec sudo -E -H -u jenkins bash -c /usr/local/bin/jenkins.sh

thanks @bkcummins
I managed to stick the contents of entrypoint in cmd rather than the file. In my deployment environment this is easier to manage than having another external file.
FROM jenkins:2.7.1
USER 0
CMD DOCKER_GID=$(stat -c '%g' /var/run/docker.sock) && \
    groupadd -for -g ${DOCKER_GID} docker && \
    usermod -aG docker jenkins && \
    sudo -E -H -u jenkins bash -c /usr/local/bin/jenkins.sh

Unfortunately this does not work in docker-machine since you can't (afaik) mount /var/run/docker.sock from your Docker Machine VM to the container running in the VM.

Thanks @CameronGo and @bkcummins. I tried what you suggested but the if statement fails because the /var/run/docker.sock is missing.
if [ -S ${DOCKER_SOCKET} ]

The volumes property in my docker-compose.yml is
volumes:
      - /var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock
      - /usr/local/bin/docker:/usr/bin/docker

any ideas what I might be doing wrong please?:)

Here's my docker-compose.yml:
version: '3'

services:
  jenkins-server:
    build: .
    environment:
      - DOCKER_SOCKET=/var/run/docker.sock
      - DOCKER_GROUP=dockerhost
      - JENKINS_USER=jenkins
    ports:
      - 8080:8080
      - 50000:50000
    volumes:
      - /data/jenkins:/var/jenkins_home
      - /var/run/docker.sock:/var/run/docker.sock

and here is my Dockerfile:
FROM jenkins/jenkins:2.118
USER root
COPY run.sh ./run.sh
RUN     curl -fsSLO https://download.docker.com/linux/static/stable/x86_64/docker-17.03.2-ce.tgz && tar --strip-components=1 -xvzf docker-17.03.2-ce.tgz -C /usr/local/bin && \
        chmod +x ./run.sh && \
        apt-get update -y && apt-get install -y sudo python-pip && \
        pip install awscli && \
        apt-get clean -y

ENTRYPOINT ["/bin/bash","-c","./run.sh"]

and here is the run.sh script that is running at launch:
#!/bin/bash -x

if [ -S ${DOCKER_SOCKET} ]; then
    DOCKER_GID=$(stat -c '%g' ${DOCKER_SOCKET})
    groupadd -for -g ${DOCKER_GID} ${DOCKER_GROUP}
    usermod -aG ${DOCKER_GROUP} ${JENKINS_USER}
fi

exec sudo -E -H -u jenkins bash -c /usr/local/bin/jenkins.sh

If you put all 3 of those files into a folder and run docker-compose up then you should get a jenkins instance up and running that let's you run docker build inside of it provided the docker host also has docker installed and running.

--env DOCKER_HOST=unix:///var/run/docker.sock \
--volume /var/run/docker.sock:/var/run/docker.sock \

AND REMOVE ANY ARGS TO TLS OR IT WILL TRY TO TALK THE DAEMON OVER HTTPS

This worked for me trying to use jenkins-blueocean (which wants to communicate over https)


Get hash for each photo

CRC64, CRC 32 ?

Decided to go with crc32b - seems fast enough - hopefully, I can use it plus the file length as an alternative to the primary key index in case of corruption.


Unlatch - Failed to perform the action button/press. 'NukiButton' object has no attribute 'entity_description'

System Health details
System Information

version
core-2024.11.1

installation_type
Home Assistant OS

dev
false

hassio
true

docker
true

user
root

virtualenv
false

python_version
3.12.4

os_name
Linux

os_version
6.6.31-haos-raspi

arch
aarch64

timezone
Europe/Berlin

config_dir
/config

Home Assistant Community Store

GitHub API
ok

GitHub Content
ok

GitHub Web
ok

HACS Data
ok

GitHub API Calls Remaining
5000

Installed Version
2.0.1

Stage
running

Available Repositories
1461

Downloaded Repositories
10

Home Assistant Cloud

logged_in
true

subscription_expiration
January 1, 2018 at 01:00

relayer_connected
false

relayer_region
null

remote_enabled
false

remote_connected
false

alexa_enabled
true

google_enabled
true

cloud_ice_servers_enabled
true

remote_server
null

certificate_status
null

instance_id
96b5967bfaf14b7b90b31171f1a33525

can_reach_cert_server
ok

can_reach_cloud_auth
ok

can_reach_cloud
ok

Home Assistant Supervisor

host_os
Home Assistant OS 13.2

update_channel
stable

supervisor_version
supervisor-2024.11.2

agent_version
1.6.0

docker_version
27.2.0

disk_total
57.8 GB

disk_used
25.1 GB

healthy
true

supported
true

host_connectivity
true

supervisor_connectivity
true

ntp_synchronized
true

virtualization

board
rpi4-64

supervisor_api
ok

version_api
ok

installed_addons
File editor (5.8.0), Mosquitto broker (6.4.1), TasmoAdmin (0.30.6), Terminal & SSH (9.15.0), ESPHome (2024.10.3), Cloudflared (5.2.1), Home Assistant Google Drive Backup (0.112.1), Music Assistant Server (2.3.2)

Dashboards

dashboards
2

resources
3

views
4

mode
storage

Recorder

oldest_recorder_run
November 6, 2024 at 15:36

current_recorder_run
November 12, 2024 at 16:31

estimated_db_size
581.78 MiB

database_engine
sqlite

database_version
3.45.3

Spotify

api_endpoint_reachable
ok

Checklist

[X] I have enabled debug logging for my installation.
[X] I have filled out the issue template to the best of my ability.
[X] This issue only contains 1 issue (if you have multiple issues, open one issue for each issue).
[X] This issue is not a duplicate issue of currently previous issues..

Nuki Device type
Nuki Smart Lock 4. Generation (non Pro) - Firmware: 4.4.8
hass_nuki_bt version
<IP_ADDRESS>
Describe the issue
The unlatch control ist not working => Failed to perform the action button/press. 'NukiButton' object has no attribute 'entity_description'
Other controls like lock are working.
Control via Nuki-App is also working.
Reproduction steps

Press Unlatch
Error "Failed to perform the action button/press. 'NukiButton' object has no attribute 'entity_description'"

Debug logs
2024-11-13 18:35:07.068 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration ble_monitor which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2024-11-13 18:35:07.073 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration alexa_media which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2024-11-13 18:35:07.076 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration hacs which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2024-11-13 18:35:07.080 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration thermal_comfort which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2024-11-13 18:35:07.092 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration hifiberry which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2024-11-13 18:35:07.095 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration hass_nuki_bt which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2024-11-13 18:35:07.097 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration spotcast which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2024-11-13 18:35:25.954 ERROR (ImportExecutor_0) [homeassistant] Error doing job: Unclosed client session (None)
2024-11-13 18:35:33.132 WARNING (zeroconf-ServiceBrowser-_googlecast._tcp-120) [pychromecast.dial] Failed to determine cast type for host <unknown> (<urlopen error [Errno 111] Connection refused>) (services:{MDNSServiceInfo(name='Baggen-XL-f62ae76036a03d499a1f19f96e8b3c07._googlecast._tcp.local.')})
2024-11-13 18:35:33.207 WARNING (zeroconf-ServiceBrowser-_googlecast._tcp-120) [pychromecast.dial] Failed to determine cast type for host <unknown> (<urlopen error [Errno 111] Connection refused>) (services:{MDNSServiceInfo(name='Stammen-L-ea69781405647338db1b0f9e7482f7d7._googlecast._tcp.local.')})
2024-11-13 18:35:33.801 WARNING (MainThread) [pyNukiBT.nuki] Got unexpected message length for command KEYTURNER_STATES. Got 1 unknown bytes with value: b'\x00'
2024-11-13 18:35:33.968 WARNING (MainThread) [pyNukiBT.nuki] Got unexpected message length for command CONFIG. Got 1 unknown bytes with value: b'\x01'
2024-11-13 18:35:34.046 WARNING (MainThread) [pyNukiBT.nuki] Got unexpected message length for command LOG_ENTRY. Got 3 unknown bytes with value: b'\x04\x04\x08'
2024-11-13 18:35:34.185 WARNING (MainThread) [aiowithings] 94 is an unsupported value for <enum 'DeviceModel'>, please report this at https://github.com/joostlek/python-withings/issues
2024-11-13 18:35:34.904 WARNING (MainThread) [pyNukiBT.nuki] Got unexpected message length for command KEYTURNER_STATES. Got 1 unknown bytes with value: b'\x00'
2024-11-13 18:35:35.027 WARNING (MainThread) [pyNukiBT.nuki] Got unexpected message length for command LOG_ENTRY. Got 3 unknown bytes with value: b'\x04\x04\x08'
2024-11-13 18:35:56.665 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection] [547829728592] Unexpected exception
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 245, in handle_call_service
    response = await hass.services.async_call(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2802, in async_call
    response_data = await coro
                    ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2845, in _execute_service
    return await target(service_call)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 1007, in entity_service_call
    single_response = await _handle_entity_call(
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 1079, in _handle_entity_call
    result = await task
             ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/button/__init__.py", line 132, in _async_press_action
    await self.async_press()
  File "/config/custom_components/hass_nuki_bt/button.py", line 82, in async_press
    await self.entity_description._action_function(self)
          ^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NukiButton' object has no attribute 'entity_description'
2024-11-13 18:36:26.054 ERROR (MainThread) [homeassistant] Error doing job: Unclosed client session (None)
2024-11-13 18:37:27.565 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection] [547829728592] Unexpected exception
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 245, in handle_call_service
    response = await hass.services.async_call(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2802, in async_call
    response_data = await coro
                    ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2845, in _execute_service
    return await target(service_call)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 1007, in entity_service_call
    single_response = await _handle_entity_call(
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 1079, in _handle_entity_call
    result = await task
             ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/button/__init__.py", line 132, in _async_press_action
    await self.async_press()
  File "/config/custom_components/hass_nuki_bt/button.py", line 82, in async_press
    await self.entity_description._action_function(self)
          ^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NukiButton' object has no attribute 'entity_description'

Diagnostics dump
No response

Thanks for the feedback.
I will look into this.

Updated to <IP_ADDRESS> (was not showing, because HACS was not loaded because i forgot to clear the browsercache after HA-Update).
Same error.
New Debug-Log:
2024-11-13 18:48:17.704 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration ble_monitor which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2024-11-13 18:48:17.707 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration alexa_media which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2024-11-13 18:48:17.709 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration hacs which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2024-11-13 18:48:17.711 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration thermal_comfort which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2024-11-13 18:48:17.712 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration hifiberry which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2024-11-13 18:48:17.714 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration hass_nuki_bt which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2024-11-13 18:48:17.716 WARNING (SyncWorker_0) [homeassistant.loader] We found a custom integration spotcast which has not been tested by Home Assistant. This component might cause stability problems, be sure to disable it if you experience issues with Home Assistant
2024-11-13 18:48:34.370 ERROR (ImportExecutor_0) [homeassistant] Error doing job: Unclosed client session (None)
2024-11-13 18:48:37.591 WARNING (zeroconf-ServiceBrowser-_googlecast._tcp-146) [pychromecast.dial] Failed to determine cast type for host <unknown> (<urlopen error [Errno 111] Connection refused>) (services:{MDNSServiceInfo(name='Baggen-XL-f62ae76036a03d499a1f19f96e8b3c07._googlecast._tcp.local.')})
2024-11-13 18:48:37.650 WARNING (zeroconf-ServiceBrowser-_googlecast._tcp-146) [pychromecast.dial] Failed to determine cast type for host <unknown> (<urlopen error [Errno 111] Connection refused>) (services:{MDNSServiceInfo(name='Stammen-L-ea69781405647338db1b0f9e7482f7d7._googlecast._tcp.local.')})
2024-11-13 18:48:37.912 WARNING (MainThread) [pyNukiBT.nuki] Got unexpected message length for command KEYTURNER_STATES. Got 1 unknown bytes with value: b'\x00'
2024-11-13 18:48:38.027 WARNING (MainThread) [pyNukiBT.nuki] Got unexpected message length for command CONFIG. Got 1 unknown bytes with value: b'\x01'
2024-11-13 18:48:38.102 WARNING (MainThread) [pyNukiBT.nuki] Got unexpected message length for command LOG_ENTRY. Got 3 unknown bytes with value: b'\x04\x04\x08'
2024-11-13 18:48:38.392 WARNING (MainThread) [aiowithings] 94 is an unsupported value for <enum 'DeviceModel'>, please report this at https://github.com/joostlek/python-withings/issues
2024-11-13 18:48:51.387 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection] [547177626880] Unexpected exception
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 245, in handle_call_service
    response = await hass.services.async_call(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2802, in async_call
    response_data = await coro
                    ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2845, in _execute_service
    return await target(service_call)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 1007, in entity_service_call
    single_response = await _handle_entity_call(
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 1079, in _handle_entity_call
    result = await task
             ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/button/__init__.py", line 132, in _async_press_action
    await self.async_press()
  File "/config/custom_components/hass_nuki_bt/button.py", line 82, in async_press
    await self.entity_description._action_function(self)
          ^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NukiButton' object has no attribute 'entity_description'
2024-11-13 18:49:36.705 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection] [547177626880] Unexpected exception
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 245, in handle_call_service
    response = await hass.services.async_call(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2802, in async_call
    response_data = await coro
                    ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2845, in _execute_service
    return await target(service_call)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 1007, in entity_service_call
    single_response = await _handle_entity_call(
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 1079, in _handle_entity_call
    result = await task
             ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/button/__init__.py", line 132, in _async_press_action
    await self.async_press()
  File "/config/custom_components/hass_nuki_bt/button.py", line 82, in async_press
    await self.entity_description._action_function(self)
          ^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NukiButton' object has no attribute 'entity_description'
2024-11-13 18:49:43.051 ERROR (SyncWorker_33) [homeassistant] Error doing job: Unclosed client session (None)
2024-11-13 18:49:59.144 ERROR (SyncWorker_26) [homeassistant] Error doing job: Unclosed client session (None)
2024-11-13 18:51:39.817 ERROR (MainThread) [homeassistant.components.websocket_api.http.connection] [547177626880] Unexpected exception
Traceback (most recent call last):
  File "/usr/src/homeassistant/homeassistant/components/websocket_api/commands.py", line 245, in handle_call_service
    response = await hass.services.async_call(
               ^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2802, in async_call
    response_data = await coro
                    ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/core.py", line 2845, in _execute_service
    return await target(service_call)
           ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 1007, in entity_service_call
    single_response = await _handle_entity_call(
                      ^^^^^^^^^^^^^^^^^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/helpers/service.py", line 1079, in _handle_entity_call
    result = await task
             ^^^^^^^^^^
  File "/usr/src/homeassistant/homeassistant/components/button/__init__.py", line 132, in _async_press_action
    await self.async_press()
  File "/config/custom_components/hass_nuki_bt/button.py", line 82, in async_press
    await self.entity_description._action_function(self)
          ^^^^^^^^^^^^^^^^^^^^^^^
AttributeError: 'NukiButton' object has no attribute 'entity_description'

@RambaaZambaa
Thanks for the feedback.
Fixed in version <IP_ADDRESS>

Works. Thank you very much! That was lightning fast :)


Add and use /record-async route

This adds the CSRF protection back to the /record route and creates a new /record-async route. We still have to add another layer of auth to this, which is coming in a follow-up PR.
Review commit by commit.

This is a better implementation: https://github.com/nhsuk/record-childrens-vaccinations/pull/122


adding "light player strum" option on the optimization

What feature do you want to get added on the base engine?
so if light botplay strum exists, why not try adding Player Light strums?, i mean if you really wanna play without any glow press arrow or fade thingy without turning on botplay its a good idea to add this feature so you dont really only watch the botplay plays and you play it, and also if light botplay strum is for botplay well light player strum is for us players.
To test your sight, and reliability, please select the option of what should NOT be requested.
Stage Editor, 6K+ support, and winning icons.

added in commit https://github.com/JordanSantiagoYT/FNF-PsychEngine-NoBotplayLag/commit/a575b6f71eb0877eeeb058fb10746b3f65452b83!


🐞 Span Search: can't find span using filters

Hi
Describe the Bug
On span search page,  I'm searching for a span that exists in the system using the filter options but gets no results.

Steps To Reproduce
I created a test that loads 4 services, the root service contains 2 spans - parent and child, and the other 3 services contains 1 span and are connected to the root span.

Go to search span page, add filters
key: span.spanId
operator: in
value: enter a span that was loaded
No span was found

Expected Behavior
I would expect to see the span

Tasks

[ ] Investigate
[ ] Fix

Environment:

Deployment tool: used the demo docker
Browser:  chrome
OS: iOS

Does not reproduce


I want to be able to open a channel with an amount of deposit transferred as a parameter

User Story
As Chris, I want to be able to open a channel with an amount of deposit transferred as a parameter so that I am able to make payments.
Acceptance criteria
Tasks
Story Points

@christianbrb This is done so we can close this issue.


Alternative way to launch.

Would be possible to add a script to launch it from the current folder on linux?

Do you mean starting a *.delga file without installing the game engine at all? This is possible using the Live Launcher. You can find it at https://dragondreams.ch/?page_id=152 or in the release section here on GitHub. The file is named "dragengine-live-1.0.zip".
The Live Launcher can run only one *.delga file. If you want to run the entire game engine and GUI Launcher from a directory without installing it then this can be done by setting environment parameters. If this is what you have in mind I can update the README with the script snippet to do so.
Let me know if any of these solutions is what you are looking for.

yup, its a way to launch the engine. Thanks for the script.

I'm not sure I understand correctly. Launching the engine to play a game is done using the GUI launcher (/usr/bin/delauncher-gui game.delga) or the console launcher (/usr/bin/delauncher-console run -f game.delga).
Can you please explain to me exactly what you are trying to achieve? Then I can provide you with the appropriate solution.

Edited, sorry for the typos.

I've added now a source-able file to the repository and update the README.
Now there is a little problem. In the current 1.0 release the shared game definition files used to create new projects have full path for their base directory. I've also changed the source code to turn these path relative so it works with the above mentioned source-able file. If you want to use this file with the current 1.0 release you have to apply a manual fix before you can continue.
Edit these two files:

share/deigde/gamedefs/dragonscript_basic.degd
share/deigde/gamedefs/dragonscript_imm.degd

Change the path in the -tag to point to the correct location in your local directory. If done correctly it will work. Otherwise you have to wait for the 1.1 release which contains the fixes.
I will also set up in the upcoming days a nightly build synced to GitHub. This one will be usable too once ready.
Please let me know if this all is helpful to you.

Perfect, thanks


iOS Client - optimize low resolution snapshot file size

For "low res" images, make sure the frame grab is no bigger than 960x720, that's the max resolution we get in the live video feed from the aircraft.  There's no sense in scaling up b/c it actually hurts visual analysis and takes up more space.

fixed, and added compression


Leaf label and leaf dot size cannot be modified with the slider

When importing a mapping file either 1) with no values for leaf_label_size or leaf_dot_size or 2) with those columns removed from the mapping file altogether. The slider is non functional for changing the values. It does still work for inner dot and label sizes.

@seanmcallister Try this again.  I think the last update should have fixed this.

Fixed.


FEAT: Support pygloo in collective communication

What do these changes do?

Related issue number

Related #22
Check code requirements

[x] tests added / passed (if needed)
[x] Ensure all linting tests pass

Also, we need to support all_to_all bind.

Also, we need to support all_to_all bind.

Implemented


Simplify code and data loading process by removing basic query diffing

Right now, we only have very rudimentary top-level query diffing, which will basically split up your root queries and only send them to the server if they aren't in the cache.
This is a very basic feature that is easily simulated by simply splitting up the query document into multiple queries, when you need them to be cached separately.
There are many benefits to removing this very small feature:

Queries in the code will exactly match what is sent to the server, making persisted queries achievable statically
No need to keep track of "minimized query" anymore, simplifying the redux store
Apollo client code will be much simpler, since it doesn't have to keep track of what data is missing anymore.
It's more predictable what queries will get run, since what you see is what you get

This also, as a coincidence, makes it easier to re-implement store reading using graphql-anywhere, but that shouldn't be the only reason we do it.
As a side note, other clients such as Relay are likely to move in this direction (more static queries) as well, because of the tooling and predictability benefits it brings.

Looking for feedback, @rricard, @jbaxleyiii, @abhiaiyer91.

@stubailo this is something I was starting to think about. From our experience until now: query diffing blows up sometimes for some reasons (uncatched errors in a query followed by a mutation for instance, can't quite yet put my finger on it, otherwise I would have created an issue!). Next, the benefits of this feature are quite small in production today. But what I like here is the predictability, I think everything could be much better/efficient by simplifying those internals!

@stubailo we also have seen an occasional issue with query diffing:
On the client:
fragment DefinedValues on DefinedValue {
  name: description
  value
  id
  _id
}

query GetCheckoutData($state: Int!, $country: Int!) {
  states: definedValues(id: $state, all: true) {
    ...DefinedValues
  }
  countries: definedValues(id: $country, all: true) {
    ...DefinedValues
  }
  person: currentPerson {
    firstName
    nickName
    lastName
    email
    campus { name, id: entityId }
    home { street1, street2, city, state, zip, country }
  }
  savedPayments {
    name, id: entityId, date,
    payment { accountNumber, paymentType }
  }
  campuses { name, id: entityId }
}

On the server:
query GetCheckoutData($state: Int!, $country: Int!) {
  person: currentPerson {
    firstName
    nickName
    lastName
    email
    campus {
      name
      id: entityId
    }
    home {
      street1
      street2
      city
      state
      zip
      country
    }
  }
}

fragment DefinedValues on DefinedValue {
  name: description
  value
  id
  _id
}

Which will result in Error: Fragment "DefinedValues" is never used.
The quick fix is to split these up into different queries (which would be best anyway) but I do think the diffing isn't nearly as big of a win as other parts of the project. Making it lighter and simpler is a big win in my book

Yeah I think we started with the assumption that this would be a critical feature but it seems much less important several months later. And it has lots of potential bugs etc.
Jonas are going to work together to do some refactors next week I think.

This is cool, more reliability is always welcome!

Just want to clear-up:
1 - Exactly the same query will find result in cache, right?;
2 - A subset of some previously query (therefore everything is in cache) will find the data in cache?
3 - A new query that intersects w/ previous query but is not contained (something in cache but not everything) will overfetch quering for everything?

I think doing this could kill an issue like #647 for example.

@deoqc

That would be cool to keep that yes
Not even sure we want that
That would mean this yes, but I'm not sure it'll be that bad, because now you usually only query one root field per query and so this is still clear, the current system does not diff what's non-root

1 and 2 will happen. I'm 100% sure that it's important to be able to query subsets of queries.
3 is the one thing that will be removed, and that feature wasn't that sophisticated to start with.

thx @rricard @stubailo
I may be doing things differently from everybody since I rely heavily on query diff. If 2 were dropped would break important things 😅  , while 3 being dropped is not as bad...
I rely on diffing to keep my components as decoupled as possible, especially when navigating between pages (somewhat detailed here).
ps: break refers to strategies for avoid network fetch and other optimizations not working;
ps2: AFAIK Relay have a sophisticated query diffing. Maybe this should come back down the road, but in a not obtrusive way as is now (complicating things and raising bugs all around);

ok, I get it now, yes 2 is quite important indeed

AFAIK Relay have a sophisticated query diffing

Relay 1 was built around this, but not Relay 2 as far as I know. It's one of the major changes they have been talking about - making queries much more static.

BTW I made pretty good progress on this task just now by deleting a ton of code: #693


Update browser-comparison.md

Removed old expert insights promo and added new expert insights promo
Description of the change:
Reason for the change:
Link to original source:

Closes #

Hello @negarzipan,Thanks again for the PR! We appreciate your contribution and look forward to                                              continued collaboration. Thanks!                                             Team SendGrid DX


Uniquely identifying grids

It would be good to have a mechanism to uniquely identify (hash) grids for a number of reasons:

Disambiguate data that are are in most other ways the same, e.g. regional output. Usually they would differ in some other meaningful way, for example in frequency, but it seems obvious that the querying should be able to easily distinguish between output on different grids (see https://github.com/COSIMA/cosima-cookbook/issues/137).

Automatically identify data that can be compared. Outputs from the same model are an obvious example. This is being addressed with keywords (see https://github.com/COSIMA/cosima-cookbook/issues/185 and https://github.com/COSIMA/cosima-cookbook/pull/190) but it should be possible automatically by matching grids. Another case is finding otherwise dissimilar data (observations) on the same grid.

Find canonical grid information. When attempting to plot ocean and ice output data it was not straightforward to find unmasked grid coordinates for selection and plotting (see https://github.com/COSIMA/cosima-recipes/blob/master/DocumentedExamples/Spatial_selection.ipynb). Clean, unmasked, canonical grid information could be stored in one location in the database and accessed based on a grid hash.

I did some preliminary calculations to see how feasible it would be to just compare hashes of grids
https://gist.github.com/aidanheerdegen/dd427bba8b104600a1c44b5046bfdfc9
TL;DR it isn't really feasible. Small differences at floating point accuracy and masking of land cells makes it difficult to do this automatically.
HOWEVER all is not lost. It should be possible to hash all grids. The same grids in different models have consistent hash values. This means it should be possible to create a table where relationships between grids can be specified. It shouldn't be onerous to maintain, as grids change fairly infrequently, and any data with the same grids can automatically make use of the mapping information.
The hardest part is decided how to encode this information, as we're not expecting users to break out sqlite3 and start editing tables, in fact this is expressly discouraged.

Proposal:
Create a new DB table for storing coordinate information. Something like this:
CREATE TABLE nccoords (
        id INTEGER NOT NULL,
        variable_id INTEGER NOT NULL,
        size VARCHAR,
        checksum VARCHAR,
        PRIMARY KEY (id),
        FOREIGN KEY(variable_id) REFERENCES variables (id)
);

where checksum is an md5 checksum of the entire coordinate variable.
Also create another new table grids which is something like this:
CREATE TABLE grids (
        id INTEGER NOT NULL,
        grid VARCHAR NOT NULL,
        checksum VARCHAR,
        description TEXT,
        PRIMARY KEY (id),
        FOREIGN KEY(variable_id) REFERENCES variables (id)
);

where grid is a unique name used to identify the grid. checksum I'm not sure about. It needs to be a single unique value that will be the same if the DB is regenerated, so id is not sufficient. Naively I'd just add the checksum values from all the associated coordinates together. That approach is a disaster cryptographically speaking, but that doesn't matter for this checksum.
grids would have an association table linking each grid to the nccoords for that grid. Not sure whether ordering of coordinates would be important. The grid id would replace dimensions in ncvars:
CREATE TABLE ncvars (
        id INTEGER NOT NULL,
        ncfile_id INTEGER NOT NULL,
        variable_id INTEGER NOT NULL,
        grid_id INTEGER NOT NULL,
        chunking VARCHAR,
        PRIMARY KEY (id),
        FOREIGN KEY(ncfile_id) REFERENCES ncfiles (id),
        FOREIGN KEY(variable_id) REFERENCES variables (id)
        FOREIGN KEY(grid_id) REFERENCES grids (id)
);

This affects #216 as I coordinates could be identified by appearing in the grids/nccoords association table.
Populating the metadata in the grids table could be done from a yaml file in a similar way to the experiment metadata using the grid checksum to associate metadata with a grid. By default it could be the concatenation of all the coordinate long_name attributes (from the variable they reference).
It would be good to be able to create relationships between grids. The ocean data has a nominal rectilinear grid that is included in data files, but often has missing_value over land. If the full grid was available in the DB it would be good to be able to use that semi-automatically by defining them as being equivalent and preferring a grid which has no missing values, or assigned some higher quality factor.
There are issues with the ice data. The files as they come out of CICE do not have CF convention spatial coordinates. For example:
dimensions:
        ni = 3600 ;
        nj = 2700 ;
        time = UNLIMITED ; // (1 currently)
variables:
        float TLON(nj, ni) ;
                TLON:long_name = "T grid center longitude" ;
                TLON:units = "degrees_east" ;
                TLON:missing_value = 1.e+30f ;
                TLON:_FillValue = 1.e+30f ;
        float TLAT(nj, ni) ;
                TLAT:long_name = "T grid center latitude" ;
                TLAT:units = "degrees_north" ;
                TLAT:missing_value = 1.e+30f ;
                TLAT:_FillValue = 1.e+30f ;
        float ULON(nj, ni) ;
                ULON:long_name = "U grid center longitude" ;
                ULON:units = "degrees_east" ;
                ULON:missing_value = 1.e+30f ;
                ULON:_FillValue = 1.e+30f ;
        float ULAT(nj, ni) ;
                ULAT:long_name = "U grid center latitude" ;
                ULAT:units = "degrees_north" ;
                ULAT:missing_value = 1.e+30f ;
                ULAT:_FillValue = 1.e+30f ;
                ULAT:comment = "Latitude of NE corner of T grid cell" ;
        float aice(time, nj, ni) ;
                aice:units = "1" ;
                aice:long_name = "ice area  (aggregate)" ;
                aice:coordinates = "TLON TLAT time" ;
                aice:cell_measures = "area: tarea" ;
                aice:missing_value = 1.e+30f ;
                aice:_FillValue = 1.e+30f ;
                aice:cell_methods = "time: mean" ;

The aice variable just has nj and ni as the latitude and longitude dimensions, with no matching coordinate variable. It does have a coordinates attribute which could be used to infer the coordinates and therefore the grid. That attribute is removed by decode_cf=True so it is available in the encoding attribute:
> ds.aice.encoding
{'zlib': True,
 'shuffle': False,
 'complevel': 1,
 'fletcher32': False,
 'contiguous': False,
 'chunksizes': (1, 675, 900),
 'source': '/g/data/ik11/outputs/access-om2-01/01deg_jra55v140_iaf/output200/ice/OUTPUT/iceh.2008-01-01.nc',
 'original_shape': (1, 2700, 3600),
 'dtype': dtype('float32'),
 'missing_value': 1e+30,
 '_FillValue': 1e+30,
 'coordinates': 'TLON TLAT time'}

It may be necessary to use this, as xarray usually lists both T and U grid coordinates in the .coords attribute, so this can't necessarily be relied upon.

The files as they come out of CICE do not have CF convention spatial coordinates

Just testing my understand of CF conventions, but is this true? ULAT and TLAT both satisfy requirements for a latitude coordinate (and same thing for ULON and TLON), by providing the units attribute. Because these coordinates depend on more than one spatiotemporal dimension, they fall under this paragraph of the coordinate systems section:

Any longitude, latitude, vertical or time coordinate which depends on more than one spatiotemporal dimension must be identified by the coordinates attribute of the data variable. The value of the coordinates attribute is a blank separated list of the names of auxiliary coordinate variables.

Indeed, the following paragraph indicates that the CICE behaviour may actually be useful:

We recommend that the name of a multidimensional coordinate variable should not match the name of any of its dimensions because that precludes supplying a coordinate variable for the dimension. This practice also avoids potential bugs in applications that determine coordinate variables by only checking for a name match between a dimension and a variable and not checking that the variable is one dimensional.

So I think it will have to be a combination of both approaches that you've suggested!

Oh right, excellent!
When referring to CF conventions I was thinking of the 1D case where dimension and coordinate are named the same, but didn't know about the convention for 2D coords.
I don't know if it is a problem that the MOM data comes with 1D coordinates (with the real 2D curvilinear coordinates in another file) and CICE defaults to 2D. The idea is to have a way to tell the DB that grids are equivalent.
The proposal above sort of assumed that a coordinate was 1D and a grid was made up of multiple 1D coordinates. If size were changed to shape and was then a python tuple then it would support 1D and 2D coordinates.

Was thinking about this after noticing the redundancy in storing dimensions/chunking in the DB (https://github.com/COSIMA/cosima-cookbook/issues/216#issuecomment-914822478).
So how about having a table storing dimensions:
CREATE TABLE dimensions (
        id INTEGER NOT NULL,
        name VARCHAR,
        size INTEGER,
        PRIMARY KEY (id),
);

and another for coordinates
CREATE TABLE coordinates (
        id INTEGER NOT NULL,
        name VARCHAR,
        dimension_id INTEGER NOT NULL,
        axis VARCHAR,
        checksum VARCHAR,
        PRIMARY KEY (id),
        FOREIGN KEY(dimension_id) REFERENCES dimensions (id)
);
CREATE UNIQUE INDEX ix_coordinates_name_dimension_id_checksum ON grids (name, dimension_id, checksum);

where axis is a spatial dimension type and use the CF Convention names and checksum is an md5 checksum of the entire coordinate variable.

The attribute axis may be attached to a coordinate variable and given one of the values X, Y, Z or T which stand for a longitude, latitude, vertical, or time axis respectively.

Note: this is 1D dimensions only for illustrative purposes. nD dimensions (2D at least) should be supported for MOM's tripolar curvilinear grid. Not sure the best way to do that.
Note: including checksum will guarantee uniqueness, where there might be dimensions with the same name and size but differing axis points. Unfortunately it will also create false positives for small machine precision and round-off errors. Not sure how to deal with that.
Defining grids should be done to be as useful to us as possible, which means we can do it in a way that is helpful by assuming/asserting some structure. So define a grid to be, fundamentally, 2D. Depth and time coordinates are then an attribute of the variable. A 3D ocean variable with a time dimension shares the same "grid" as a 2D surface ocean variable. This is useful because you immediately know they can be used in calculations without any regridding being necessary. Also important and useful because it becomes obvious when variables defined on different grids, e.g. U vs T grids in MOM5.
So with that in mind can have a grid table that is just unique combinations of X and Y dimensions with an optional descriptive name
CREATE TABLE grids (
        id INTEGER NOT NULL,
        name VARCHAR,
        x_dimension_id INTEGER NOT NULL,
        y_dimension_id INTEGER NOT NULL,
        PRIMARY KEY (id),
        FOREIGN KEY(x_dimension_id) REFERENCES dimensions (id)
        FOREIGN KEY(y_dimension_id) REFERENCES dimensions (id)
);
CREATE UNIQUE INDEX ix_grids_x_dimension_id_y_dimension_id ON grids (x_dimension_id, y_dimension_id);

Once you have named grids you have the possibility to generate and store remapping weights to make regridding easier and potentially almost transparent to users.
As above, an optional grid_id would replace dimensions in ncvars, and each ncvar also has the option of a Z and T dimension:
CREATE TABLE ncvars (
        id INTEGER NOT NULL,
        ncfile_id INTEGER NOT NULL,
        variable_id INTEGER NOT NULL,
        grid_id INTEGER,
        z_axis_id INTEGER,
        t_axis_id INTEGER,
        chunk_id INTEGER,
        PRIMARY KEY (id),
        FOREIGN KEY(ncfile_id) REFERENCES ncfiles (id),
        FOREIGN KEY(variable_id) REFERENCES variables (id)
        FOREIGN KEY(grid_id) REFERENCES grids (id)
        FOREIGN KEY(z_axis_id) REFERENCES coordinates (id)
        FOREIGN KEY(t_axis_id) REFERENCES coordinates (id)
        FOREIGN KEY(chunk_id) REFERENCES chunking (id)
);
CREATE UNIQUE INDEX ix_ncvars_ncfile_id_variable_id ON ncvars (ncfile_id, variable_id);

To avoid duplication of chunking information it also contains chunk_id which references a table of chunking tuples
CREATE TABLE chunking (
        id INTEGER NOT NULL,
        chunks VARCHAR,
        PRIMARY KEY (id),
);
CREATE UNIQUE INDEX ix_chunking_chunks ON chunking (chunks);

(I have liberally sprinkled indexes through this, but don't assume they are correct!)
The proposal to rigidly define grids has the downside that some variables (hopefully few) won't necessarily fit this model. Grid IDs aren't compulsory, but there is no fallback in that case. How that is handled is more about the logic in the explorer/API routines.

As well as uniquely identifying each grid, it would also be helpful to record provenance information, i.e. how each grid was generated. For example, a URL to a commit in a github repo of the specific grid generation script that was used.


Is the new editor open source? I want to suggest it to a distro packaging team END

good question !


Automerge renovate PRs

Description
Automerge renovate PRs
How can this be tested?
Not needed

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

Project coverage is 58.78%. Comparing base (e7207d2) to head (1e67d4d).

Additional details and impacted files
@@            Coverage Diff             @@
##             main    #3250      +/-   ##
==========================================
+ Coverage   58.77%   58.78%   +0.01%
==========================================
  Files         326      325       -1
  Lines       18172    18149      -23
==========================================
- Hits        10680    10669      -11
+ Misses       6308     6283      -25
- Partials     1184     1197      +13

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


Add configuration options for self-describing JSON Schema

E.g. "please make the vendor com.blah"

This is covered by #17

This is necessary

So, it's just CLI options, right?

Yep CLI options!


Timezone mismatch for file updated Telegram messages

Describe the bug
Telegram messages sent for file updates include a time at which the file was uploaded. This time however, is 8 hours earlier than what it should be because of timezone mismatch (we are in UTC +8 but the message sent did not take that into account).
Screenshots
File updated time shown on Canvas is 21:01

File updated time shown on Telegram Message is 13:01 (8 hours earlier)

This happens only on Canvas, not Luminus 😄


Python 3 fixes

Use Beautiful Soup 4, 3 only works with Python 2.\
Use absolute imports on the module __init__

Looks to address issues in #5

I pushed some other changes that are also fixing the python 3 compatibility so I am closing this.


Unity plugin error in Xcode (iOS 8.3)

Hi
I'm trying to build our project to device with Xcode using the latest Unity plugin and iOS 8.3, but I'm getting an error which is crashing the app.
It's caused by AppStoreDelegate.mm:

Any ideas what the problem could be please?
Many thanks.

I'm still struggling with this...
The error triggers when I 'Query Inventory'.
OpenIAB seems to initialise ok, as I get the 'billing supported' call back.
Any ideas?
Thanks.

If you using not Unity less than 5 version try revert [this commit|https://github.com/onepf/OpenIAB-Unity-Plugin/commit/2527c8a73cccecf0e9763a449b6e024195b53a6a]


Support adding items to cart without logging in

closes https://github.com/dotnet/eShop/issues/27 , changes are related to WebApp.
I want to propose an idea to store cart objects into session untill user log-in. When user log-in, this session cart will be converted into redis cart for user.

@captainsafia Are you going to review again? Or anyone else will also be doing?😀

@captainsafia are you going to review this or anyone else will continue with review process? 😕

@ks1990cn Considering the scope of this change, we may want to incorporate other reviewers in here, but I can take a look for now.
Have you verified that this works end-to-end? I'm not able to checkout after adding an item to the cart while being logged out.

@ks1990cn Considering the scope of this change, we may want to incorporate other reviewers in here, but I can take a look for now.
Have you verified that this works end-to-end? I'm not able to checkout after adding an item to the cart while being logged out.

Correct me if I misunderstood, as per issue, we should be able to add item to cart when user is not logged-in. User need to log-in before check out. This functionality I have worked on.

Correct me if I misunderstood, as per issue https://github.com/dotnet/eShop/issues/27 , we should be able to add item to cart when user is not logged-in. User need to log-in before check out. On this functionality I have worked on.

Thanks for sharing the recording. For whatever reason, I don't see the same behavior when I repro locally. The "Checkout" button doesn't redirect to the login page...

Correct me if I misunderstood, as per issue #27 , we should be able to add item to cart when user is not logged-in. User need to log-in before check out. On this functionality I have worked on.

Thanks for sharing the recording. For whatever reason, I don't see the same behavior when I repro locally. The "Checkout" button doesn't redirect to the login page...

I am not sure, can you ask anyone else to try this?

Correct me if I misunderstood, as per issue #27 , we should be able to add item to cart when user is not logged-in. User need to log-in before check out. On this functionality I have worked on.

Thanks for sharing the recording. For whatever reason, I don't see the same behavior when I repro locally. The "Checkout" button doesn't redirect to the login page...

I am not sure, can you ask anyone else to try this?

Take recent code changes, I have made commits after our last comments!! @captainsafia

@captainsafia I am waiting for PR review again🥺🥺, is there any luck with running it locally?

@captainsafia can you please review again, made requested changes.

@captainsafia Is thi PR still under review?

@captainsafia Can you review this again? 😄

@jamesmontemagno @adityamandaleeka Looks like you also work on this repo, can you review this if @captainsafia is no more looking in this PR.
Just wanted to know till when I can expect review again? I'm so excited to continue contribution on this!

Hii @captainsafia , will you gonna see this PR again? It's been long time now

@ks1990cn Thanks for your eagerness here, @Tanmay! At the moment, we're trying to prioritize bug fixes and quality improvements on eShop before taking new features so we'd like to hold off on merging this change at the moment.

@captainsafia any update on this pr? this feature is very much needed for my scenario.

@cwash05 As @captainsafia mentioned above, we're prioritizing quality/fixes in this project for now so we are holding off on adding functionality.
It's not clear what you mean by this being needed for your scenario. This PR has no impact on the product capabilities of ASP.NET Core, Aspire, or any other technology we ship; this repo/project is merely a sample.