[Device Support Request] - Moes Thermostat - TS0601

Problem description
Hi,
I'm submitting this request following the conversation on this ticket:
https://community.home-assistant.io/t/popular-moes-thermostat-not-showing-entities-after-zha-pairing/641041/1
I bought a Moes thermostat (gas boiler + zigbee version), that pairs with Zigbee but doesn't show any proper entities.
I have a friend with what I thought was an identical model but it seems there are lots of subvariants of this one. Either way, it should definitely work.
I have also done all the troubleshooting outlined in this, including removing and re-pairing several times: https://community.home-assistant.io/t/guide-for-zigbee-interference-avoidance-and-network-range-coverage-optimization/515752
I'm not sure what other info is required here, but please don't hesitate to ask :)
EDIT: After learning a lot about quirks since I posted this, I'm adding the actual model number to the post for searchability as I can't see it anywhere - _TZE204_aoclfnxz
Thank you very very much in advance for any help!
Solution description
As far as I understand, something to do with quirks is required for this to work properly with Zigbee Home Assistant, and the device needs to be opted into ZHA. I think that's all that's necessary?
Screenshots/Video
Screenshots/Video

Device signature
Device signature
{
  "node_descriptor": "NodeDescriptor(logical_type=<LogicalType.Router: 1>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.FullFunctionDevice|MainsPowered|RxOnWhenIdle|AllocateAddress: 142>, manufacturer_code=4417, maximum_buffer_size=66, maximum_incoming_transfer_size=66, server_mask=10752, maximum_outgoing_transfer_size=66, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=False, *is_full_function_device=True, *is_mains_powered=True, *is_receiver_on_when_idle=True, *is_router=True, *is_security_capable=False)",
  "endpoints": {
    "1": {
      "profile_id": "0x0104",
      "device_type": "0x0051",
      "input_clusters": [
        "0x0000",
        "0x0004",
        "0x0005",
        "0xef00"
      ],
      "output_clusters": [
        "0x000a",
        "0x0019"
      ]
    },
    "242": {
      "profile_id": "0xa1e0",
      "device_type": "0x0061",
      "input_clusters": [],
      "output_clusters": [
        "0x0021"
      ]
    }
  },
  "manufacturer": "_TZE204_aoclfnxz",
  "model": "TS0601",
  "class": "zigpy.device.Device"
}

Diagnostic information
Diagnostic information
{
  "home_assistant": {
    "installation_type": "Home Assistant OS",
    "version": "2023.11.2",
    "dev": false,
    "hassio": true,
    "virtualenv": false,
    "python_version": "3.11.6",
    "docker": true,
    "arch": "aarch64",
    "timezone": "Europe/London",
    "os_name": "Linux",
    "os_version": "6.1.21-v8",
    "supervisor": "2023.11.3",
    "host_os": "Home Assistant OS 11.1",
    "docker_version": "24.0.6",
    "chassis": "embedded",
    "run_as_root": true
  },
  "custom_components": {
    "hildebrandglow_dcc": {
      "version": "1.0.3",
      "requirements": [
        "pyglowmarkt==0.5.5"
      ]
    },
    "localtuya": {
      "version": "5.2.1",
      "requirements": []
    },
    "hacs": {
      "version": "1.33.0",
      "requirements": [
        "aiogithubapi>=22.10.1"
      ]
    }
  },
  "integration_manifest": {
    "domain": "zha",
    "name": "Zigbee Home Automation",
    "after_dependencies": [
      "onboarding",
      "usb"
    ],
    "codeowners": [
      "@dmulcahey",
      "@adminiuga",
      "@puddly"
    ],
    "config_flow": true,
    "dependencies": [
      "file_upload"
    ],
    "documentation": "https://www.home-assistant.io/integrations/zha",
    "iot_class": "local_polling",
    "loggers": [
      "aiosqlite",
      "bellows",
      "crccheck",
      "pure_pcapy3",
      "zhaquirks",
      "zigpy",
      "zigpy_deconz",
      "zigpy_xbee",
      "zigpy_zigate",
      "zigpy_znp",
      "universal_silabs_flasher"
    ],
    "requirements": [
      "bellows==0.36.8",
      "pyserial==3.5",
      "pyserial-asyncio==0.6",
      "zha-quirks==0.0.106",
      "zigpy-deconz==0.21.1",
      "zigpy==0.59.0",
      "zigpy-xbee==0.19.0",
      "zigpy-zigate==0.11.0",
      "zigpy-znp==0.11.6",
      "universal-silabs-flasher==0.0.14",
      "pyserial-asyncio-fast==0.11"
    ],
    "usb": [
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*2652*",
        "known_devices": [
          "slae.sh cc2652rb stick"
        ]
      },
      {
        "vid": "1A86",
        "pid": "55D4",
        "description": "*sonoff*plus*",
        "known_devices": [
          "sonoff zigbee dongle plus v2"
        ]
      },
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*sonoff*plus*",
        "known_devices": [
          "sonoff zigbee dongle plus"
        ]
      },
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*tubeszb*",
        "known_devices": [
          "TubesZB Coordinator"
        ]
      },
      {
        "vid": "1A86",
        "pid": "7523",
        "description": "*tubeszb*",
        "known_devices": [
          "TubesZB Coordinator"
        ]
      },
      {
        "vid": "1A86",
        "pid": "7523",
        "description": "*zigstar*",
        "known_devices": [
          "ZigStar Coordinators"
        ]
      },
      {
        "vid": "1CF1",
        "pid": "0030",
        "description": "*conbee*",
        "known_devices": [
          "Conbee II"
        ]
      },
      {
        "vid": "10C4",
        "pid": "8A2A",
        "description": "*zigbee*",
        "known_devices": [
          "Nortek HUSBZB-1"
        ]
      },
      {
        "vid": "0403",
        "pid": "6015",
        "description": "*zigate*",
        "known_devices": [
          "ZiGate+"
        ]
      },
      {
        "vid": "10C4",
        "pid": "EA60",
        "description": "*zigate*",
        "known_devices": [
          "ZiGate"
        ]
      },
      {
        "vid": "10C4",
        "pid": "8B34",
        "description": "*bv 2010/10*",
        "known_devices": [
          "Bitron Video AV2010/10"
        ]
      }
    ],
    "zeroconf": [
      {
        "type": "_esphomelib._tcp.local.",
        "name": "tube*"
      },
      {
        "type": "_zigate-zigbee-gateway._tcp.local.",
        "name": "*zigate*"
      },
      {
        "type": "_zigstar_gw._tcp.local.",
        "name": "*zigstar*"
      },
      {
        "type": "_uzg-01._tcp.local.",
        "name": "uzg-01*"
      },
      {
        "type": "_slzb-06._tcp.local.",
        "name": "slzb-06*"
      }
    ],
    "is_built_in": true
  },
  "data": {
    "ieee": "**REDACTED**",
    "nwk": 20963,
    "manufacturer": "_TZE204_aoclfnxz",
    "model": "TS0601",
    "name": "_TZE204_aoclfnxz TS0601",
    "quirk_applied": false,
    "quirk_class": "zigpy.device.Device",
    "quirk_id": null,
    "manufacturer_code": 4417,
    "power_source": "Mains",
    "lqi": 168,
    "rssi": -58,
    "last_seen": "2023-11-16T10:49:51",
    "available": true,
    "device_type": "Router",
    "signature": {
      "node_descriptor": "NodeDescriptor(logical_type=<LogicalType.Router: 1>, complex_descriptor_available=0, user_descriptor_available=0, reserved=0, aps_flags=0, frequency_band=<FrequencyBand.Freq2400MHz: 8>, mac_capability_flags=<MACCapabilityFlags.FullFunctionDevice|MainsPowered|RxOnWhenIdle|AllocateAddress: 142>, manufacturer_code=4417, maximum_buffer_size=66, maximum_incoming_transfer_size=66, server_mask=10752, maximum_outgoing_transfer_size=66, descriptor_capability_field=<DescriptorCapability.NONE: 0>, *allocate_address=True, *is_alternate_pan_coordinator=False, *is_coordinator=False, *is_end_device=False, *is_full_function_device=True, *is_mains_powered=True, *is_receiver_on_when_idle=True, *is_router=True, *is_security_capable=False)",
      "endpoints": {
        "1": {
          "profile_id": "0x0104",
          "device_type": "0x0051",
          "input_clusters": [
            "0x0000",
            "0x0004",
            "0x0005",
            "0xef00"
          ],
          "output_clusters": [
            "0x000a",
            "0x0019"
          ]
        },
        "242": {
          "profile_id": "0xa1e0",
          "device_type": "0x0061",
          "input_clusters": [],
          "output_clusters": [
            "0x0021"
          ]
        }
      },
      "manufacturer": "_TZE204_aoclfnxz",
      "model": "TS0601"
    },
    "active_coordinator": false,
    "entities": [],
    "neighbors": [
      {
        "device_type": "Coordinator",
        "rx_on_when_idle": "On",
        "relationship": "Parent",
        "extended_pan_id": "**REDACTED**",
        "ieee": "**REDACTED**",
        "nwk": "0x0000",
        "permit_joining": "Unknown",
        "depth": "0",
        "lqi": "85"
      },
      {
        "device_type": "Router",
        "rx_on_when_idle": "On",
        "relationship": "Sibling",
        "extended_pan_id": "**REDACTED**",
        "ieee": "**REDACTED**",
        "nwk": "0xA2BB",
        "permit_joining": "Unknown",
        "depth": "0",
        "lqi": "88"
      },
      {
        "device_type": "Router",
        "rx_on_when_idle": "On",
        "relationship": "Sibling",
        "extended_pan_id": "**REDACTED**",
        "ieee": "**REDACTED**",
        "nwk": "0x6306",
        "permit_joining": "Unknown",
        "depth": "0",
        "lqi": "39"
      },
      {
        "device_type": "Router",
        "rx_on_when_idle": "On",
        "relationship": "Sibling",
        "extended_pan_id": "**REDACTED**",
        "ieee": "**REDACTED**",
        "nwk": "0x8C83",
        "permit_joining": "Unknown",
        "depth": "1",
        "lqi": "42"
      },
      {
        "device_type": "Router",
        "rx_on_when_idle": "On",
        "relationship": "Sibling",
        "extended_pan_id": "**REDACTED**",
        "ieee": "**REDACTED**",
        "nwk": "0xEA58",
        "permit_joining": "Unknown",
        "depth": "0",
        "lqi": "63"
      },
      {
        "device_type": "Router",
        "rx_on_when_idle": "On",
        "relationship": "Sibling",
        "extended_pan_id": "**REDACTED**",
        "ieee": "**REDACTED**",
        "nwk": "0x7116",
        "permit_joining": "Unknown",
        "depth": "0",
        "lqi": "121"
      },
      {
        "device_type": "Router",
        "rx_on_when_idle": "On",
        "relationship": "Sibling",
        "extended_pan_id": "**REDACTED**",
        "ieee": "**REDACTED**",
        "nwk": "0x49A8",
        "permit_joining": "Unknown",
        "depth": "0",
        "lqi": "54"
      },
      {
        "device_type": "Router",
        "rx_on_when_idle": "On",
        "relationship": "Sibling",
        "extended_pan_id": "**REDACTED**",
        "ieee": "**REDACTED**",
        "nwk": "0x1E36",
        "permit_joining": "Unknown",
        "depth": "1",
        "lqi": "54"
      },
      {
        "device_type": "Router",
        "rx_on_when_idle": "On",
        "relationship": "Sibling",
        "extended_pan_id": "**REDACTED**",
        "ieee": "**REDACTED**",
        "nwk": "0xC22D",
        "permit_joining": "Unknown",
        "depth": "1",
        "lqi": "151"
      },
      {
        "device_type": "Router",
        "rx_on_when_idle": "On",
        "relationship": "Sibling",
        "extended_pan_id": "**REDACTED**",
        "ieee": "**REDACTED**",
        "nwk": "0xD0E7",
        "permit_joining": "Unknown",
        "depth": "0",
        "lqi": "121"
      },
      {
        "device_type": "Router",
        "rx_on_when_idle": "On",
        "relationship": "Sibling",
        "extended_pan_id": "**REDACTED**",
        "ieee": "**REDACTED**",
        "nwk": "0xBCB6",
        "permit_joining": "Unknown",
        "depth": "1",
        "lqi": "106"
      },
      {
        "device_type": "Router",
        "rx_on_when_idle": "On",
        "relationship": "Sibling",
        "extended_pan_id": "**REDACTED**",
        "ieee": "**REDACTED**",
        "nwk": "0xA389",
        "permit_joining": "Unknown",
        "depth": "1",
        "lqi": "51"
      },
      {
        "device_type": "Router",
        "rx_on_when_idle": "On",
        "relationship": "Sibling",
        "extended_pan_id": "**REDACTED**",
        "ieee": "**REDACTED**",
        "nwk": "0xBF90",
        "permit_joining": "Unknown",
        "depth": "1",
        "lqi": "75"
      },
      {
        "device_type": "Router",
        "rx_on_when_idle": "On",
        "relationship": "Sibling",
        "extended_pan_id": "**REDACTED**",
        "ieee": "**REDACTED**",
        "nwk": "0x1611",
        "permit_joining": "Unknown",
        "depth": "0",
        "lqi": "0"
      },
      {
        "device_type": "Router",
        "rx_on_when_idle": "On",
        "relationship": "Sibling",
        "extended_pan_id": "**REDACTED**",
        "ieee": "**REDACTED**",
        "nwk": "0x282F",
        "permit_joining": "Unknown",
        "depth": "0",
        "lqi": "36"
      },
      {
        "device_type": "Router",
        "rx_on_when_idle": "On",
        "relationship": "Sibling",
        "extended_pan_id": "**REDACTED**",
        "ieee": "**REDACTED**",
        "nwk": "0xC28E",
        "permit_joining": "Unknown",
        "depth": "0",
        "lqi": "81"
      },
      {
        "device_type": "Router",
        "rx_on_when_idle": "On",
        "relationship": "Sibling",
        "extended_pan_id": "**REDACTED**",
        "ieee": "**REDACTED**",
        "nwk": "0x27E4",
        "permit_joining": "Unknown",
        "depth": "0",
        "lqi": "30"
      },
      {
        "device_type": "Router",
        "rx_on_when_idle": "On",
        "relationship": "Sibling",
        "extended_pan_id": "**REDACTED**",
        "ieee": "**REDACTED**",
        "nwk": "0x8F41",
        "permit_joining": "Unknown",
        "depth": "2",
        "lqi": "88"
      },
      {
        "device_type": "Router",
        "rx_on_when_idle": "On",
        "relationship": "Sibling",
        "extended_pan_id": "**REDACTED**",
        "ieee": "**REDACTED**",
        "nwk": "0x0321",
        "permit_joining": "Unknown",
        "depth": "1",
        "lqi": "33"
      },
      {
        "device_type": "Router",
        "rx_on_when_idle": "On",
        "relationship": "Sibling",
        "extended_pan_id": "**REDACTED**",
        "ieee": "**REDACTED**",
        "nwk": "0x1A2B",
        "permit_joining": "Unknown",
        "depth": "1",
        "lqi": "42"
      }
    ],
    "routes": [],
    "endpoint_names": [
      {
        "name": "SMART_PLUG"
      },
      {
        "name": "PROXY_BASIC"
      }
    ],
    "user_given_name": "Thermostat ",
    "device_reg_id": "0d0091547b465de705a470161d62295f",
    "area_id": "kitchen",
    "cluster_details": {
      "1": {
        "device_type": {
          "name": "SMART_PLUG",
          "id": 81
        },
        "profile_id": 260,
        "in_clusters": {
          "0x0004": {
            "endpoint_attribute": "groups",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0005": {
            "endpoint_attribute": "scenes",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0xef00": {
            "endpoint_attribute": null,
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x0000": {
            "endpoint_attribute": "basic",
            "attributes": {
              "0x0001": {
                "attribute_name": "app_version",
                "value": 74
              },
              "0x0004": {
                "attribute_name": "manufacturer",
                "value": "_TZE204_aoclfnxz"
              },
              "0x0005": {
                "attribute_name": "model",
                "value": "TS0601"
              }
            },
            "unsupported_attributes": {}
          }
        },
        "out_clusters": {
          "0x0019": {
            "endpoint_attribute": "ota",
            "attributes": {},
            "unsupported_attributes": {}
          },
          "0x000a": {
            "endpoint_attribute": "time",
            "attributes": {},
            "unsupported_attributes": {}
          }
        }
      },
      "242": {
        "device_type": {
          "name": "PROXY_BASIC",
          "id": 97
        },
        "profile_id": 41440,
        "in_clusters": {},
        "out_clusters": {
          "0x0021": {
            "endpoint_attribute": "green_power",
            "attributes": {},
            "unsupported_attributes": {}
          }
        }
      }
    }
  }
}```

</details>

### Logs

<details><summary>Logs</summary>

```python
[Paste the logs here]

Custom quirk
Custom quirk
[Paste your custom quirk here]

Additional information
No response

I have the same device and managed to make it working using this quirk:
https://github.com/jacekk015/zha_quirks/blob/main/ts0601_thermostat_avatto.py
however this device has a number of issues not dependent on Home Assistant or the ZigBee protocol itself, see here
https://github.com/jacekk015/zha_quirks/issues/29

@glcos Thank you.
Have this model as well [gotten it with the 11.11 sale, at a steep discount], with this the 3 most important features are working for me
One question: Do you know if its possible to FULLY deactivate the build in programming/scedule
I have a Avatto one as well, of which this is possible. Having it only be In Manual modus.
https://www.aliexpress.com/item/1005002960679997.html?
And want to know if its possible on the MOES one as well

Not sure what caused it, but For some reason the thermostat wants to heat to over 9-90 times the surface temperature of the sun

@glcos Contacted the seller for the advanced menu instructions, and It does not look like its possible to disable the build in scedule
Now I only needs to find out why HASS thinks I want to heat my room to a temperature hotter than the sun

See following log [Due large file size and randomness in the spikes, I cut the section of the most recent spike with roughly 3 temp/set checks before the spike]
home-assistant log [CUT].log

Thanks for all the time and research guys, I really appreciate it 😄
I don't think I put it anywhere in the original post so I edited to reflect what I now understand to be the specific model identifier: _TZE204_aoclfnxz

@DJ-Specter Do you have the same issue with those Solar-flare temperature spikes?

This also seems like a good opportunity to flag another post that much to my distress hasn't had any traction, but which I'm pretty sure must be related:
https://community.home-assistant.io/t/call-service-set-target-temperature-only-sets-temporarily/649184

@DJ-Specter @darknessblade in my installation I don't see these spikes in temperature.
I use ZHA and a ZigBee coordinator based on Texas Instruments CC2652P

@glcos I use the "Sonoff Zigbee 3.0 plus type E" with ZHA.
Currently have changed the build in scedule to have everything set at 00:00 and 15C.
Did this as a test to see if this would have any effect on the spikes.
The weirdest part is that I have not touched or interacted with the Climate card/integration or panel. yet it still has spikes

Does anyone know how long these kind of device support requests take to be actioned?
I'm wondering now about just using the smelly Smart Life app to unlock the full content of these and some TRVs I got, but I really don't want to.

@darknessblade I received a new Avatto thermostat and tested, now I think I understand what you ment for disabling scheduling mode.
I want my thermostat to be in manual mode, but once in while for some reason it goes into this screen by itself:

I could not find a way to completely disable scheduling or advanced programming mode and put it into manual.
I cannot understand if it's Home Assistant that is pushing this mode for some reason or it's the thermostat itself.

Not sure waht causes that blank screen.
it might be because you turned the thermostat OFF trough the off button/turn of heating
which turns of the screen.
Also a small update regarding My moes thermostat
after updating the zigbee coordinator, it still gives the same spikes as I had before.

Do the spikes only happen when the mode is switched from heat to off, or vice versa?
Or are they when the temperature is changed, maybe? It's hard for me to see from the graphs, but I feel like it's possible to test.
I'm also convinced this is the thing that's causing my thermostat to gradually decrease the temperature it's set to, per the HA community ticket I linked above...

Caught the error in action:

It is only on HASS its side, as the thermostat itself does not show strange behavior or try to turn on even though hass thinks it is set to 2133C

So is this a manufacturer problem then? How can we move forward to get it fixed?

@DJ-Specter
The only way I can think of is that HASS needs to Ignore ALL inputs/data changes that are above 50C
Like in my Image 2133C. would be cut off to 50C.
This way the "bug" still is present, but the log data is more readable, as the spikes are cut off at 50C instead of UNCAPPED. which results in rare spikes of 1.3BILLION degrees Celsius.
My reason for 50C, is because nobody would use a set temp above 30C ""under normal use"". [Unless people use it for a Infared sauna, trough the floor sensor with the electric heating panel].
As I am not well versed in coding, I am not sure if its possible to do this with the custom quirks.

@DJ-Specter tried contacting the manufacturer/seller, for the tuya cluster information, but they do not want to give this information.
Would it be possible to hardlock the max reported set-temp to 50C, in the custom quirk? where it ignores anything above said value

That's very annoying, damn. Nice one for getting in contact with them!
I strongly endorse your suggestion but have no idea how to make it happen
I'm afraid 😅
Hopefully it can be factored into the official ZHA quirk when this ticket
gets actioned?
Or some enterprising dev can swoop in to the rescue with an amendment to
the custom quirks listed above, or something fresh if that's more
constructive?
On Sat, 20 Jan 2024, 07:47 darknessblade, @.***> wrote:

@DJ-Specter https://github.com/DJ-Specter tried contacting the
manufacturer/seller, for the tuya cluster information, but they do not want
to give this information.
Would it be possible to hardlock the max reported set-temp to 50C, in the
custom quirk? where it ignores anything above said value
—
Reply to this email directly, view it on GitHub
https://github.com/zigpy/zha-device-handlers/issues/2755#issuecomment-1901795713,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ADNDXYDE2F24C4GMJGILEKTYPNR6PAVCNFSM6AAAAAA7N6L636VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSMBRG44TKNZRGM
.
You are receiving this because you were mentioned.Message ID:
@.***>

@DJ-Specter
True, luckily the thermostat has a roughly 10 second delay before activating the relay. so the 1MS "false positive" update isn't the biggest issue in terms of function, its only annoying for logging purposes, as it KILLS the graph.
In my opinion they should HARD-limit all thermostats recording/messages to a default limit.
This will prevent the same from happening on any future different thermostat.

Fixed quirk at repo:
https://github.com/jacekk015/zha_quirks
All target room temp spikes over 50 degrees are not reported to HA.

Whoa, out of nowhere, a new hero swoops in!
Amazing, thank you so much dude! I've just added it and will keep an eye on my temps over the next week and report back.

Those spikes are seen in your previous log, so device send it, unfortunately.
2023-12-05 10:14:49.413 DEBUG (MainThread) [zigpy.application] Received a packet: ZigbeePacket(timestamp=datetime.datetime(2023, 12, 5, 9, 14, 49, 413554, tzinfo=datetime.timezone.utc), src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0xEA98), src_ep=1, dst=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x0000), dst_ep=1, source_route=None, extended_timeout=False, tsn=25, profile_id=260, cluster_id=61184, data=Serialized[b'\tU\x02t\xb9\x10\x02\x00\x04\x00\xaa\x04\x00'], tx_options=<TransmitOptions.NONE: 0>, radius=0, non_member_radius=0, lqi=152, rssi=-62)
2023-12-05 10:14:49.414 DEBUG (MainThread) [zigpy.zcl] [0xEA98:1:0xef00] Received ZCL frame: b'\tU\x02t\xb9\x10\x02\x00\x04\x00\xaa\x04\x00'
2023-12-05 10:14:49.414 DEBUG (MainThread) [zigpy.zcl] [0xEA98:1:0xef00] Decoded ZCL frame header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.CLUSTER_COMMAND: 1>, is_manufacturer_specific=0, direction=<Direction.Client_to_Server: 1>, disable_default_response=0, reserved=0, *is_cluster=True, *is_general=False), tsn=85, command_id=2, *direction=<Direction.Client_to_Server: 1>)
2023-12-05 10:14:49.415 DEBUG (MainThread) [zigpy.zcl] [0xEA98:1:0xef00] Decoded ZCL frame: AvattoManufCluster:set_data_response(param=Command(status=116, tsn=185, command_id=528, function=0, data=[4, 0, 170, 4, 0]))
2023-12-05 10:14:49.415 DEBUG (MainThread) [zigpy.zcl] [0xEA98:1:0xef00] Received command 0x02 (TSN 85): set_data_response(param=Command(status=116, tsn=185, command_id=528, function=0, data=[4, 0, 170, 4, 0]))
2023-12-05 10:14:49.415 DEBUG (MainThread) [zhaquirks.tuya] [0xea98:1:0xef00] Received value [0, 170, 4, 0] for attribute 0x0210 (command 0x0002)
2023-12-05 10:14:49.416 DEBUG (MainThread) [homeassistant.components.zha.core.cluster_handlers] [0xEA98:1:0x0201]: Attribute report 'AvattoThermostat'[occupied_heating_setpoint] =<PHONE_NUMBER>
2023-12-05 10:14:49.416 DEBUG (MainThread) [homeassistant.components.zha.core.cluster_handlers] [0xEA98:1:0x0201]: Attribute report 'AvattoThermostat'[occupied_heating_setpoint] =<PHONE_NUMBER>
2023-12-05 10:14:49.418 DEBUG (MainThread) [zigpy.zcl] [0xEA98:1:0xef00] Sending reply header: ZCLHeader(frame_control=FrameControl(frame_type=<FrameType.GLOBAL_COMMAND: 0>, is_manufacturer_specific=False, direction=<Direction.Client_to_Server: 1>, disable_default_response=1, reserved=0, *is_cluster=False, *is_general=True), tsn=85, command_id=<GeneralCommand.Default_Response: 11>, *direction=<Direction.Client_to_Server: 1>)
2023-12-05 10:14:49.418 DEBUG (MainThread) [zigpy.zcl] [0xEA98:1:0xef00] Sending reply: Default_Response(command_id=2, status=<Status.SUCCESS: 0>)
2023-12-05 10:14:49.419 DEBUG (MainThread) [bellows.zigbee.application] Sending packet ZigbeePacket(timestamp=datetime.datetime(2023, 12, 5, 9, 14, 49, 419008, tzinfo=datetime.timezone.utc), src=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0x0000), src_ep=1, dst=AddrModeAddress(addr_mode=<AddrMode.NWK: 2>, address=0xEA98), dst_ep=1, source_route=None, extended_timeout=False, tsn=85, profile_id=260, cluster_id=61184, data=Serialized[b'\x18U\x0b\x02\x00'], tx_options=<TransmitOptions.ACK: 1>, radius=0, non_member_radius=0, lqi=None, rssi=None)
2023-12-05 10:14:49.419 DEBUG (MainThread) [bellows.ezsp.protocol] Send command sendUnicast: (<EmberOutgoingMessageType.OUTGOING_DIRECT: 0>, 0xea98, EmberApsFrame(profileId=260, clusterId=61184, sourceEndpoint=1, destinationEndpoint=1, options=<EmberApsOption.APS_OPTION_RETRY|APS_OPTION_ENABLE_ROUTE_DISCOVERY: 320>, groupId=0, sequence=85), 64, b'\x18U\x0b\x02\x00')
2023-12-05 10:14:49.419 DEBUG (MainThread) [homeassistant.components.zha.entity] climate.tze204_moes_ts0601_thermostat: Attribute 'occupied_heating_setpoint' =<PHONE_NUMBER> update
2023-12-05 10:14:49.420 DEBUG (MainThread) [homeassistant.components.zha.entity] climate.tze204_moes_ts0601_thermostat: Attribute 'occupied_heating_setpoint' =<PHONE_NUMBER> update

Can verify I am only getting DIPS that drop the set_temp to 0-8C
Still slightly annoying, but still better than spikes of 100MIL+, especially for logging data
From the logs: {Isolated the section of the DIP}
Log Temp dip.txt

You know that you have a broken device. There's no cure for that.
Those 3 commands below were sent under half of second.
Your Zigbee mesh is probably totally overloaded with those messages.
I can't make the quirk to omit the 15 degrees setting - it's still in the usable range.
We can play more and count time and omit incoming messages within 1 second, but that's on the HA side.
Zigbee Mesh will still be utilizing a ton of trash messages.
2024-03-12 13:04:05.141 DEBUG (MainThread) [zhaquirks.tuya] [0xb993:1:0xef00] Received value [0, 0, 0, 15] for attribute 0x0210 (command 0x0002)
2024-03-12 13:04:05.194 DEBUG (MainThread) [zhaquirks.tuya] [0xb993:1:0xef00] Received value [0, 0, 0, 0] for attribute 0x0210 (command 0x0002)
2024-03-12 13:04:05.242 DEBUG (MainThread) [zhaquirks.tuya] [0xb993:1:0xef00] Received value [0, 0, 0, 15] for attribute 0x0210 (command 0x0002)

You know that you have a broken device. There's no cure for that. Those 3 commands below were sent under half of the second. Your Zigbee mesh is probably totally overloaded with those messages. I can't make the quirk to omit the 15 degrees setting - it's still in the usable range. We can play more and count time and omit incoming messages within 1 second, but that's on the HA side. Zigbee Mesh will still be utilizing a ton of trash messages.
2024-03-12 13:04:05.141 DEBUG (MainThread) [zhaquirks.tuya] [0xb993:1:0xef00] Received value [0, 0, 0, 15] for attribute 0x0210 (command 0x0002)
2024-03-12 13:04:05.194 DEBUG (MainThread) [zhaquirks.tuya] [0xb993:1:0xef00] Received value [0, 0, 0, 0] for attribute 0x0210 (command 0x0002)
2024-03-12 13:04:05.242 DEBUG (MainThread) [zhaquirks.tuya] [0xb993:1:0xef00] Received value [0, 0, 0, 15] for attribute 0x0210 (command 0x0002)

I use the "Sonoff Zigbee 3.0 plus type E" with ZHA.

Did you upgrade the firmware of the dongle or are you on stock version? I did upgrade my Sonoff-E with, I think, version 7.3.1 at https://darkxst.github.io/silabs-firmware-builder/

I upgraded the firmware from the stock firmware, I am running "Firmware: <IP_ADDRESS> build 176"
I am not running it in DUAL modus [Zigbee+threads]

In what sense would the device be broken?
And what can I do to resolve this?

I have roughly 90 zigbee devices in my network. Of which 12 are switches with Neutral "functioning as repeaters".
According to the ''current'' logs: Zigbee channel 20 utilization is 97.98%!
The thermostat is the Highlighted one [top right] [Connection: 125/60]
"Wifi_analyzer does not show any overlapping Wifi networks in the range of the zigbee channel"

In what sense would the device be broken?

ZHA is in reader mode. It just hears what is sent to HA.
If your device send's 3 different commands, under half of the second, with temp changes that's the device fault.
ZHA doesn't ask anything itself.
You can't even blame repeater or etc. because those commands are different: 15, 0 and 15 degrees back.

Zigbee channel 20 utilization is 97.98%!
If that's only on the restart of HA that's normal.

In what sense would the device be broken?

ZHA is in reader mode. It just hears what is sent to HA. If your device send's 3 different commands, under half of the second, with temp changes that's the device fault. ZHA doesn't ask anything itself.
You can't even blame repeater or etc. because those commands are different: 15, 0 and 15 degrees back.

I can try connecting it to TUYA [have a Zigbee hub, I only use for updates]
Will have to check then what the TUYA IOT platform shows regarding logs.
Can also check if I can still get a refund on aliexpress {even if it has been 5 months after ordering}


sqlcmd doesn't print messages or results until "end-of-batch"

I'm using sqlcmd in a Linux environment, within maintenance scripts etc.
When I have a SQL Statement that loops (waits for various status or similar) I want the output to be displayed at the client/sqlcmd so that waiting users can see what's happening (feedback to user/caller).
Here is an example sql file:
set nocount on
go
select getdate() as now
go
declare @cnt int = 10
declare @time char(8)
while(@cnt>0)
begin
        SET @time= convert (varchar(30), getdate(), 8)
        RAISERROR ('RAISERROR with NOWAIT at: %s', 0, 1, @time) WITH NOWAIT -- <<<< I Expect THIS message to be displayed at the client side (which isn't happening)

        --select @time as ts ---- <<<< even if I add a "select" statement... the resultset isn't displayed until "end-of-batch"

        WAITFOR DELAY '00:00:01'
        set @cnt = @cnt - 1
end
go

Which I execute using sqlcmd -Usa -Sprod-2a-mssql -Ppasswd -i /tmp/xxx.sql | gawk '{ print strftime("[%H:%M:%S]"), $0 }'
Piping output to gawk is just to "timestamp" the ouput, so it's easier to see that the output comes "as a chunk" after last go, The output is below
[12:03:52] now
[12:03:52] -----------------------
[12:03:52] 2020-04-01 12:03:52.993
[12:04:03] RAISERROR with NOWAIT at: 12:03:52
[12:04:03] RAISERROR with NOWAIT at: 12:03:54
[12:04:03] RAISERROR with NOWAIT at: 12:03:54
[12:04:03] RAISERROR with NOWAIT at: 12:03:55
[12:04:03] RAISERROR with NOWAIT at: 12:03:57
[12:04:03] RAISERROR with NOWAIT at: 12:03:58
[12:04:03] RAISERROR with NOWAIT at: 12:03:59
[12:04:03] RAISERROR with NOWAIT at: 12:04:00
[12:04:03] RAISERROR with NOWAIT at: 12:04:01
[12:04:03] RAISERROR with NOWAIT at: 12:04:02

Above you see that all output from the 'RAISERROR' is printed at the same timestamp 12:04:03, after the SQL Batch is completed!
If you execute the same SQL Statement from SSMS, it will print out every 'RAISERROR' in a timely fashion (every second, as expected)
TDS is a streaming protocol, so sqlcmd should be able to do this (just as SSMS does)
As Microsoft is entering the Linux world, the command line tools needs to work in a command line fashion :)

@goranschwarz -- Goran, thank you for your detailed feedback.  Please add this issue here:

SQL Server Feedback


Minimize creation of new internal ESI API objects

Once outer functions are moved to classes, each instance can have its own created-once Api instances instead of creating a new one for each request.

Closed in #13


Add ability to close modal with ESC key

This would be a useful addition to help move around the UI with just the keyboard.

Maybe something like this would work?
const keyboardShortcuts = useCallback((event) => {
  if (event.keyCode === 27) {
    closeModal();
  }
}, []);

useEffect(() => {
  document.addEventListener('keydown', keyboardShortcuts);
  return () => document.removeEventListener('keydown', keyboardShortcuts);
});

@edmundojr Thanks for the suggestion! I've not tried it but it looks reasonable. Feel free to PR a change, otherwise I will try to get round to implementing this in the near future.


add entry about task list changes

add entry about task list changes
Reflect how providers work through the task list - Becoming a teacher design history - GOV.UK.pdf

Should add some textual alternatives to the images, but otherwise reads well to me 😄

@edwardhorsford @paulrobertlloyd thanks for the reviews! I think we've swept up the unsexy quote marks and the accessibility stuff. Good to merge?

Go for it! 😄

I'm getting the 'Some checks were not successful' error message - any idea what that's all about?

Odd. Have rebased and fixed merge commits. It might be a Netlify thing. Let’s leave it a while and see if it fixes itself.

There was a missing comma!

Excuse me @EmmaFrith and @paulrobertlloyd but what time do you call this? STOP WORKING PLEASE.


Dropdown values

Hello,
I am facing a strange problem. I have a simple dropdown on a page where i set the values in html (if there is any).
There was a specific page where i didn't look for a while and worked perfectly in the past. I have a dropdown on that page with the following configuration:
    $(filter).dropdown({
      apiSettings: {
        url: '/api/select/' + relation + '/{query}'
      }
    })

As you can see most minimal setup for remote content.
In version 2.2.13 this is working fine and selected all the values defined in the html on page load.
If i update to a higher version this behaviour is broken and nothing gets selected. I have tried with the saveRemoteData option, set selected etc.
Any idea what the problem is here?

This i my complete setup at the moment:
https://jsfiddle.net/ca0rovs3/309/
Can't get this example really to work because of api results.
But the idea is that if select a result, you submit the form and you come back the values are remembered by semantic ui. The text of the values are appended to the html, this behaviour is what i am looking for and this works in 2.2.13 and lower only....
I hope it is a bit clear now?

This looks related with the famous #6123 bug. You'll have to wait for @jlukic new version with a fix, or build your own semantic-ui with this fix: d980e1dba622e1551329e7bcb155ce8e2ad7ae87

Sorry, i've tried to find a similar question but couldn't find it.
This looks like my problem indeed, thanks!


Uniform course card image on course outline

Description
LEARNER-3386

Codecov Report

Merging #1042 into master will increase coverage by 9.22%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master    #1042      +/-   ##
==========================================
+ Coverage   48.84%   58.07%   +9.22%
==========================================
  Files         409      540     +131
  Lines       25951    36307   +10356
  Branches        0     1260    +1260
==========================================
+ Hits        12677    21086    +8409
- Misses      13274    15084    +1810
- Partials        0      137     +137

Impacted Files
Coverage Δ

Source/CourseOutlineTableSource.swift
62.25% <100%> (-4.42%)
:arrow_down:

Source/Core/Code/JSON+Formatting.swift
66.66% <0%> (-33.34%)
:arrow_down:

Source/OEXSession+Authorization.swift
87.5% <0%> (-12.5%)
:arrow_down:

Source/OEXConfig+URLCredentialProvider.swift
87.5% <0%> (-12.5%)
:arrow_down:

Source/Core/Code/BadgesAPI.swift
90% <0%> (-10%)
:arrow_down:

Source/IconButton.swift
80% <0%> (-9.19%)
:arrow_down:

Source/UserProfilePresenter.swift
83.72% <0%> (-6.91%)
:arrow_down:

Source/Core/Test/Code/Array+FunctionalTests.swift
89.06% <0%> (-6.69%)
:arrow_down:

Source/UIView+UIViewController.swift
94.11% <0%> (-5.89%)
:arrow_down:

Source/Core/Code/StreamWaitOperation.swift
94.44% <0%> (-5.56%)
:arrow_down:

... and 422 more

Continue to review full report at Codecov.

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

@saeedbashir looks good to me, i faced blank card issue just once, i tried many times but could not find it.

@salman2013 Maybe it was a glitch. We can cater this issue if it happens again.


pycaruna stopped working after Caruna shut down their old service

Hi,
pycaruna stopped working today after Caruna removed their good old Energiaseuranta section from their online service. The new Energiaseuranta is at the moment only displaying the consumption data in graph format only.
I just had a chat with Caruna customer service and they promised that their system should be updated with a new version "tomorrow or latest by the end of this week" which would contain the consumption data in numerical format (and as CSV).
Let's see what happens and how complex it will be to grab the consumption data from the new Energiaseuranta...
Cheers,
Markus

I noticed the same thing. It's still possible to fetch json-files via API. I just have to change energiaseuranta.caruna.fi to plus.caruna.fi but the login protocol is a bit different. I try to do that in a couple of days.

  Previous year is stuffed to the same graph etc. But anyways, fetching the json-data and using other means of handling the data is a solution to get over this.

I managed to recreate a login procedure to plus.caruna.fi. Tomorrow I try to finalize next version. Then you should be able to fetch the json-data again. The format is a bit different but it includes temperature information too.

Unfortunately this new Energiaseuranta sucks also otherwise than just the UI. Even when the yesterdays energy readings can be read and downloaded from Fingrid Datahub,  Energiaseuranta doesn't include that data (even when they have read the data and supplied it to Datahub), Their database system is somewhat buggy,

I use Entsoe for prices.

A bit off-topic from this issue, but I wonder how long Fingrid's portal keeps the session alive...
It requires strong authentication but conceptually it would be possible to fetch data programmatically from there by having an initial setup phase where we grab the session ID one way or another (even manually via a web browser, since it's a one-time activity). And then pass the session ID as an input argument to the actual script that fetches the data. If (when) the Fingrid portal has a session timeout occurring after xyz, we could keep the session alive programmatically by making a dummy requests more frequently than that threshold with cron. Ugly kludge, but conceptually it should work...
I've been very happy with pycaruna so far. I've built this kind of a dashboard for keeping an eye on the "Kulutusvaikutus" that we have in our Väre Välkky contract (we pay 14.8 c/kWh +/- "kulutusvaikutus"). Our record so far is 14.8 c/kWh - 9.9 c/kWh this August when the prices were going wild...
Here's a screenshot of the dashboard: https://imgur.com/xVC24KC

This issue is now fixed. Unfortunately It's only possible to fetch one day at the time but let's hope it's going to change in the future because you can fetch an excel file with time interval from aws bucket at the moment.

@masipila It's quite simple by using Entsoe.
You can find the instructions to get API KEY from here

This issue is now fixed. Unfortunately It's only possible to fetch one day at the time but let's hope it's going to change in the future because you can fetch an excel file with time interval from aws bucket at the moment.

Thank you so much Kimmo! I'll give it a spin this afternoon!

@masipila It's quite simple by using Entsoe. You can find the instructions to get API KEY from here

I don't think Entsoe has the consumption data. I'm already fetching the spot prices from there, but my previous thinking out loud last night was about developing a similar consumption-fetcher from Fingrid Datahub that what this pycaruna is doing. See https://oma.datahub.fi/#/login The benefit of that is that it would work for everybody in Finland regardless who their power grid operator is.
But now that this pycaruna is updated, I personally don't need it because I live in Caruna network...
Cheers and thanks once more!
Markus

@masipila Thanks for info. I didn't know about that service at all. I just know that Fingrid is using kdb+/KX Systems as their backend for data. :)

You're welcome :)
I submitted a feature request to Fingrid some weeks ago proposing that they would enable API access to consumers as follows:

Consumers can log in to https://oma.datahub.fi and generate an API token
Consumers can make an API request to fetch their own consumption data using the API token

If somebody likes this idea, please send a feature request to Fingrid. I would assume the more folks request this, the more weight it gets in their backlog prioritization. Their feedback form can be found at https://support.datahub.fi/datahub?id=csm_public_form
I've noticed that the consumption data is available in Väre Välkky mobile app typically several hours before it's available in Caruna Energiaseuranta. Välkky fetches the data from Fingrid Datahub.

@masipila It looks like I know which one is my next hobby project. ;)  At the moment the easiest way to work with Datahub api is to work exactly as you described earlier. Maybe it would be wise to use Selenium for getting an authorization token and then you could use it quite nicely.

When you have it ready for beta testing, please drop a line for example in this issue thread with a link to the new repo and I'll be more than glad to help with testing and smoothing the rough edges.
Unfortunately all this frontend and beautifulsoup stuff is so much beyond my own comfort zone that I'm not able to help with the actual development...
Cheers,
Markus


Adding a new 'tag everyone' whatsapp bot [GSSOC '23]

Description:
This GitHub issue proposes adding a WhatsApp Group Tagging Bot to the repository. The bot, developed in Python using Selenium, will automate the process of tagging everyone in a WhatsApp group.
Implementation:
The bot will utilize Selenium for web automation and interact with the WhatsApp web interface. It will send a message that tags all members in the group, saving time and effort.
Expected Outcome:
The WhatsApp Group Tagging Bot will effectively tag all members in a WhatsApp group, ensuring they receive a notification. As the GSSOC '23 contributor, I will implement this feature and welcome any suggestions or enhancements to the bot's functionality.

Hi @anuraganand92, Would you assign me this issue under GSSOC?

I want to work on this issue and will add a 'tag everyone' whatsapp bot. Please assign this to me.

@anuraganand92 Go ahead !!

How do I add this to my WhatsApp??

Hello

same issue of @ajtazer

how can I do it in my ends here I am really interested

Description:
This GitHub issue proposes adding a WhatsApp Group Tagging Bot to the repository. The bot, developed in Python using Selenium, will automate the process of tagging everyone in a WhatsApp group.
Implementation:
The bot will utilize Selenium for web automation and interact with the WhatsApp web interface. It will send a message that tags all members in the group, saving time and effort.
Expected Outcome:
The WhatsApp Group Tagging Bot will effectively tag all members in a WhatsApp group, ensuring they receive a notification. As the GSSOC '23 contributor, I will implement this feature and welcome any suggestions or enhancements to the bot's functionality.

someone can teach me how to set up this please :')

Hiii how do I get the bot on my WhatsApp please


Update the link to scikit-learn API page

Change the URL for API in _data/navigation.yml from https://scikit-learn.org/stable/modules/classe to https://scikit-learn.org/stable/api/index. This is because of the theme migration of the scikit-learn main website.

@Charlie-XIAO Thanks for flagging this. The link has been updated.


Fedora VM Worker Not Joining

In past, I've used k8s 1.20 in a bare metal cluster that i've established. I have a fair expertise with K8S.
This is my first time using K3S.
I am starting with a 2 VM (Fedora 33 on Virtualbox) test cluster.
I've followed the quickstart instructions.
I am able to create a master ("wiggles") .

I run a command to have my worker node "giggles" join the cluster
The command runs without error:

I've run this command with and without K3S_NODE_NAME (each time on a pristine VM).
Yet the master doesnt see the worker.
Guidance?
P.S. I'm going to delete these machines.. and start fresh. This time I'll use the K3S_NODE_NAME on each node (rather than an IP address).

I've recreated the VM's and tried again.. same result..
The k3s server runs on the master:

The k3s-agent runs on the worker:

Yet the master does not see the worker:

I've noticed that the agent is trying to connect to <IP_ADDRESS>.. despite the fact that I had configured the URL to be <IP_ADDRESS>

This issue suggests that the fix is to set K3S_EXTERNAL_IP.

Latest Attempt (Will tweak this until I have an answer that works):
On Master (After Clean VM Creation):
sudo hostnamectl set-hostname wiggles
reboot

On Worker (After Clean VM Creation):
sudo hostnamectl set-hostname giggles
reboot

On Master:

Add giggles to /etc/hosts

On Worker

Add wiggles to /etc/hosts

On Master:
sudo -i
export K3S_NODE_NAME=wiggles
export K3S_EXTERNAL_IP=<IP_ADDRESS>
export K3S_KUBECONFIG_MODE="644"

dnf install https://rpm.rancher.io/k3s/stable/common/centos/7/noarch/k3s-selinux-0.2-1.el7_8.noarch.rpm
curl -sfL https://get.k3s.io | sh -

cat /var/lib/rancher/k3s/server/node-token

On Worker:
sudo -i
export K3S_NODE_NAME=giggles
export K3S_KUBECONFIG_MODE="644"

export K3S_URL="https://<IP_ADDRESS>:6443"
export K3S_TOKEN=CHANGEME

dnf install https://rpm.rancher.io/k3s/stable/common/centos/7/noarch/k3s-selinux-0.2-1.el7_8.noarch.rpm
curl -sfL https://get.k3s.io | sh -

This is still not working with K3S_EXTERNAL_IP exported on the master! :(

With this it looks like its still using the 10.42 interface:

Yay..

Yay..

The Magic Sauce
I installed two pristine Virtualbox Fedora 33 images. I set each up with two networks.
Then, other than setting the hostname for each, I was able to immediately install k3s as follows.
On Master
export K3S_NODE_NAME=wiggles
export INSTALL_K3S_EXEC="--write-kubeconfig ~/.kube/config --write-kubeconfig-mode 666 --node-external-ip <IP_ADDRESS> --tls-san <IP_ADDRESS>"
curl -sfL https://get.k3s.io | sh -s -

cat /var/lib/rancher/k3s/server/node-token

On Worker
export K3S_NODE_NAME=giggles
export K3S_URL="https://<IP_ADDRESS>:6443"
export K3S_TOKEN=CHANGEME
curl -sfL https://get.k3s.io | sh -s -

P.S. I didnt need to update the hosts file (on either master or worker) to ensure that each VM could get to the other VM using that hostname (I use IP addresses in the magic sauce). By default in Virtualbox my VM's both had the name "fedora". I did modify their hostnames (using hostnamectl set-hostname changeme), prior to installing k3s
P.P.S I did need this command (prior to running curl): dnf install https://rpm.rancher.io/k3s/stable/common/centos/7/noarch/k3s-selinux-0.2-1.el7_8.noarch.rpm
If you have not installed this RPM, the k3s install script fails and indicates that this package must be installed. The script says to use "yum". However "dnf" works. Its safest to use the URL provided by the script itself (on that first failure).
P.P.P.S I spent the better part of a day struggling with this. I am happy with the end result though. Hopefully this answer will help someone avoid spending a day scratching their head over the variety of comments found in other issues.
P.P.P.P.S I found this, this, and this documentation to be the most helpful.
It's actually fairly accurate and clear documentation... yay Rancher. The only thing it seems to lack is a number of clear, and complete, examples. For example I'd have thought that a small (at home) Virtualbox cluster would be a good example. To me what these kinds of packages often lack, are a set of examples that people can reference in a hope to find an environment close to theirs. Nowadays people just assume you are serving machines up from AWS or some other public cloud. I wish there was better documentation support for environments such as an at-home VM cluster (all on a single laptop in my case).

I got same issue when deploying k3s cluster using virtualbox/vagrant, agent could not be found after installed.
Your solution works well, and thanks for saving days of my life!
For those who are interested on my scripts to create k3s cluster, here is the repository: https://github.com/drriguz/k3s-vagrant

Thanks for this very detailed guide @davesargrad, you've surely helped me save quite a lot of time!
I'd also like to point out that in my case I had to disable the firewall, in case someone else faces the same issue. This can easily be done with :
systemctl disable firewalld --now
It is also indicated in the K3s requirements page, but when you've tried so many things without success, it's easy to miss again!


CPUParticles: setting direction.y zeroes direction.x unless direction.z is non-zero

Godot version
3.3.2-stable
System information
Artix Linux 5.12.12 :: i7-9750H 16GB GeForce 1650 Max-Q :: GLES 3
Issue description
Changing a CPUParticle's direction.y to anything other than zero will cause it to emit only along the Y-axis, even if direction.x is non-zero, except both direction.x and direction.z are non-zero.
Here is a video (link):

Steps to reproduce
Create a CPUParticle, give it a basic mesh
Set the Direction X to something
Then change Direction Y
Observe that the particle emits exclusively on the Y-axis.
Then change Direction Z
Observe that the Direction X value is once again respected
Minimal reproduction project
Here is the test scene from the video
main.tscn
[gd_scene load_steps=2 format=2]

[sub_resource type="CubeMesh" id=1]
size = Vector3( 0.2, 0.2, 0.2 )

[node name="main" type="Spatial"]

[node name="CPUParticles" type="CPUParticles" parent="."]
mesh = SubResource( 1 )
direction = Vector3( 11.706, 0, 0 )
spread = 0.0
initial_velocity = 3.35

Fixed by #51565.


[the version of mmdet]

Branch
master branch  https://mmrotate.readthedocs.io/en/latest/
📚 The doc issue
Hi, thanks for your sharing. could please tell me the version of your mmdet?
Suggest a potential alternative/fix
No response

mmdet 2.266


[Bug] Storybook still pinging webpack hmr when using @storybook/builder-vite

Describe the bug
Storybook is still pinging the webpack hmr address even though I have the builder set to @storybook/builder-vite.
GET http://localhost:5555/__webpack_hmr 404 (Not Found)
Here is an excerpt of my main.js:
module.exports = {
  addons: [
    '@storybook/addon-links',
    '@storybook/addon-docs',
    {
      name: '@storybook/addon-postcss',
      options: {
        postcssLoaderOptions: {
          // NOTE: This is needed to force the addon to use PostCSS 8 (required for Tailwind)
          // https://www.npmjs.com/package/@storybook/addon-postcss
          implementation: require('postcss'),
        },
      },
    },
  ],
  typescript: {
    check: false,
    reactDocgen: false,
  },
  core: { builder: '@storybook/builder-vite' },
}

Steps to reproduce the behavior

Use the config above
Go to storybook
Check console for 404 ping

Expected behavior
Storybook does not ping webpack hmr address when using vite.
Screenshots and/or logs
GET http://localhost:5555/__webpack_hmr 404 (Not Found)
Environment

OS: MacOS
Node.js version: 16
NPM version: Yarn 3.1.1
Browser (if applicable): N/A
Browser version (if applicable): N/A
Device (if applicable): N/A

Additional context
Add any other context about the problem here.

@benatshippabo what version of storybook are you using?

@IanVS 6.4.20
here's the rest of the relevant versions
{
  "devDependencies": {
    "@storybook/addon-actions": "^6.4.20",
    "@storybook/addon-docs": "^6.4.20",
    "@storybook/addon-links": "^6.4.20",
    "@storybook/addon-postcss": "^2.0.0",
    "@storybook/builder-vite": "^0.1.24",
    "@storybook/core-common": "^6.4.20",
    "@storybook/react": "^6.4.20",
    "vite": "^2.9.1"
  },
}

@benatshippabo ok thanks, that all looks fine.  The only thing I notice is that you don't have a framework specified in your main.js.  (see https://storybook.js.org/docs/react/configure/overview#configure-your-storybook-project).  If adding that doesn't fix it, would you mind creating a minimal reproduction repo that we can take a look at to try to figure out what's going on?

@IanVS ah that was it, I didn't set the framework 🤦


Warning: To many subtitle lines per subtitle block

For every subtitle block that exceeds the preconfigured maximum number of lines per subtitle block a warning is shown.

The requested functionality is implemented. UI will be implemented at a later stage, therefore the issue is kept open.

The UI part of this issue has moved to https://github.com/IRT-Open-Source/imsced/issues/110. Otherwise, the core requirement of this issue has been met and it can be closed.


enhance: other URL schemes

resolves #72

CHANGELOG.mdに変更点を追記してください。リファクタリングなど、利用者に影響を与えない変更についてはこの限りではありません。
Please add the summary of the changes to CHANGELOG.md. However, this is not necessary for changes that do not affect the users, such as refactoring.

👀 CHANGELOG.md ?

npm run test ✅
npm run lint ✅
npm run api ✅

🙏

wait, I think, after this pull-request merged, it can XSS by like [LETS GET ONE BILLION DALLERS HERE](javascript:alert(1)). we should add validate that it is known safe URL schemes.

😨 You are right.
Are there any other URL schemes apart from javascript that you think are dangerous? Because I think it would be easier to only forbey specific URL schemes (like javascript) than to only allow specific URL schemes. Otherwise that would mean that there could be many "please add protocol xyz" issues in the future.

I don't know, but any URL schemes has a possibility dangerous in the future or specific environment. I prefer allow-list because deny-list may be bypassed if implementation is vulnerable for hacky escape or other something. I think "got many 'please add XXXX protocol' issue" is better than possibility vulnerable.

Hmm, or maybe a content security policy could avoid such things.
<meta http-equiv="Content-Security-Policy" content="script-src 'self';">

This would allow JavaScript from javascript: and even data: etc. URLs: https://developer.mozilla.org/en-US/docs/Web/HTTP/Headers/Content-Security-Policy/script-src

[...] may be bypassed if implementation is vulnerable for hacky escape or other something.

😕 If the browser is vulnerable, I don't think it would be MFM's or Misskey's responsibility to fix it?

yeah, If library users are using CSP correctly, XSS are never executed. but we shouldn't expect that 100% library users are using CSP. actually I think 99% of users are misskey-dev/misskey, but some clients can using this library too. and imagine what occured if this library used in Electron apps without CSP and user clicked javascript link...

[...] may be bypassed if implementation is vulnerable for hacky escape or other something.

😕 If the browser is vulnerable, I don't think it would be MFM's or Misskey's responsibility to fix it?

"implementation" of implementation is vulnerable means mfm.js allow-list implemention, not browser one.

セキュリティの側面から見てなかったので、助かった。
使用可能なスキーマをホワイトリストにする方が良いかもしれない。
また、ユーザーアプリ側からホワイトリストをカスタマイズ可能にすることもできそう。(許可するかどうかは要検討)
このPRの内容からは若干反れるので、別のissueとした方が良さそう。

うん、私もセキュリティの観点はすっぽり抜けてた
ありがとうございます🙏

In the future, we may allow schemas other than http/https in a whitelist or blacklist format, but for now, we need to revert for safety. 🙏🏻


Add option to suppress trailing linefeed

The linefeed that is printed after each stage (if anything is) is separate from the actual output string of the stage (that is, this linefeed is not passed on as input to the next stage). That means there is no way to suppress that linefeed in Retina currently, because even an empty result will print this linefeed. There should be an option for all stages which suppresses this (i.e. changes the semantics from Console.WriteLine to Console.Write).

Implemented in b88e8bc9b5bf0508397b3e9b6d50695f07cb8e35. Will be released in 0.7.2.


Remove spaces in range operators

This is a question of preference, but it looks like the most commonly used format for ranges in Swift projects is what can be found in the Swift Book where there is no space between the values and range operators, for instance: case 200..<300: contrary to the current case 200 ..< 300.
What do you think? 🙂

no strong opinion here

@ktoso Makes sense too, although personally I would prefer parenthesising or disambiguating with TypeName.foo.

thanks, @adtrevor !


Array Lists functions ADT

Budlak made this. The function prototype was sent in the gc. I added the implementations


---?include=relative/path/file.md for composable slideshows

along with https://github.com/gitpitch/gitpitch/issues/52 one can achieve reusable slides

Hi @freddi301 thanks for your feedback, this is an interesting feature request. However the feature as described would add considerable complexity for what in my experience of typical usage would be a real edge case.
As noted in my comment on #52 you can easily maintain multiple slideshows in a single repo. I know this won't give you reusable slides as requested but it should greatly simplify managing related content across multiple slideshows.

Hi, i don't know how hard it can be to implement it.
I was thinking that i can add a build step to my project that replaces #INCLUDE with the content of related file.
I am writing a programming course, and i will teach it to different skill level classes, so ti would be handy to have this feature to just include/exclude content by need.
Anyway this feature could be optional so no problems for tipical usage.
While my use-case could be an edge case, consider this feature request on the long run and don't close the issue.
Thank you, i'm enjoing gitpitch :smile:

Hi,
i see that there are a feature like i requested already for gists and images, i propose something like
---?include=horizontal/slide.md
+++?include=vertical/slide.md

Hi @freddi301 again thanks for all the feedback.
Unlike gists and images, markdown requires special server-side preprocessing before it can be used to generate the slideshow that you see in your browser. So the handling of ---?include=path/slide.md is quite a bit more complex than simply handling gists and images. Not impossible, just not trivial.
I'll leave this issue open and if I get to implementing this feature I will update the issue and let you know.
Please keep me informed of your progress with your programming course, it sounds very interesting and I'm glad to hear you are enjoying using GitPitch. Is your course associated with a university?

Hi @freddi301 I have prototyped a solution that is available for you to try out that should allow you to build fully composable presentations using Markdown includes to build out the content of your slideshow.
GitPitch now supports the following new delimiter arguments for horizontal and vertical includes respectively:
---?include=path/to/some.md

+++?include=path/to/other.md

See the following sample presentation for a demonstration of how you can use this new feature.
As you will see this sample presentation takes the full content of the Kitchen Sink presentation and breaks out each feature into it's own markdown file. The main PITCHME.md file then declares the necessary include statements in order to pull all of the feature details into the main presentation.
This feature is live on gitpitch.com. I do still consider this feature to be experimental. Your testing and feedback will help with my decision as to when to promote this feature into master. Let me know how it goes.

Hi @gitpitch ,
the basic ---?include=path/file.md works fine.M
I did not have time, did you add a guard against circular dependency?
A simple singleton mechanism would be ok, example:
GITPITCH.md
include slideA.md
include slideB.md
slideA.md
include slideC
slideB.md
include slideA
you could create map of singletons, so a slide that is included more then once, will appear only where included the first time and optionally a link to the related slide the other times. This makes sense as if you teach something that has slides in common to another course.
The slideshow is here https://github.com/freddi301/h5c3j5-course
I replicated a bit of gitpitch functionality on clientside here https://freddi301.github.io/h5c3j5-course/?h=0&v=0

Hi @freddi301 as only the master PITCHME.md is currently eligible for include processing there is no risk of circular dependencies.
The example presentation structure you described is not supported as you are using the include mechanism outside of your PITCHME.md.

Perfect :+1:
Great work, it's what i need

Modular, composable presentation markdown feature provided by commit 2b11bc310f255cee4ca2e4997b6060f7809fd63c.


Build pipeline BGA

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


Prefer announced suburbs that have not been updated in 30 days

Per https://github.com/LukePrior/nbn-upgrade-map/issues/226
No preference given to closer announced dates - I think processing will be fast enough already.

Looks good did you just want to remove the commented-out prints?

Done.  Some day, this deserves a unit-test.

Cheers

Will need to keep an eye on it to see if 30 days works well.

Hmmm not sure if working as expected: https://github.com/LukePrior/nbn-upgrade-map/commit/2049f611e23ab6c80601c400baa82e879cd64cca

I might PR a bit of logging that emits when it tries each of the preferences, so we can tell where it's up to...

Right now there are only 7 announced suburbs with processing dates older than 30 days:
2023-08-08 09:40:12,244 INFO MainThread Checking for unprocessed suburbs...
2023-08-08 09:40:12,244 INFO MainThread Checking for announced suburbs that haven't been updated in 30 days...
2023-08-08 09:40:12,246 INFO MainThread 1 2023-07-08 22:28:00.577343 selected SPRINGDALE HEIGHTS, NSW
2023-08-08 09:40:12,246 INFO MainThread 2 2023-07-08 22:35:47.799409 selected SPRINGFIELD, NSW
2023-08-08 09:40:12,246 INFO MainThread 3 2023-07-08 23:02:30.004437 selected STANFORD MERTHYR, NSW
2023-08-08 09:40:12,246 INFO MainThread 4 2023-07-09 01:59:33.474006 selected URALLA, NSW
2023-08-08 09:40:12,246 INFO MainThread 5 2023-07-09 03:51:16.861596 selected WILBERFORCE, NSW
2023-08-08 09:40:12,246 INFO MainThread 6 2023-07-09 04:08:57.732585 selected WINDERMERE PARK, NSW
2023-08-08 09:40:12,246 INFO MainThread 7 2023-07-09 05:06:07.695305 selected WOOLGOOLGA, NSW
2023-08-08 09:40:12,246 INFO MainThread Checking for all suburbs...

GHA hasn't got those 7 yet - difference in timezone (and the processed_date field doesn't have TZ info).
If the GHA keeps running, we should see a few 30-day suburbs popping up every day (about 90/day on average).  The rest of the day will be processing the non-announced suburbs.

Turns out (duh) the number of announced-suburbs that will be processed is more lumpy than that.   Eg the last couple of weeks: processing-date,  num-announced, num-other
2023-07-26 0 442
2023-07-27 0 164
2023-07-28 66 475
2023-07-29 54 588
2023-07-30 0 643
2023-07-31 158 44
2023-08-01 267 0
2023-08-02 191 0
2023-08-03 210 0
2023-08-04 259 0
2023-08-05 257 0
2023-08-06 217 203
2023-08-07 376 243
2023-08-08 8 65

Given that we process ~400-500/day now, our full-cycle time will be about 30 days anyway, so I don't think this PR is actually needed (hahah).

xxx

emits

day
announced
other

2023-06-16

222

2023-06-17

174

2023-06-18

229

2023-06-19

252

2023-06-20

62

2023-06-24

189

2023-06-25

249

2023-06-26

182

2023-06-29

150

2023-06-30

5

2023-07-01

233

2023-07-02

226

2023-07-03

98

2023-07-04

171

2023-07-05

179

2023-07-06

176

2023-07-07

125

2023-07-08

172

2023-07-09
6
207

2023-07-10
9
192

2023-07-11
162
15

2023-07-12
100
240

2023-07-13
1
533

2023-07-14

516

2023-07-15
1
520

2023-07-16

517

2023-07-17
98
431

2023-07-18
1
624

2023-07-19
7
612

2023-07-20
59
547

2023-07-21
123
113

2023-07-22
84
70

2023-07-23

416

2023-07-24

468

2023-07-25

418

2023-07-26

442

2023-07-27

164

2023-07-28
66
475

2023-07-29
54
588

2023-07-30

643

2023-07-31
158
44

2023-08-01
267

2023-08-02
191

2023-08-03
210

2023-08-04
259

2023-08-05
257

2023-08-06
217
203

2023-08-07
376
243

2023-08-08

65

date
announced
other

TOTAL
2706
12400

Given that we process ~400-500/day now, our full-cycle time will be about 30 days anyway, so I don't think this PR is actually needed (hahah).

Well if it's that we can reliably recheck everything in 30 days the time period for announced could possibly be reduced to something lower or maybe checking something with the announced date.

I'm not sure I believe anything from NBNco about their announced date :)
I'll commit the code above into a PR in adhoc-tools, so we can run it again in a few weeks, see how it's going.


Can't put Database in another folder as App

I've tried googling this to see if there's a way to do it, but I'm currently trying to make the database for my App in ~/STEiN/(AppName)/(db) - I've tried setting the database string to be the full directory, I've tried making a temporary database, then using system() to move it to where I want it (which got it where I wanted it!) BUT then when I go to use it I keep getting nil. Any help would be greatly appreciated!!

I encountered this problem too. Basically it's down to the fact that the database files are in the App Bundle. You can't write to there, but you can read
A solution is to create a database with "createTable()" function in the App's Documents folder.

I actually don't entirely know how to do that x.x Would it be possible for me to store it in their home Directory with the structure I said above using createTable()?  I have other apps that use the ~/STEiN folder which is why I was asking (Maybe I could use system() to move it?)

@Stein-Net You can definitely do that.
let documentsPath = NSSearchPathForDirectoriesInDomains(.DocumentDirectory, .UserDomainMask, true)[0] as! String
That's the path to the documents directory. You can work it out from there. Append a path component, and then use that as the file location.


Unable to install with go

Hi there,
I found out about your project, decided to try it and install via go install. As a result, I've got this error
$ go install github.com/dlvhdr/diffnav@latest                                                                                127 ↵  ✹install-script
go: downloading github.com/dlvhdr/diffnav v0.1.0
go: github.com/dlvhdr/diffnav@latest: <EMAIL_ADDRESS>verifying module: checksum mismatch
        downloaded: h1:c3J9yNB0Tm/eL7JW35QEDhGLudY1sQozSt+w3XAX+zk=
        sum.golang.org: h1:EVO3VFYGrKzzF7dHnRCjnkjqjROrb5nSCT+D+RPtmHM=

SECURITY ERROR
This download does NOT match the one reported by the checksum server.
The bits may have been replaced on the origin server, or an attacker may
have intercepted the download attempt.

For more information, see 'go help module-auth'.

I think it's because I committed changes to the README straight on main. I've released a new version, can you try now?

Works now. Thanks!


Backend functions

Adds and modifies some backend functions.

abs and sign
A new function `pivot' that matricizes a tensor about an axis.
split_axis renamed pivot_axis for consistency.
The functions called foo_decompostion are now called foo
qr and rq accept a flag non_negative_diagonal that enforces the matrix R have this property.
diag replaced with two functions diagonal and diagflat that respectively extract diagonal entries and create diagonal matrices.
trace modified to have the same syntax as diagonal (as it does in numpy).
Tests for all of these

Break this up into smaller PRs. It's too easy for things to fall through the cracks for a 1,000+ line PR.

Hey @alewis what's the status here?


feat: update migrations for v1 stablecoin vaults

Important changes detected  (payment related code)

Found address 0x39546945695DCb1c037C836925B355262f551f55 in files app/containers/Vaults/blacklist.json. This address is from vault yvhusd3CRV
Found address 0xACd43E627e64355f1861cEC6d3a6688B31a6F952 in files app/containers/Vaults/futureMigrationWhitelist.json, app/containers/Vaults/migrationWhitelist.json. This address is from vault yDAI
Found address 0x597aD1e0c13Bfe8025993D9e79C69E1c0233522e in files app/containers/Vaults/futureMigrationWhitelist.json, app/containers/Vaults/migrationWhitelist.json. This address is from vault yUSDC
Found address 0x2f08119C6f07c006695E079AAFc638b8789FAf18 in files app/containers/Vaults/futureMigrationWhitelist.json, app/containers/Vaults/migrationWhitelist.json. This address is from vault yUSDT
Found address 0x37d19d1c4E1fa9DC47bD1eA12f742a0887eDa74a in files app/containers/Vaults/futureMigrationWhitelist.json. This address is from vault yTUSD
Found address 0x6B175474E89094C44Da98b954EedeAC495271d0F in files app/containers/Vaults/migrationWhitelist.json. This address is from token DAI
Found address 0xdA816459F1AB5631232FE5e97a05BBBb94970c95 in files app/containers/Vaults/migrationWhitelist.json. This address is from token yvDAI
Found address 0xA0b86991c6218b36c1d19D4a2e9Eb0cE3606eB48 in files app/containers/Vaults/migrationWhitelist.json. This address is from token USDC
Found address 0x5f18C75AbDAe578b483E5F43f12a39cF75b973a9 in files app/containers/Vaults/migrationWhitelist.json. This address is from vault yvUSDC
Found address 0xdAC17F958D2ee523a2206206994597C13D831ec7 in files app/containers/Vaults/migrationWhitelist.json. This address is from token USDT
Found address 0x7Da96a3891Add058AdA2E826306D812C638D87a7 in files app/containers/Vaults/migrationWhitelist.json. This address is from vault yvUSDT

I'm going to deposit to v1 USDC and test this once gas is a bit cheaper


Just installed sorbet in VS code gives a lot of errors due to gem dependencies

I installed Ruby Sorbet in VS Code.
I created a Gemfile with this:
source 'https://rubygems.org'

gem 'bundler'
gem 'sorbet', :group => :development
gem 'sorbet-runtime'
gem 'tapioca', require: false, :group => :development

I ran bundle install
The extensions tries in a loop to start the service, always giving gem dependencies errors like this:
Running Sorbet LSP with:
    bundle exec srb typecheck --lsp
bundler: failed to load command: srb (/usr/share/rvm/gems/ruby-head/bin/srb)
/usr/share/rvm/rubies/ruby-head/lib/ruby/3.1.0/bundler/spec_set.rb:88:in `block in materialize': Could not find case_transform-0.2 in any of the sources (Bundler::GemNotFound)

I added one by one to the gemfile
# dependencies
gem 'Ascii85', '1.0.3'
gem 'concurrent-ruby', '1.1.10'
gem 'i18n', '1.12.0'
gem 'minitest', '5.16.2'
gem 'thread_safe', '0.3.6'
gem 'tzinfo', '1.2.10'
gem 'activesupport', '5.2.3'
gem 'builder', '3.2.4'
gem 'erubi', '1.11.0'
gem 'racc', '1.6.0'
gem 'nokogiri', '1.13.8'
gem 'rails-dom-testing', '2.0.3'
gem 'crass', '1.0.6'
gem 'loofah', '2.18.0'
gem 'globalid', '0.4.2'
gem 'request_store', '1.5.0'
gem 'active_model_cachers', '2.1.8'
gem 'case_transform', '0.2'

Everytime get a new dependency error.

This doesn’t look like a bug in sorbet, it looks like something wrong about your local ruby environment. You can try asking for help either on Stack Overflow or in the Sorbet Slack community. Hope you figure things out!


Improvement of the UI of the main alerts page for alertmanager

At the moment, if we have lots of alerting rules and accordingly, if there are lots of alerts being fired off, the alerts page just shows a long list of all the alerts. It would be nice to improve the UI for this page so it's easy on the eyes. I was thinking more along the lines of if we could improve the UI so that we summarize different kinds of alerts on the first page, and then maybe it'll show how many servers/nodes were affected with that particular alert and any other summary that might be helpful. This would be in a list categorized by different kinds of alerts. Then, each row would have the link that would take you to another page that then shows all the details for that specific alert.
Basically, an overhaul of the main alertmanager page

Thank you for your comment. Could you provide some more information on your use case, such as why you would like to see all alerts? Are you having, e.g., the same alert firing across hundreds of nodes?
The UI currently has a filtering and grouping feature that we hope would allow most users to "create" an alerts page that is relevant to them and be of a manageable size.
An idea that immediately comes to mind is collapsing the groupings and showing the metadata you're interested in, and then having a "click to expand" feature. This already exists, but on the individual alert level. We also need to be mindful of the needs of all users -- it sounds like you might have many more alerts than the average user, and one of our challenges is providing a single product for teams of very different sizes. The current setup might be working well for 90% of use cases, and introducing an extra step to seeing alerts could be annoying to them.

I think my use case scenario would be the following:
I want to be able to have a page where on first glance, I can see only the alertname that is currently being fired(maybe one alertname per row). And in addition, where i can also see the total number of servers affected by this alerting rule. This comes in handy when we're watching hundreds of servers and somehow, majority of the servers are affected by this one alerting rule. At the moment, if this were to happen, it would be a long page of alerts with each server/node in each row. This becomes clunky when we also have some inhibition rules in place and it's very hard to navigate around.
Let me know if I was clear. If not, I'll try to post a graphic representation of what I'm talking about.

Hm, I'm thinking of two different things:

Collapse the underlying alert information and just show the grouping (be it alertname, or whatever custom grouping a user creates), with information showing number of alerts affected by it.
Add an additional clustering or whatever you want to call it, so that within the main grouping of alertname, you only want to see the unique labels "of interest". In your case, you aren't interested in seeing 100 different instance labels because in that case it's probably not about the instance, or if someone is using kubernetes, they don't need to see 100 different pod_name labels. This would end up being a bit like 1. above, but maybe a bit more fine grained.

@beorn7 @matthiasr @grobie have you all encountered issues that aren't instance/pod specific, but having entries for each one of these unique label sets in the UI is noise you would like to collapse?

I want to second this issue as we also have a considerable environment. The Prometheus alert pane (with default collapse after group on alertname) is very readable even with hundreds of alerts spread across multiple alertnames. With one view of the eye, you know whether things are good or bad.
For Alertmanager on the other hand, without collapsing on alertname, this becomes very troublesome and you can only judge based on the size of the scroller. (small is ok, tiny is bad). Obviously this isn't usable and I notice our people typically prefer the default prometheus alert view over the alertmanager view, even though the alertmanager functionality isn't available there.

@stuartnelson3 👍 for suggestion # 1, @kpachhai would that make your life a little easier?
@pieterdejaeghere Would Stuarts suggestion # 1 work for you? You would just have to group by alertname, the list of alerts would be collapsed per group by default, and you would see the number of alerts per alertname.

suggestion #1 would be excellent, as that means UI parity with the Prometheus alert screen while keeping Alertmanager goodness (silencing).

My 2¢: I rarely use the main alert page as it is now. I either select a receiver immediately to filter by, or I reach alertmanager via a link or bookmark that already contains a receiver.
I would thus leave the decision how to represent all currently firing alerts to those that actually have the use case of looking at all alerts.
However, I would like to raise the scalability concern: If the main page loads all firing alerts, it can become super slow or even crash the browser if there are many firing alerts. Usually, there aren't many alerts firing, but in case of a wide-spread incidents, there will be. And that's the case where you need a slick AM UI most dearly. We should thus aim for some limitation of the number of alerts loaded from AM and represent the case somehow (the easiest way would be "too many alerts firing, select filter to narrow selection", or some kind of pagination; for something more complex we needed a separate endpoint for something like "group name and number of alerts in the group").

I can't remember properly right now, but I believe at one point we loaded 1000 alerts, the app scrolled fine, and we moved on. It would be good to know if this is a problem before we start engineering around it.
@kpachhai @pieterdejaeghere can you give a rough estimate of how many alerts are being shown on the page, and if there's performance degradation/crashes?

I can't remember properly right now, but I believe at one point we loaded 1000 alerts, the app scrolled fine, and we moved on. It would be good to know if this is a problem before we start engineering around it.

Since AM is the one instance where all alerts of an organization arrive, we have to assume there might be millions. I'm not claiming we need to be scalable to infinity, but the UI needs to scale to the same number of firing alerts that the AM backend can handle.

And one other aspect: If I'm on-call on the road, I sometimes need to work with low-bandwidth (e.g. shared crappy WiFi) and/or very expensive connection to the internet (e.g. tethering my phone). Even if thousands of alerts load fine with a broadband connection, and the browser on my 16GiB laptop is fine handling that, it might be very inconvenient in a situation like the above, where the first thing I do might be to look at the AM landing page (perhaps even on the browser of my smallish mobile phone).

We currently have a bit over 400 open and performance seems great (i5-6300u, 16gb, Firefox).
However, with 13000 monitored devices, i wouldn't be surprised if we could have a theoretical alarm count of multiple tens of thousands of alarms.
Because of the difficulty in displaying alerts in Alertmanager, I must say my experience is limited, not a production implementation yet.

Here's a screenshot from the Prometheus UI which might be meaningful

Here's the corresponding Alertmanager screenshot:

Be gentle, we haven't put any effort in naming normalization yet ;)

Hah, this is a no-judging zone :) Ok so this issue is breaking out into a few different things, so let's rein it back in to the initial issue: Collapsing groups on the alerts page.
I'll make a separate issue summarizing the points brought up by @beorn7
@w0rm do you have any spare cycles to look at this?

#1 suggestion seems good enough for my use case as well. Thanks, everyone!

closed by #1876. additional refinements should be opened in different issues.


Add options -h (help) and maybe -V (version)

I believe that every CLI utility should support at least -h to print a brief help message with the available options.

I agree, just pushed a commit adding -h, and released 0.3. I think if somebody needs the version, it's probably best to consult the package manager.
I now consider the GitHub repo to just be a mirror, so please prefer the tarball from sr.ht: https://git.sr.ht/~noocsharp/wayclip/archive/0.3.tar.gz
Thanks for packaging wayclip for Alpine!


Added ClearInboxCommand Class

Codecov Report

Merging #171 into master will increase coverage by 0.08%.
The diff coverage is 84.21%.

@@             Coverage Diff             @@
##             master    #171      +/-   ##
===========================================
+ Coverage     64.42%   64.5%   +0.08%
- Complexity      424     428       +4
===========================================
  Files            61      62       +1
  Lines          1785    1792       +7
  Branches        187     186       -1
===========================================
+ Hits           1150    1156       +6
- Misses          579     580       +1
  Partials         56      56

Impacted Files
Coverage Δ
Complexity Δ

src/seedu/addressbook/inbox/ReadNotification.java
82.25% <ø> (+2.57%)
19 <0> (ø)
:arrow_down:

src/seedu/addressbook/inbox/WriteNotification.java
82.75% <ø> (-0.58%)
8 <0> (+1)

src/seedu/addressbook/commands/InboxCommand.java
88.88% <ø> (ø)
5 <0> (ø)
:arrow_down:

src/seedu/addressbook/Main.java
0% <ø> (ø)
0 <0> (ø)
:arrow_down:

src/seedu/addressbook/inbox/Inbox.java
91.42% <ø> (ø)
11 <0> (ø)
:arrow_down:

src/seedu/addressbook/commands/ReadCommand.java
85.71% <ø> (ø)
5 <0> (ø)
:arrow_down:

src/seedu/addressbook/commands/Dictionary.java
74.35% <100%> (+0.67%)
4 <0> (ø)
:arrow_down:

src/seedu/addressbook/parser/Parser.java
96.42% <100%> (+0.02%)
45 <0> (+1)
:arrow_up:

src/seedu/addressbook/inbox/Msg.java
80% <100%> (-0.27%)
22 <5> (ø)

.../seedu/addressbook/commands/ClearInboxCommand.java
70% <70%> (ø)
2 <2> (?)

... and 1 more

Continue to review full report at Codecov.

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


[FEATURE REQUEST]ApplicationsController - POST /applications: Create controller method to create an application

Before submitting your PR for review

Run npm run lint to find errors in code syntax/format
Run npm run lint:fix to fix all auto-fixable errors in source code and auto-format with prettier
Ensure you fix any linting errors displayed after running any of the above commands

What does this PR do?
Fixes #250 (replace issue_number with the issue number this PR solves)
Summarise the main tasks handled in the pull request
Creates controller method to create an application
description of Task to be completed?

Created Application Controller file

Created Application Route file

Created Application Controller method to create application

How should this be manually tested?

Make a POST request to /applications with the following properties present in the body
{ name:"string", organizationId:"string", createdBy: "string" }

An application will be successfully created and it will return a response with applicationId and applicationToken
What is the link to the issue on Github?
Issue #250
Questions:
If something is unclear or you want some questions to be addressed by your peers, mention them here

This has been fixed in #313


Shimmer 0.2.3 crashes when loading a world with Embeddium 0.3.0 installed

Minecraft Version
1.20.1
ModLoader
Forge
Shimmer version
Shimmer-forge-1.20.1-0.2.3.jar
Modpack info or mod list(please reduce mod range)
Embeddium 0.3.0, Shimmer 0.2.3
The latest.log file and hs_err_pidXXX if exists
https://gist.github.com/DasTechniker/efb157deee6605b4b74aacb129a3393a
optifine , Rubidium , flywheel or any rendering related mods. mod version is required.
Embeddium 0.3.0
Issue description
Upon trying to load a world with both the latest version of Embeddium and Shimmer installed, the game crashes. That's all.
Steps to reproduce

Install both Embeddium 0.3.0 and Shimmer 0.2.3.
Boot up Minecraft. Note that the game itself loads just fine.
Attempt to load or create a world.
Observe mentioned behavior,

Other information
This was initially discovered in a modpack containing 274 mods, but was tested and verified to occur just between these two mods on their own.

Issue persists as of Embeddium 0.3.1.

Dug through the Embeddium source code, looks like encodeDrawParameters moved from CompactChunkVertex.java to VanillaLikeChunkVertex.java, so it should just be an easy fix? My experience with mixins is fairly limited.

I do not know what I am doing

Can confirm, this is happening on any version above Embeddium 0.2.18. I was about to make a report myself and then saw this. Thank you for that @DasTechniker 😅

tyvm, we are trying to fix it. not that really easy, embeddium changed a lot since 0.3.0

try 0.2.4

0.2.4 loads, but the colored lights don't work on blocks in the world. Hand items will glow the correct color, and there's this weird ring of faint color around the block light. Using Spelunkery's glowstick to make it easier to see:

Without Embeddium (for reference):

https://github.com/embeddedt/embeddium/issues/215

New update seems to have fixed crashing but the colored lighting is bugged.
Embeddium Version: 0.3.4
Shimmer Version: 0.2.4
Forge Version: 47.2.0

Works while holding in hand though:

bump

Performance Mods I have installed:
Embeddium
Entity Culling
FerriteCore
ImmediatelyFast
ModernFix
Fastload
Starlight
AI Improvments
Radium

Disabled all those performance mods except for FerriteCore and Embeddium, same issue.

Can vouch this is still happening on the latest versions. Visuals look exactly the same as the pics above, and bloom works inconsistently. Lava seems to be the only thing that keeps its bloom no matter what, no colored glow except the weird colored ring, but hand held and dropped items glow the correct color.
Embeddium: 0.3.9
Shimmer: 0.2.4
Forge: 47.2.0

I also noticed that when colored_lights are enabled, I will get random severe FPS drops when looking in certain directions. (from like 350fps to 100fps)

Bug is still occurring as of Forge 47.2.23, Embeddium 0.3.14.

I was just going to hop in here and bump it again but looks like you had the same idea lol

Bug is still occurring as of Forge 47.2.23, Embeddium 0.3.14.

Mod seems abandoned sadly

Mod seems abandoned sadly

Don't say that 😢


Token not found

Hi there,
First of all thank you for your contribution. Now, I am testing your slim-basic-auth and it works perfectly fine for me in localhost and live server with https. Now I am testing your slim-jwt-auth and I always get "Token not found" in postman either for localhost or live server. Can you please help me with that and tell me how to set it and test it in postman too?
.htaccess file code : RewriteRule .* - [env=HTTP_AUTHORIZATION:%{HTTP:Authorization}]
code for jwt auth:
$container = $app->getContainer();
$container["jwt"] = function ($container) {
return new StdClass;
};
$app->add(new \Slim\Middleware\JwtAuthentication([
"path" => "/api",
"passthrough" => ["/api/token", "/admin/ping"],
"secure" => true,
"environment" => "HTTP_X_TOKEN",
"header" => "X-Token",
"secret" => "supersecretkeyyoushouldnotcommittogithub",
"callback" => function ($request, $response, $arguments) use ($container) {
$container["jwt"] = $arguments["decoded"];
},
"error" => function ($request, $response, $arguments) {
$data["status"] = "error";
$data["message"] = $arguments["message"];
return $response
->withHeader("Content-Type", "application/json")
->write(json_encode($data, JSON_UNESCAPED_SLASHES | JSON_PRETTY_PRINT));
}
]));
$app->add(function($request, $response, $next) {
$token = $request->getQueryParams()["token"];
if (false === empty($token)) {
$request = $request->withHeader("Authorization", "Bearer {$token}");
}
return $next($request, $response);
});
Any errors on the above?

Hi pawebgate,
Try this :


Add files via upload

@quentinfabrie Please provide us with:

the school official website URL
the school street address, including a city
an URL of a page on the official website where the school offers an IT-related long-term (>1 year) course
a proof, which shows that the school recognizes the domain you are submitting as an official email domain for the students.

@quentinfabrie I am sorry, this request remains unanswered for a while. I have to close it without merging. Please reopen and comment if you have an update regarding the aforementioned issue. Thank you for your understanding!


Print message when sides set to 6

Hello!
I am newbie to Python. I am new to Github also. So please pradon me if I don't follow some procedures or make a mistake. Thanks.
Here is why I am suggesting a change:
When d.set_sides(6) there is no way of knowing that the dice has six sides. This change is bringing uniformity.

Thank you for you contribution to the repo and the community


Add the completely free website hosting service by Parmesh Bhatt

Closes #663
Description
Netlify provides offers a development platform that includes build, deploy, and serverless backend services freely.
Checklist

[X] My code adheres to the established style guidelines of the project.
[X] I have included comments in areas that may be difficult to understand.
[X] My changes have not introduced any new warnings.
[X] I have conducted a self-review of my code.

The max length of description is 15 words

I have created another pull request that description follows the max-length requirements.


Location bar is not a standard text field

Standard text field operations (clipboard, select all) do not work in the location bar.
Versions:
Atom 1.1.0
browser-plus 0.0.53
OS X 10.10.5

can you check if some other package is hijacking ..use the key-binder package to check what happens when you do the select all / clipboaard..

Closing it since there are no updates..feel free to re open


Same as react-native-push-notification ?

Hello,
I'm not sure what is the difference between react-native-fcm an react-native-push-notification.
The last one seems adaptable with fcm https://github.com/zo0r/react-native-push-notification/issues/290

different, this uses firebase cloud messaging
not GCM nor apple push system

this repo has better local notification support for iOS with repeat interval
also this repo depends on Firebase Cloud message which is introduced in play-service 9. It will replace old GCM library. Integration is slightly different


Updating Sanity Source

Description

Updating Sanity Source to reflect a few desired changes in how we handle sources:

Handling pagination in result files.
Custom queries for Sanity Source.

Related Issue

#32
#23
Motivation and Context

how many files we are saving and how big they are.
How Has This Been Tested?

Screenshots (if appropriate):
Types of changes

[x] Bug fix (non-breaking change which fixes an issue)
[x] New feature (non-breaking change which adds functionality)
[x] Breaking change (fix or feature that would cause existing functionality to change)

Review Checklist:

[ ] My code follows the code style of this project.
[x] My change requires a change to the documentation.
[ ] I have updated the documentation accordingly.
[x] My change requires a test to make sure it continually works.
[ ] I have added tests accordingly.

@benjaminbojko this should be ready to review

Thanks @pingevt ! Have Jason or Katie been able to test everything here?

I haven't had anyone else test it yet... but let me throw it in Slack.

@pingevt I'd like to shorten the naming of combinePaginatedFiles somehow. Left a few suggestions here for combineContentResults(), which might be good to keep consistent: https://github.com/bluecadet/launchpad/issues/32#issuecomment-1227567698
How about mergePages in options, and mergeResults() in ContentSource?

@benjaminbojko forgot about that one...
I think .combine() works to get rid of the redundancy and I think mergePages sounds like a better option...

Vars/Method renamed


Chat commands to demolish buildings

Non-host players can enter chat commands by direct-messaging the automated host. So far, the only such chat command is "build", supporting building of the three types of in-game cabins (since normally only the host can build these by talking to Robin).
However, only the host can demolish buildings. A similar chat command should be implemented to allow non-host players to demolish buildings, provided that they are demolishable.

This has been implemented via the "demolish" chat command.


Update metadata-log for non-rest catalogs

Implements: https://github.com/apache/iceberg-python/issues/849
Also added support to control size of metadata-log using write.metadata.previous-versions-max property.

Waiting for CI to run.
r? @sungwy


WFLY-16411 Upgrade to Hibernate ORM 6.0.2

Signed-off-by: Scott Marlow<EMAIL_ADDRESS>https://issues.redhat.com/browse/WFLY-16411

Thanks, @scottmarlow


issue

Analyzer Feedback from IntelliJ
Version information

IDEA AI-191.8<IP_ADDRESS>00203
2.2.0-edge.0a7dcf17eb5f2450480527d6ad1e201fb47f1e36
AI-191.8<IP_ADDRESS>00203, JRE 1.8.0_202-release-1483-b03x64 JetBrains s.r.o, OS Windows 8(amd64) v6.2 , screens 1366x768

Exception
Dart analysis server, SDK version 2.2.0-edge.0a7dcf17eb5f2450480527d6ad1e201fb47f1e36, server version 1.23.0, error: Failed to handle completion domain request: {id: 1468, method: completion.getSuggestionDetails, params: {file: F:\work\flutter_app_001\lib\main.dart, id: 374, label: Column, offset: 1489}, clientRequestTime:<PHONE_NUMBER>547}
InconsistentAnalysisException: Requested result might be inconsistent with previously returned results

#0      AnalysisSessionImpl._checkConsistency (package:analyzer/src/dart/analysis/session.dart:199:7)
#1      AnalysisSessionImpl.getLibraryByUri (package:analyzer/src/dart/analysis/session.dart:108:5)
<asynchronous suspension>
#2      CompletionDomainHandler.getSuggestionDetails (package:analysis_server/src/domain_completion.dart:179:49)
<asynchronous suspension>
#3      CompletionDomainHandler.handleRequest.<anonymous closure> (package:analysis_server/src/domain_completion.dart:210:9)
#4      _rootRun (dart:async/zone.dart:1124:13)
#5      _CustomZone.run (dart:async/zone.dart:1021:19)
#6      _runZoned (dart:async/zone.dart:1516:10)
#7      runZoned (dart:async/zone.dart:1500:12)
#8      CompletionDomainHandler.handleRequest (package:analysis_server/src/domain_completion.dart:206:12)
#9      AnalysisServer.handleRequest.<anonymous closure>.<anonymous closure> (package:analysis_server/src/analysis_server.dart:349:45)
#10     _PerformanceTagImpl.makeCurrent

This is a very old version of Dart (or Flutter), and has likely been fixed (similar to https://github.com/dart-lang/sdk/issues/35456); please upgrade to a modern version of dart and please re-open if you hit this again.