text:
0.56

Hacktoberfest is still on and so far we got a lot improvements. We can make any promises to review everything still the end of October but we try to make sure that you will get your t-shirt.
We reached another milestone aka number: 10000. GitHub is assigning numbers to pull requests and issues and the "10000" is a PR. Our ratio is around 1/3 issues and 2/3 pull requests. To be more precises: 64 % pull requests and 36 % issues.
If you haven't noticed, there is now a glossary that collects some Home Assistant relevant terms. Talking about the documentation: @DubhAd rewrote large parts of the Z-Wave section. More structure to get started and to find details during the setup and the configuration.
Map
The map) is now its own component. Like configuration (config:) without adding it to your configuration.yaml file it will not show up.
map:

Travis CI
Why not observe your Travis CI jobs with Home Assistant? @tchellomello created a Travis CI sensor which allows one to check on the current state of Travis jobs. Now you can make sure that the coffee is ready when the build passed.
New Platforms

Add alarm control panel component (@vickyg3 - #9711) (alarm_control_panel.arlo docs) (new-platform)
Abode Temp, Humidity, and Light Sensor (@MisterWil - #9709) (abode docs) (sensor.abode docs) (new-platform)
Introducing support to Travis-CI (@tchellomello - #9701) (sensor.travisci docs) (new-platform)
Skybell (@MisterWil - #9681) (skybell docs) (binary_sensor.skybell docs) (camera.skybell docs) (light.skybell docs) (sensor.skybell docs) (switch.skybell docs) (new-platform)
Xiaomi Smart WiFi Socket and Smart Power Strip integration (@syssi - #9138) (switch.xiaomi_plug docs) (new-platform)
Add notification platform for Rocket.Chat. (@webworxshop - #9553) (notify.rocketchat docs) (new-platform)
Tesla bug fixes. (@zabuldon - #9774) (tesla docs) (binary_sensor.tesla docs) (climate.tesla docs) (lock.tesla docs) (sensor.tesla docs) (switch.tesla docs) (new-platform)
Split map panel out into its own component (@cgarwood - #9814) (map docs) (breaking change) (new-platform)
Support for Yi cameras (@bachya - #9787) (camera.yi docs) (new-platform)
Add namecheap DNS component (@Munsio - #9821) (namecheapdns docs) (new-platform)
Uptime sensor (@fronzbot - #9856) (sensor.uptime docs) (new-platform)
Cloud connection via aiohttp (@balloob - #9860) (new-platform)
Google Actions for Assistant (@philk - #9632) (googleactions docs) (http docs) (new-platform)
A new platform for controlling Monoprice 6-Zone amplifier (@etsinko - #9662) (media_player.monoprice docs) (new-platform)
Add serial sensor (@fabaff - #9861) (sensor.serial docs) (new-platform)
Add Toon support (@Boltgolt - #9483) (toon docs) (climate.toon docs) (sensor.toon docs) (switch.toon docs) (new-platform)

If you need help...
...don't hesitate to use our very active forums or join us for a little chat. The release notes have comments enabled but it's preferred if you use the former communication channels. Thanks.
Reporting Issues
Experiencing issues introduced by this release? Please report them in our issue tracker. Make sure to fill in all fields of the issue template.
Breaking Changes

Simplify track_same_state (@balloob - #9795) (automation.numeric_state docs) (automation.state docs) (binary_sensor.template docs) (breaking change)
Split map panel out into its own component (@cgarwood - #9814) (map docs) (breaking change) (new-platform)
Fix ISY994 fan platform overwriting state property (@balloob - #9817) (breaking change)
Changing name of clicksendaudio component to clicksend_tts (@jeroenterheerdt - #9859) (notify.clicksend_tts docs) (breaking change)
Fix load of components without any config from packages (@azogue - #9901) (breaking change)
Fix the resource naming in the UI (@cgtobi - #9916) (sensor.systemmonitor docs) (breaking change)
Align away state tag with device_trackers (@PeteBa - #9884) (sensor.mqtt_room docs) (breaking change)

All changes

fixed duplicate words (@flowolf - #9705) (light.hue docs) (light.mqtt_json docs) (media_player.denon docs) (media_player.dunehd docs)
move icon battery function from util to helpers (@happyleavesaoc - #9708) (vacuum docs) (sensor.android_ip_webcam docs) (sensor.fitbit docs) (sensor.ios docs) (sensor.raincloud docs) (vacuum.dyson docs) (vacuum.mqtt docs)
Updating helper's icon_for_battery_level location (@tchellomello - #9594) (sensor.ring docs)
Upgrade pyhomematic, add path setting and HM-CC-VG-1 support (@danielperna84 - #9707) (homematic docs)
bump the version and catch all exceptions to avoid showing backtraces… (@rytilahti - #9720) (climate.eq3btsmart docs)
More netdata sensors (@fronzbot - #9719) (sensor.netdata docs)
Upgrade pysnmp to 4.3.10 (@fabaff - #9722) (device_tracker.snmp docs) (sensor.snmp docs)
arlo: Add alarm control panel component (@vickyg3 - #9711) (alarm_control_panel.arlo docs) (new-platform)
Abode Temp, Humidity, and Light Sensor (@MisterWil - #9709) (abode docs) (sensor.abode docs) (new-platform)
Arlo clean-up (@fabaff - #9725) (arlo docs) (alarm_control_panel.arlo docs) (camera.arlo docs) (sensor.arlo docs)
Introducing support to Travis-CI (@tchellomello - #9701) (sensor.travisci docs) (new-platform)
Add show_on_map config option to AirVisual (@bachya - #9654) (sensor.airvisual docs)
Move 'show_on_map' to const (@fabaff - #9727) (binary_sensor.iss docs) (sensor.airvisual docs)
Bump release to 0.56.0dev (@fabaff - #9726)
Add andrey-git to codeowners (@andrey-git - #9718)
Fix: Last Played Media Title persists in plex (@ryanm101 - #9664) (media_player.plex docs)
Event trigger nested conditions (@armills - #9732) (automation.event docs)
Rewrite Alexa Smart-Home skill to v3 (@pvizeli - #9699) (alexa.smart_home docs)
Fix I/O in event loop by Arlo alarm control panel (@balloob - #9738) (alarm_control_panel.arlo docs)
Make Arlo battery_level icon dynamic (@tchellomello - #9747) (sensor.arlo docs)
Fix for TypeError in synology camera (@snjoetw - #9754) (camera.synology docs)
switch.tplink, light.tplink: bump the pyhs100 version and adapt to api changes (@rytilahti - #9454) (light.tplink docs) (switch.tplink docs)
RFC: Use bind_hass for helpers (@balloob - #9745)
Skybell (@MisterWil - #9681) (skybell docs) (binary_sensor.skybell docs) (camera.skybell docs) (light.skybell docs) (sensor.skybell docs) (switch.skybell docs) (new-platform)
add myself to yeelight owners, too (@rytilahti - #9759)
Update CODEOWNERS (@danielhiversen - #9760)
Adding my contributions (@bachya - #9761)
Initializing statistics sensor with data from database (@ChristianKuehnel - #9753) (sensor.statistics docs)
Match test requirements by full package name. (@andrey-git - #9764)
yeelight: implement min_mireds and max_mireds, fixes #9509 (@rytilahti - #9763) (light.yeelight docs)
Bump raincloudy version 0.0.3 (@tchellomello - #9767) (raincloud docs) (sensor.raincloud docs)
Xiaomi Smart WiFi Socket and Smart Power Strip integration (@syssi - #9138) (switch.xiaomi_plug docs) (new-platform)
fix for LocationParseError in netgear platform (@etsinko - #9683) (device_tracker docs) (device_tracker.netgear docs)
Expose time module in Python Scripts (@balloob - #9736) (python_script docs)
Add notification platform for Rocket.Chat. (@webworxshop - #9553) (notify.rocketchat docs) (new-platform)
Updating pythonegardia package requirement to .22 because of fixed bug in passing default value for parameter SSL for egardiaserver (@jeroenterheerdt - #9770) (alarm_control_panel.egardia docs)
Adding myself as codeowner for egardia alarm control panel. (@jeroenterheerdt - #9772)
WIP: Fix Arlo Camera blocking IO (@bachya - #9758) (camera.arlo docs)
Tesla bug fixes. (@zabuldon - #9774) (tesla docs) (binary_sensor.tesla docs) (climate.tesla docs) (lock.tesla docs) (sensor.tesla docs) (switch.tesla docs) (new-platform)
Fix off by one error in arwn platform (@sdague - #9781) (sensor.arwn docs)
missing is_closed ( rflink cover fix ) (@passie - #9776) (cover.rflink docs)
Wink dome siren support (@w1ll1am23 - #9667) (wink docs) (switch.wink docs)
Bump rxv library to 0.5.1 (@sdague - #9784) (media_player.yamaha docs)
Communication timeout support in modbus hub. (@ziotibia81 - #9780) (modbus docs)
[light.tradfri] Fix transition time (@lwis - #9785) (light.tradfri docs)
OwnTracks: Fix handler is None checking (@balloob - #9794) (device_tracker.owntracks docs)
Simplify track_same_state (@balloob - #9795) (automation.numeric_state docs) (automation.state docs) (binary_sensor.template docs) (breaking change)
Optimize event matcher (@balloob - #9798)
Resolving bug that prevents ssl_verify option for Unifi device_tracker (@GenericStudent - #9788) (device_tracker.unifi docs)
Upgrade pyasn1 to 0.3.7 and pyasn1-modules to 0.1.5 (@fabaff - #9810)
Split map panel out into its own component (@cgarwood - #9814) (map docs) (breaking change) (new-platform)
Restore home-assistant-polymer pointer from #9720 (@armills - #9825)
Fix ISY994 fan platform overwriting state property (@balloob - #9817) (breaking change)
Wait_template - support for 'trigger.entity_id' and data_template values (@cdce8p - #9807)
Adds image attribute to html5 notify (#9832) (@cgarwood - #9835) (notify.html5 docs)
OwnTracks: Handle lwt message (@balloob - #9831) (device_tracker.owntracks docs)
Upgrade libnacl (@fabaff - #9769) (device_tracker.owntracks docs)
Fixed reporting of vera UV sensors (@alanfischer - #9838) (sensor.vera docs)
Update CODEOWNERS */axis.py (@Kane610 - #9823)
fix climate services (missing indentation, wrongly formatted example) (@rytilahti - #9805)
Run initial generation for development mode (@armills - #9826)
Add service descriptions (@cgarwood - #9806) (init docs)
Bugfix: Include MQTT schema (@tinloaf - #9802) (climate.mqtt docs)
Bugfix/9811 jinja autoescape (@GenericStudent - #9842)
Changed yaml.load into yaml.safe_load (@GenericStudent - #9841) (google docs)
New PR (@bachya - #9787) (camera.yi docs) (new-platform)
Do not auto-install credstash (@balloob - #9844)
Add namecheap DNS component (@Munsio - #9821) (namecheapdns docs) (new-platform)
Remove namecheap dns service (@balloob - #9845) (namecheapdns docs)
Use the Last Seen attribute in unify (@rbflurry - #8998) (device_tracker.unifi docs)
Add CAPSman master to mikrotik presence detection (@icovada - #9729) (device_tracker.mikrotik docs)
File permissions fix (@cgarwood - #9847) (map docs)
HassIO - TimeZone / Host services (@pvizeli - #9846) (hassio docs)
Changing name of clicksendaudio component to clicksend_tts (@jeroenterheerdt - #9859) (notify.clicksend_tts docs) (breaking change)
Upgrade youtube_dl to 2017.10.12 (@fabaff - #9862) (media_extractor docs)
Uptime sensor (@fronzbot - #9856) (sensor.uptime docs) (new-platform)
Darksky enhancements (@rdbahm - #9851) (sensor.darksky docs)
Upgrade psutil to 5.4.0 (@fabaff - #9869) (sensor.systemmonitor docs)
minimal fixes in the owntracks mqtt device tracker (@azogue - #9866) (device_tracker.owntracks docs)
Cloud connection via aiohttp (@balloob - #9860) (new-platform)
handle OWM API error calls (@azogue - #9865) (sensor.openweathermap docs) (weather.openweathermap docs)
Upgrade paho-mqtt to 1.3.1 (@fabaff - #9874) (mqtt docs) (shiftr docs)
Fix for TypeError in synology camera (@snjoetw - #9754) (camera.synology docs)
missing is_closed ( rflink cover fix ) (@passie - #9776) (cover.rflink docs)
[light.tradfri] Fix transition time (@lwis - #9785) (light.tradfri docs)
OwnTracks: Fix handler is None checking (@balloob - #9794) (device_tracker.owntracks docs)
Changed yaml.load into yaml.safe_load (@GenericStudent - #9841) (google docs)
Bugfix/9811 jinja autoescape (@GenericStudent - #9842)
Fix #9839 (@pschmitt - #9880) (media_player.liveboxplaytv docs)
Upgrade python-telegram-bot to 8.1.1 (@azogue - #9882) (telegram_bot docs)
Xknx improvements (@Julius2342 - #9871) (knx docs) (climate.knx docs)
zha: Update to bellows 0.4.0 (@rcloran - #9890) (zha docs) (sensor.zha docs)
Changing clicksendaudio to clicksend_tts in .coveragerc (@jeroenterheerdt - #9900)
Added super attributes to Wink binary sensors (@w1ll1am23 - #9824) (binary_sensor.wink docs)
Release 0.55.2 (@pvizeli - #9904)
Dependemcy version bump. (@zabuldon - #9899) (device_tracker.mikrotik docs)
Update osramlightify.py (@Bahnburner - #9905) (light.osramlightify docs)
Fixes (@bachya - #9912) (switch.rainmachine docs)
Fix load of components without any config from packages (@azogue - #9901) (breaking change)
Fixes (@bachya - #9911) (sensor.airvisual docs)
add last_action for xiaomi cube (@danielhiversen - #9897) (binary_sensor.xiaomi_aqara docs)
Added support for Denon AVR-4810. (@scarface-4711 - #9887) (media_player.denonavr docs)
Recorder: Extra check to incoming connections which could be not sqlite3 ones (@azogue - #9867)
Fix the resource naming in the UI (@cgtobi - #9916) (sensor.systemmonitor docs) (breaking change)
Update xiaomi_aqara.py (@danielhiversen - #9920) (sensor.xiaomi_aqara docs)
Fix the resource naming in the UI (@cgtobi - #9927) (sensor.glances docs)
Add transmission sensor: number of active torrents (@mclem - #9914) (sensor.transmission docs)
Google Actions for Assistant (@philk - #9632) (googleactions docs) (http docs) (new-platform)
Allow flexible relayer url (@balloob - #9939) (cloud.iot docs)
update async_timeout from v1.4.0 tp v2.0.0 (@TopdRob - #9938)
Bump py-synology to 0.1.5 (@arsaboo - #9932) (camera.synology docs)
Update aioimaplib from v0.7.12 to v0.7.13 (@TopdRob - #9930) (sensor.imap docs)
A new platform for controlling Monoprice 6-Zone amplifier (@etsinko - #9662) (media_player.monoprice docs) (new-platform)
Align away state tag with device_trackers (@PeteBa - #9884) (sensor.mqtt_room docs) (breaking change)
Add serial sensor (@fabaff - #9861) (sensor.serial docs) (new-platform)
Fix missing timeout for Netatmo binary sensor (@jabesq - #9850) (binary_sensor.netatmo docs)
Xiaomi config validation (@danielhiversen - #9941) (xiaomi_aqara docs)
using defusedxml ElementTree for safer parsing of untrusted XML data (@danielwelch - #9934) (device_tracker.upc_connect docs)
notify.xmpp - Add support for MUC (@ldvc - #9931) (notify.xmpp docs)
FFmpeg 1.8 (@pvizeli - #9944) (ffmpeg docs) (camera.ffmpeg docs) (camera.onvif docs) (camera.yi docs)
Changed returned attribute from "Game" to "game" (@itchaboy - #9945) (sensor.steam_online docs)
Move 'lights' to const.py (@fabaff - #9929) (abode docs) (vera docs) (light.template docs) (switch.flux docs)
Update directpy to 0.2 (@arsaboo - #9948)
Update enocean to 0.40 (@arsaboo - #9949) (enocean docs)
Update hikvision to 1.2 (@arsaboo - #9953) (switch.hikvisioncam docs)
Update fritzhome to 1.0.3 (@arsaboo - #9951) (switch.fritzdect docs)
Update fritzconnection to 0.6.5 (@arsaboo - #9950) (device_tracker.fritz docs) (sensor.fritzbox_callmonitor docs) (sensor.fritzbox_netmonitor docs)
Upgraded pyhomematic (@danielperna84 - #9956) (homematic docs)
Add emeter attributes (@gollo - #9903) (light.tplink docs)
Use default clientsession to stream synology video (@snjoetw - #9959) (camera.synology docs)
Update ffmpeg 1.9 (@pvizeli - #9963)
Improve SSL certs used by aiohttp (@balloob - #9958) (cloud.iot docs)
Fix async probs (@pvizeli - #9924)
Add Toon support (@Boltgolt - #9483) (toon docs) (climate.toon docs) (sensor.toon docs) (switch.toon docs) (new-platform)

I didn't want to make changes to the content directly, but there are a few typos at the beginning. Here is an updated version that addresses typos:
[Hacktoberfest](https://home-assistant.io/blog/2017/09/29/hacktoberfest/) is still on and so far we have received a lot improvements. We can't make any promises to review everything by the end of October, but we are trying to make sure that you will get your t-shirt.

We reached another milestone aka number: 10000. GitHub is assigning numbers to pull requests and issues and the "10000" is a [PR](https://github.com/home-assistant/home-assistant/pull/10000). Our ratio is around 1/3 issues and 2/3 pull requests. To be more precise: 64% pull requests and 36% issues.

If you haven't noticed, there is now a [glossary](https://home-assistant.io/docs/glossary/) that collects some Home Assistant relevant terms. Talking about the documentation: [@DubhAd](https://github.com/DubhAd) rewrote large parts of the [Z-Wave section](https://home-assistant.io/docs/z-wave/). More structure to get started and to find details during the setup and the configuration.

### Map
The [map][map docs] is now its own component. Similar to [configuration (`config:`)](https://home-assistant.io/components/config/), it will not show up without adding it to your `configuration.yaml` file.


text:
cve.References is not iterable

##[error]TypeError: cve.References is not iterable
    at Trivy.parse (/home/runner/work/_actions/homoluctus/gitrivy/v1.0.0/dist/index.js:13352:45)
    at /home/runner/work/_actions/homoluctus/gitrivy/v1.0.0/dist/index.js:6599:40
    at Generator.next (<anonymous>)
    at fulfilled (/home/runner/work/_actions/homoluctus/gitrivy/v1.0.0/dist/index.js:6555:58)
##[error]cve.References is not iterable
##[error]Node run failed with exit code 1

Using it with default options, any idea if I am missing something?
      - name: Build the Docker image
        run: docker build . --file Dockerfile --tag localbuild/testimage:latest
      - uses: homoluctus/gitrivy@v1.0.0
        with:
          token: ${{ secrets.GITHUB_TOKEN }}
          image: localbuild/testimage:latest

I have the same problem
Following is my github workflow file:
name: Vulnerability Scan

on:

  push:
    paths:
      - '.github/workflows/05_trivy_scan.yml'
      - 'resources/iot-c/**'
    # Sequence of patterns matched against refs/heads
    branches:
      - master         # Push events on master branch
      - 'release*'     # Push events to branches matching refs/heads/release_01

jobs:

  scan:
    name: Docker image Vulnerability Scan
    runs-on: ubuntu-18.04
    steps:
      - name: Pull docker image
        run: docker pull dgs19/iot-collector:latest

      - name: scan with trivy
        uses: homoluctus/gitrivy@v1
        with:
          image: dgs19/iot-collector:latest

And following is the error I get:
 scan with trivy
19s
##[error]Node run failed with exit code 1
Run homoluctus/gitrivy@v1
  with:
    image: dgs19/iot-collector:latest
    trivy_version: latest
    severity: HIGH,CRITICAL
    vuln_type: os,library
    ignore_unfixed: false
    issue: true
    issue_title: Security Alert
    issue_label: trivy,vulnerability
Download URL: https://github.com/aquasecurity/trivy/releases/download/v0.4.3/trivy_0.4.3_Linux-64bit.tar.gz
Trivy Command Path: /home/runner/work/dgs19/dgs19/trivy
##[error]TypeError: cve.References is not iterable
    at Trivy.parse (/home/runner/work/_actions/homoluctus/gitrivy/v1/dist/index.js:13352:45)
    at /home/runner/work/_actions/homoluctus/gitrivy/v1/dist/index.js:6599:40
    at Generator.next (<anonymous>)
    at fulfilled (/home/runner/work/_actions/homoluctus/gitrivy/v1/dist/index.js:6555:58)
##[error]cve.References is not iterable
##[error]Node run failed with exit code 1

@prasrvenkat @gerassimos
Thanks for the feedback.

source: gharchive/issue

authors: gerassimos homoluctus prasrvenkat

repo: homoluctus/gitrivy

license: MIT

license_type: permissive

license_source: github-api


text:
http3 response stream support

there might be limiter in somewhere or stream api does not work.

chunk() also does not work.

content-size header value is correct.

works on http1 and http2.
this is http3 client stream issue.

i found actual streamed packets are all received.
they are lost in higher abstraction level.

current implementation always returns all data at once.
streaming api does not handle this huge data.

license: Unlicense


text:
How to use hono/client with a different fetch client

What is the feature you are proposing?
I am trying to use hc with unjs/ofetch. Ofetch makes it quite easy to implement a jwt refresh flow, retries, interceptor, etc.. Technically, it does work fine like so:
    const client = hc<AppType>(this.#url, {
      fetch: (input: RequestInfo | URL, requestInit?: RequestInit) => {
        return this.fetch(
          input instanceof URL ? input.toString() : input,
          requestInit,
        )
      },
    })

The only issue is that the return of ofetch does not match hc's ClientResponse. This is due to the fact that ofetch unwraps the data by default. So await res.json() is not neccessary.
I do not see any way to update the hono's typing. I understand that hono is about working with web standards, but it would be super useful to work with a different client. Basically, what I would like to do is something like this:
// This does not work
declare module "hono/client" {
  export interface ClientResponse<T, U extends number = StatusCode, F extends ResponseFormat = ResponseFormat> = T {
}

This was already mentioned in https://github.com/honojs/hono/issues/2542.
Are there any plans to make this possible or do you see a solution right away?
Thank you for the amazing project!

This would be awesome to have

repo: honojs/hono


text:
0.3.0 release plan

My plan for the next release:

Since it will involve breaking changes, it will be 0.3.0
Work will be done on the 0.3.0 branch. PRs targeting the 0.3.0 issues will be merged into that branch
Once it's time for a release the 0.3.0 branch will be merged into master

Also:

Bug fixes for 0.2.x will be merged into master and released to PyPI until 0.3.0 is ready.
After 0.3.0 is out bug fixes will go into 0.3.x releases
The next release with breaking changes will be 0.4.0
At some point we may call a release "1.0" - after that we'll use semantic versioning - major version increments for breaking changes, minor version increments for backward-compatible additions, and patch version increments for bug fixes.

PR #70 for issue #60 is the last issue I'm targeting for 0.3.0. I plan on checking over docs again and doing a release this weekend. @honzajavorek, anything you'd like to see before that?

I'm okay with this plan!
I have no further suggestions for 0.3.0.
I guess a nice requirement for 1.0.0 would be to have a full test coverage for both redis collections and their native counterparts as in #28. Also verifying we don't miss anything suggested by #39 would be nice.
Regarding semantic versioning, recently I became quite a fan of semantic release - in Python it's implemented as python-semantic-release. I won't push it, especially when it's not so adopted in the Python world, but check it out. I was pretty reserved when learning about it, but I gave it a try and now I'm pretty convinced it's useful. For me as a maintainer it's very addictive.

authors: bbayles honzajavorek

repo: honzajavorek/redis-collections

license: isc

license_source: bigquery


text:
Added Promise polyfill (fixes #78)

I added a polyfill for browser like IE11 that don't support ES6 Promises yet.
This fixes #78.
I copied the script to public/assets/js because there isn't a procedure to load third party scripts, yet.
I could implement bower a try to find a way to load assets from node_modules, if you prefer.

This is pretty odd, because I think IE11 supports Promises:
http://caniuse.com/#search=promise
But if this works, it works 👍
We don’t want to add bower or any other overhead in order to make the code as simple as possible. But instead of the es6-polyfill, can try if lie.js works, too? That’s what we use as polyfill in several Hoodie codebases

For me Can I Use says IE11 doesn't support promises 😕
lie.js works too, I updated my PR.

source: gharchive/pull-request

repo: hoodiehq/hoodie-app-tracker


text:
Cannot read property 'stimulusReflexController' of null

Bug Report
Describe the bug
I get the following error using the Generic Lifecycle Methods
beforeReflex
reflexSuccess
reflexError
afterReflex
Error:
stimulus_reflex.js:303 Uncaught TypeError: Cannot read property 'stimulusReflexController' of null
at HTMLDocument. (stimulus_reflex.js:303)
at dispatch (cable_ready.js:17)
at Object.morph (cable_ready.js:53)
at Object.perform (cable_ready.js:184)
at Subscription.received (stimulus_reflex.js:81)
at Subscriptions.notify (action_cable.js:546)
at Connection.message (action_cable.js:381)
The beforeReflex is called correctly, however it doesn't call the other methods (afterReflex and reflexSuccess). It just throws this error.
Because of this, the page spinner invoked in the beforeReflex method never goes away.
The error doesn't happen with selects (drop down list), only with text boxes and date time inputs (Flatpickr). I don't know how that could be related.
To Reproduce
Here's a gist with al the code involved in the issue: https://gist.github.com/LuisDeHaro/63956422dd015cddf1f11856a8f8abdd
Expected behavior
No error in the JavaScript console and the callbacks being called.
Screenshots or reproduction
Filtering:

Versions
StimulusReflex

Gem: 2.1.9
Node package: 2.1.9

External tools

Ruby: 2.5.3
Rails: 6.0.2.1
Node: v10.4.1

Browser

Browser: chrome
Version: 80.0.3987.132

Hi Luis! I'm really sorry that you're having such a weird and frustrating problem. I'm in the process of trying to recreate it. In particular, it's the first time I've heard of a problem being specific to the nodetype of the element the controller is placed upon.
Are you on our Discord server? It might be easier to get help in the future.
Also, I just want to say that this is a near-perfect issue submission. I appreciate that it's difficult to set up a reproduction example when there's a server component. All of this detail can really help us help you faster.

Hi @leastbad, thanks for your quick response.
Don't worry, it's been a pleasure to use this gem, other than this small hiccup the library is working like a charm.
I just joined the Discord server: Luis de Haro, I'll keep this in mind in case of any future issue.
And thank you for all your help if you need any further detail, just let me know.

@LuisDeHaro could I get you to update your gem to 2.2.2 and make sure you also yarn update your JS package, too. I always forget.

@leastbad, sure. I just did and now the issue has changed.
It throws an error immediately after I enter to the page that has the table you see in the above gifs. Error:
application.js:250 Error connecting controller
TypeError: this.getConfig is not a function
at createConsumer (action_cable.js:25)
at getConsumer (consumer.js:26)
at createSubscription (stimulus_reflex.js:67)
at Object.register (stimulus_reflex.js:161)
at Controller.connect (application_controller.js:6)
at Controller.connect (serviceschedule_controller.js:20)
at Context.connect (context.js:23)
at Module.connectContextForScope (module.js:39)
at Router.scopeConnected (router.js:100)
at ScopeObserver.elementMatchedValue (scope_observer.js:55)
{identifier: "serviceschedule", controller: Controller, element: form.simple_form.service_schedule}
identifier: "serviceschedule"
controller: Controller {context: Context, StimulusReflex: {…}, stimulate: ƒ, __perform: ƒ}
element: form.simple_form.service_schedule
proto: Object
Also, I don't get the channel subscription confirmation as always. I don't get this:
StimulusReflex::Channel is transmitting the subscription confirmation
StimulusReflex::Channel is streaming from StimulusReflex::Channel:1
After the yarn upgrade, the stimulus_reflex package looks like this in the yarn.lock:
stimulus_reflex@2.2.2:
version "2.2.2"
resolved "https://registry.yarnpkg.com/stimulus_reflex/-/stimulus_reflex-2.2.2.tgz#0bc46bfbb442f2cf980e3436f16282c92924f6fd"
integrity sha512-X0QCohbGcBngoUmG5mDXFsVzcBgvKUWAMYSPfrv2eN72IkZqn+vGQFeC3sJncU2t9WIqbRu52/PgBFn7KHbhYQ==
dependencies:
actioncable ">= 5.2"
cable_ready ">= 4.0"
inflected ">= 2.0"
stimulus ">= 1.1"
Please let me know if you need some more info, I'll be glad to help. Thanks in advance!

@LuisDeHaro Try adding a unique id to your anchor elements that define data-reflex=...

@hopsoft, you are right. The element that fires the reflex needs to have a unique id:
In my case the simple_form_for was the culprit, and adding an id to the form fixed the issue:
`<%= simple_form_for :service_schedule, data: { controller: "serviceschedule", reflex_root: "#search-results" }, html: { method: :post, id: :search_service_schedules_form } do |f| %>
<% end %>`
Thanks!

authors: LuisDeHaro hopsoft leastbad


text:
CB-12344 Validation: terms and conditions for marketplace image are a…

…ccepted
On azure, when using a marketplace image, its terms and conditions have to be accepted before it can be used. Since this step cannot yet be automatized becaue of legal concerns, customers have to do them manually by using the az-cli.
Using images in create or upgrade flow, whose terms and conditions are not accepted would definitely result in an error when using the image, thus validation is introduced for these scenarios. For this purposes the ClusterUpgradeValidation flow was added a new step and was changed to be able to call spi code. The new flow step might cause problems when pod update is called during its operation.
See detailed description in the commit message.

retest this, please

repo: hortonworks/cloudbreak


text:
Layout type Pair Horizontal units for bottom channel neither superscript or subscript

Describe the bug
Top channel unit it superscript whereas bottom channel is aligned with baseline.
To Reproduce
Add ui object with Layout Horizontal Pair and Unit value.
Expected behavior
Unit should either be superscript (preferred) or subscript
Screenshots
Refer GitHub sample images
Environment and versions (please complete the following information):

OS: Win 10
Browser Chrome
Node-RED version 2.1.6
Dashboard version 3.1.5
ui-level version 0.1.46

The layout has been like this many many years. I can't change it cos it may affect many users.
But you can adjust it with CSS override.
To adjust top bar unit:

Thank you for the feedback

authors: elecpower hotNipi

repo: hotNipi/node-red-contrib-ui-level


text:
Users section: Increase type and detail of stats

From feedback -- the Users section is helpful to see contributions over time but doesn't satisfy the questions asked, such as, how many users per month contributed to the campaign?
Ideas

add download stats, CSV file
Stats by number of attribute by user
KM of lines could be helpful

related to #617

This has been implemented. Users can download a CSV file of detailed, daily stats in the Users section.

repo: hotosm/MapCampaigner


text:
Show webhook's additional information

What is the motivation for adding/enhancing this feature?
Currently we only show name of the webhook. It will be really helpful if additional detail like webhook url can also be displayed.
What are the acceptance criteria?
Show webhook url along with name.

[ ] ...

Can you complete this feature request by yourself?

[ ] YES
[ ] NO

Additional information

@ravilodhi can you help me understand the use case on this? If I get the full context of what w'ere trying to achieve, I can help provide correct UI

repo: hotwax/job-manager


text:
[POC] - Add support to run moqui jobs from the app

What is the motivation for adding/enhancing this feature?

What are the acceptance criteria?

[ ] ...

Can you complete this feature request by yourself?

[x] YES
[ ] NO

Additional information

Currently, we only need to identify the requirements and challenges for this approach.

We will pass the moqui instance url to the app after login and then use the same approach for login in moqui as done in moqui apps. As we have stored ofbiz specific token and oms in omsRedirectionInfo for moqui specific apps, in this case we will store moqui specific token and oms in omsRedirectionInfo.
We need to run specific moqui job from ofbiz app, for this case we will create a ProductStore setting and store the jobId in the setting that needs to be run from the app. Discussed the approach of pProductStore setting with Deepak Sir.
Currently after login we identify that whether the app supports moqui login or not in launchpad, in the similar manner we will create another method and an env config that will help in identifying whether the ofbiz app requires moqui login or not and then pass the moqui url conditionally in url.

repo: hotwax/preorder


text:
turbo_frame_tag on Table element

Hi , I'm trying Turbo , simple crud, table list:
example code:

      Name
      Key
      User

    <%= turbo_frame_tag "rooms" do %>
      <% @rooms.each do |room| %>
        <%= render room %>
      <% end %>
    <% end %>

but the frame tag is rendered separate from the list , why ?
note the red line is the frame tag border style:

I can confirm that is working properly if I change the element to

Table éléments only accept a set of elements as children. It's not valid html to put a div inside a table or a tr directly.
I've had the same problem, my solution was to fake a table by using divs and the correct display attributes such as table-row or table-cell.
This is not ideal though, maybe we could have a way of telling turbo that the whole tr / tbody should be a frame via a data attribute or something, having forms inside tables that update live on change is a useful pattern so it's a shame that it's a hassle to implement with turbo.

Only table elements are welcome inside tables.
You can use streams to target replacement of individual ids though.

I would like to understand why this does not work on tbody.

I can confirm that is working properly if I change the element to
by that I meant that the turbo frame works properly on divs, I was not referring to replace the tbody with div tho

<turbo-frame> is not a table element, so your browser hoists it out of the table to the nearest adjacency where it is permitted. So the above is invalid HTML.
If you want to replace the tbody, then instead give the tbody an id attribute, and use a turbo streams response to target that.

I understand that HTML has constraints over what types of elements are allowed within tables, but the big picture idea here has merit.
i.e. it would be very useful for turbo to be able to replace table rows.
Excluding this functionality adds a major limitation that is not intuitive to new users and, to be honest, doesn't really make sense.  I think this is too important to not consider, and I think many more people will be confused as to why it doesn't "just work" when they try to update tables using turbo.
I had this exact same problem a few days ago.  The first thing I tried to do with turbo was set it up to auto update a table of data, and it didn't work.  When I saw this issue and looked through the code (and the tags it inserts into the page) I understood why it didn't work and changed to using a div arrangement with table-like styling.  But I would prefer to use table markup for this data if I could.
Could this be implemented either by wrapping a turbo frame around the whole table, or by adding some type of data attributes to tbody and each tr element?  Or would it make more sense to have a separate variant of turbo_frame_tag that used table tags and added the necessary attributes to ensure they were handled?
I'm happy to help with implementation, but I understand it may not be a top priority right now.

I agree that editing table rows a la a spreadsheet is a very compelling use case, and it would be nice to use traditional table markup.  But, with judicious application of display: table-cell and display: none, you might be able to reuse your original form HTML (e.g. _form.html.erb in the Rails world), instead of having a dedicated table row form.  That could be a bigger win.

@jonathanhefner I'm not the original author of this issue, so my use case was a little different.  (i.e. not a form)
I mostly wanted to highlight the value add of getting this to work with tabular data.

issue author here: imo, as the primary integration of turbo is Rails oriented I think that many users will be hit by this because Rails scaffolds generates tables for listings, so I guess it would be a nice one to tackle this. Anyways, it seems that @inopinatus suggestion allows to use tables with turbo, so I can live with that.
It would be a good idea to document this , maybe a list of supported elements. or trigger some console warn on the code ?

As I understand it, browsers that support Custom Elements also support the is attribute:

The is global attribute allows you to specify that a standard HTML element should behave like a defined custom built-in element (see Using custom elements for more details).

This attribute can only be used if the specified custom element name has been successfully defined in the current document, and extends the element type it is being applied to.

I wonder if the original example could make use of turbo-frame elements through this mechanism:

      Name
      Key
      User

    <% @rooms.each do |room| %>
      <%= render room %> <%# assumes that `rooms/room` renders a `<tr>`
    <% end %>

@sstephenson does the [is] attribute mesh with how we find turbo-frame elements? Would a
 compared via document.getElementById("rooms") instanceof FrameElement evaluate to true?

As I understand it, browsers that support Custom Elements also support the is attribute:

The is global attribute allows you to specify that a standard HTML element should behave like a defined custom built-in element (see Using custom elements for more details).

This attribute can only be used if the specified custom element name has been successfully defined in the current document, and extends the element type it is being applied to.

I wonder if the original example could make use of turbo-frame elements through this mechanism:

      Name
      Key
      User

    <% @rooms.each do |room| %>
      <%= render room %> <%# assumes that `rooms/room` renders a `<tr>`
    <% end %>

@sstephenson does the [is] attribute mesh with how we find turbo-frame elements? Would a
 compared via document.getElementById("rooms") instanceof FrameElement evaluate to true?

I've just spent an hour hitting this exact issue too. Perhaps one solution would be to add some extra custom types that extend the tbody and tr elements with turbo-enabled elements that behave exactly like turbo-frame.
This would allow to easily use something like
`

Name
Key
User

    <% @rooms.each do |room| %>
      <%= render room %> <%# assumes that `rooms/room` renders a ``
    <% end %>

`
Not as neat as having the ability to use turbo_frame_tag everywhere but it's also an easy compromise to get such a common feature working until all major browsers support the is attribute. And much less hassle than having to target individual ids in responses.

I've just spent an hour hitting this exact issue too. Perhaps one solution would be to add some extra custom types that extend the tbody and tr elements with turbo-enabled elements that behave exactly like turbo-frame.
This would allow to easily use something like
`

Name
Key
User

    <% @rooms.each do |room| %>
      <%= render room %> <%# assumes that `rooms/room` renders a ``
    <% end %>

`
Not as neat as having the ability to use turbo_frame_tag everywhere but it's also an easy compromise to get such a common feature working until all major browsers support the is attribute. And much less hassle than having to target individual ids in responses.

FWIW I had a similar issue in my lazy loading gem, I made multiple elements and just let the user decide which element to use: https://github.com/julianrubisch/futurism/tree/master/javascript/elements
it’s probably not so easy in turbo, but maybe doable?

FWIW I had a similar issue in my lazy loading gem, I made multiple elements and just let the user decide which element to use: https://github.com/julianrubisch/futurism/tree/master/javascript/elements
it’s probably not so easy in turbo, but maybe doable?

Ran into this myself as well. Given Rails' default scaffolding behavior of generating tables for CRUD interfaces, it seems reasonable to assume that tables would be supported by core interactive functionality. Tables are still valid, and often a preferred, markup structure that would see a lot of value in proper turbo_frame_tag support.

This issue is real :(

urgh. also knew about limitations with the nesting of tags in table. but was surprised that there are no solution for this limitation 😩

Also ran into this issue.  First time using turbo, which lead me down many rabbit holes before determining it was the table.
Realise turbo is in beta, but as @etcook stated, tables are a default, it'd be nice if turbo clearly documented/highlighted this limitation as not to waste dev cycles.  Similar to how UJS compatibility is mentioned: https://github.com/hotwired/turbo-rails#compatibility-with-rails-ujs
Beyond that, loving the concepts behind turbo.  Backends are back!

If you add anything other than
 it will be out of the table (at least chrome renders it outside, if you see the dom)
this could easily be changed, if instead/alternative to the tag a data-turbo-target could be used:

loading...

which could lazy load the tbody (as suggested in https://github.com/hotwired/turbo/issues/148 )
I couldn't find a js event that get's triggered when a frame is replaced, is there any? (could be used as a work around)

I have a workaround in place to load "parts" of a table lazily (load once!). But you'll need quite a few pieces (I've simplified it "a lot" so is easier to see what's happening):
The idea is to place the tag where it is expected (within a tbody>tr>td, by the way you can have as mucho of those as you want):

    <turbo-frame id="my_frame" data-anchor="my_frame_anchor" src="a_nice_path"></turbo-frame>

The response need to be valid to, so you need to pack the tr>td in a template:
<turbo-frame id="my_frame">
<template>
  <%= render "rows" %>
</template>
</turbo-frame>

The last piece is some js to watch for the insertion (sadly no event, so...) and rearrange the dom:
// get the content of the template in the turbo-frame and rewrite the tbody-anchor contents with it
var observer = new MutationObserver(function( mutations ) {
  var $turboTarget = $(mutations[0].target);
  var anchor = $('#' + $turboTarget.data('anchor'));
  $anchor.html($turboTarget.find('template').html());
});

observer.observe($('#my_frame')[0], { childList: true});

This is as ugly as it gets, but might give some ideas on how to cope with this issue, or the missing puzzle pieces.
(Which I won't be testing anymore, since I just realize because of UJS, we can't really replace turbolinks with turbo...)

any news on this ?

My solution for this was to add a hidden turbo frame outside of the table and use a MutationObserver to append its contents to the table whenever they changed.
In some ways it seems like a dirty hack, and in others quite elegant :smile:
  connect() {
    let thisController = this;
    var observer = new MutationObserver(function(mutations) {
      let tbody = thisController.entriesTarget
      let source = thisController.newContentTarget;
      while (source.hasChildNodes() ) {
        tbody.appendChild(source.removeChild(source.firstChild))
      }

    })
    observer.observe(this.newContentTarget, { childList: true })
  }

  disconnect() {
    observer.disconnect()
  }

Just discovered that you can target any element in a turbo stream response - it doesn't have to be a turbo frame.  So appending to a table body can be done by simply targetting it appropriately.
<turbo-stream action="append" target="devicesTableBody">
  <template>
    <%= render partial: 'row', collection: @devices, formats: [:html] %>
  </template>
</turbo-steam>

I'm sure you used to get an error saying the target wasn't a frame :|

https://github.com/hotwired/turbo/releases/tag/v7.0.0-beta.8

@defsdoor How do you use it with https://github.com/hotwired/turbo-rails syntax ?

@defsdoor How do you use it with https://github.com/hotwired/turbo-rails syntax ?

Sorry I don't fully understand what you are asking.
I manage infinite scrolling by having a hidden div that is below the table (the table has sticky headers) and use an intersection observer that spots when this div is close to being visible.  Inside the div is a form that has the next page for it's URL.
This form is submitted via  Rails.fire(form, 'submit')
The next page URL renders next_page.turbo_stream.erb by default and that contains -
<turbo-stream action="append" target="devicesTableBody">
  <template>
    <%= render partial: 'row', collection: @devices, formats: [:html] %>
  </template>
</turbo-steam>
<turbo-stream action="update" target="devicesNextPage">
  <template>
    <%= render partial: 'next_page', formats: [:html] %>
  </template>
</turbo-steam>

Which appends to the table body and updates the next page div with the new next page URL
turbo_streams target= must be provided a DOM ID, where targets= can be any class selector.

I just ran into this issue using Rails 6.1.4.1.  I rebuild the table using divs with Bootstrap 5 utility classes (d-table-row, d-table-cell, etc).  The div table renders perfect until I wrap it in a turbo_frame_tag...and, then the table flow breaks.

turbo frames effect the document flow so you need to style them accordingly - for example if you have a frame inside a hierarchy of flex containers, you will need to style the frame as flex also.
It would be nice if you could style them to be "transparent" to the rendering of a page and have child elements pretend they don't exist, and react (display wise) within the outer container.

The div table renders perfect until I wrap it in a turbo_frame_tag...and, then the table flow breaks.
It would be nice if you could style them to be "transparent" to the rendering of a page and have child elements pretend they don't exist, and react (display wise) within the outer container.

@atstockland @defsdoor have either of you tried display: contents?
It's worth noting that there are some bugs in browsers that pose accessibility concerns for the element itself (but not for its descendants). However, since <turbo-frame> is a Custom element anyway, there aren't any semantics to miscommunicate to assistive technology.

I'd previously googled as many different terms as I could think of to see if there was a way to do this and came up blank.
I've just tried this in my app and it seems to work - brilliant - thank you ;)
Is there any mention of this in the turbo documentation ?  I've not seen it - it's essential to know imho.

I knew before trying turbo about the table limitation. I went ahead and replace my tables using an home made table:
HTML
#project_segments
  .table-custom
    .table-row
      .table-cell= sortable_header :name, model_class.human_attribute_name(:name)
      .table-cell= sortable_header :created_at, model_class.human_attribute_name(:created_at)
      .table-cell

    - project_segments.each do |project_segment|
      = turbo_frame_tag project_segment, class: 'table-row' do
        .table-cell= link_to project_segment.name, project_project_segment_path(@project, project_segment), target: :_top
        .table-cell= l project_segment.created_at, format: :long
        .table-cell.text-nowrap
          - if policy(project_segment).edit?
            = link_to edit_project_project_segment_path(@project, project_segment), class: "btn btn-outline-primary btn-sm mx-1" do
              %i.fas.fa-pen
          - if policy(project_segment).destroy?
            = link_to project_project_segment_path(@project, project_segment), class: "btn btn-outline-danger btn-sm mx-1",
                data: { "controller": "delete", "action": "click->delete#confirm", info: project_segment.id } do
              %i.fas.fa-trash

CSS
.table-custom {
  @extend .d-table;
  @extend .mt-2;
  @extend .mb-3;

  width: 100%;
  font-size: 0.9rem;
  font-weight: 300;
  color: rgb(33, 37, 41);

  .table-row:first-child {
    font-weight: 500;
  }

  .table-row {
    @extend .d-table-row;
  }

  .table-cell {
    @extend .d-table-cell;
    @extend .p-2; /* Should be 3, I think 2 is looking better. */
    border-bottom: 1px solid rgb(224, 224, 224);
  }
}

and it kinda works but it is still bad. Since I trying to mimic a table behavior, the turbo_frame will only fill the space of 1 column.
![Screen Shot 2021-12-28 at 9 20 14 AM](https://user-images.githubuse

rcontent.com/63726983/147575600-7925d267-b7e1-4104-9767-c563e0552703.png)
`
It feels like there is not really any perfect approach I can think of at the moment

You need to wrap the entire table in a turbo_frame_tag. Give each row or element you want to target a uniq DOM id.  Each element you want to target needs to originate from a partial. Then, in your controller action that responds to turbo_stream simply target the DOM id (not the turbo_frame_tag id) using the same source partial (be sure to pass in all the same locals).
This will work. I typically target the row id, and turbo_stream.replace "uniq_row_id". If you have other links in the table be sure to use data: {turbo_frame: "_top"} since the entire table is now wrapped in turbo.
Placing the turbo_frame_tag anywhere inside the table is not valid... your browser actually attempts to move that tag outside the table on render... which breaks everything.

You need to wrap the entire table in a turbo_frame_tag. Give each row or element you want to target a uniq DOM id. Each element you want to target needs to originate from a partial. Then, in your controller action that responds to turbo_stream simply target the DOM id (not the turbo_frame_tag id) using the same source partial (be sure to pass in all the same locals).
This will work. I typically target the row id, and turbo_stream.replace "uniq_row_id" if I want to manipulate existing data in a row.
If you have other links in the table be sure to use data: {turbo_frame: "_top"} since the entire table is now wrapped in turbo.
You could give the tbody a unique id and then turbo_stream.prepend to insert a new row on top of existing rows. Each row needs to originate from a partial and then use that same partial to render a new row via turbo_stream.
Placing the turbo_frame_tag anywhere inside the table is not valid... your browser actually attempts to move that tag outside the table on render... which breaks everything.

Here you’re using turbo streams which require you to have a specific handling in your controllers, you don’t need a turbo frame tag at all . However if you want to benefit from the frame capabilities ( no need to change anything in the controller , scoped navigation , etc ) you can’t proceed as such

Table éléments only accept a set of elements as children. It's not valid html to put a div inside a table or a tr directly.

The rails g sacaffold ...  creates
s.  A strong warning should be present in the docs explaining why using Turbo with scaffold created files is not possible.

Rails 7 no longer uses tables in the scaffold templates.

@dhh: Are you sure?
Rails version: 7.0.1 (Ruby 3.1.0)
Command: rails g scaffold test  titre:string commentaire:text
File: app/views//index.html.haml
Results:
https://www.dropbox.com/s/e7l5lxcdyey7y0x/Capture d’écran%2C le 2022-01-18 à 11.51.21.png?dl=0

haml is not part of Rails itself. So looks like those templates are being generated by the HAML gem, and that gem may still be using tables. Rails itself no longer does.

I have opened an issue over there (https://github.com/haml/haml-rails/issues/179) and I am working to find a solution.
What I'd like to make is a solution that used plain vanilla css.  I don't use bootstrap and I can not assume that everyone uses my own CSS Framework choice (Zurb-Foundation)

It's not clear to me why this issue has been closed. It seems that it's still a problem without a fully satisfactory workaround.
There's a suggested solution using turbo streams on ticket 567, but as is clear from the example code, the solution forces you to now have two different versions of your template code, which immediately makes the whole Turbo thing less useful.
As someone using Turbo for the first time, this is quite a major snag.
Would it be possible to implement the solution that's been suggested in #567 of allowing an element with a data-turbo-frame attribute to behave as a <turbo-frame>, e.g.
? This seems to me like a really elegant solution, which would allow users to get the full power of turbo frames, including complete template reuse, capable of being used regardless of the restrictions of which HTML elements are valid in a given position in the DOM.
Reopen and make awesome fix? :-)

Would it be possible to implement the solution that's been suggested in #567 of allowing an element with a data-turbo-frame attribute to behave as a <turbo-frame>

There is a mechanism in HTML to perform this upgrade; it's called Custom Built-in Elements. Unfortunately, this mechanism isn't ready for general use, because Webkit (i.e. Safari) refuses to implement it.
Nevertheless I wrote up a treatment that generalizes Turbo to allow custom built-ins, see #131. Slightly stale now but was working on Firefox and Chrome, and could be updated readily for current Turbo if the Webkit situation changes.
In the meantime I recommend revisiting the turbo-stream solution in #567, with the following nuance:

the solution forces you to now have two different versions of your template code

I'm loathe to turn a github issue into a tutorial ... but ... you can still DRY this up, refactoring to render the table rows using a partial, and letting Rails select the appropriate container e.g. with formats and (my favourite) partial layouts.

Thanks @inopinatus, and nice work on #131, that looks very promising.
Re. code reuse, I'm actually using Django, but you're right in that it's technically possible to keep things DRY - the code isn't repeated, there's just now more of it 😀 . It works, but it's starting to feel like I'm making my application more complicated, not less.
Anyway, given that a solution to this is being worked on, and there are clearly lots of people encountering this problem, could someone with the relevant permissions re-open this ticket?

Another point worth noting on the turbo-stream solution is that there doesn't appear to be a turbo:stream-render event, so if you're trying to integrate with something like Vue.js (as described in this video) then that approach of using the events to re-initialise your Vue (or other FE) components isn't viable, as there's no post-render event (only a before-render event) for streams.
Maybe that could be fixed separately, but as a current limitation it's another good reason for pushing towards getting a solution to allow Turbo Frames to work inside tables.

This is what @inopinatus said, putting for someone who is new to hotwire.

      <% @posts.each do |post| %>
        <%= render 'post_row', post: post %>
      <% end %>

and in controller
def create
    @post = Post.new(post_params)

    respond_to do |format|
      if @post.save
        format.turbo_stream do
          render turbo_stream: turbo_stream.append("posts_table", partial: "posts/post_row", locals: { post: @post })
        end
      end
    end
end

This is what @inopinatus said, putting for someone who is new to hotwire.

  <% @posts.each do |post| %>
    <%= render 'post_row', post: post %>
  <% end %>

And in controller:
def create
  @post = Post.new(post_params)

  respond_to do |format|
    if @post.save
      format.turbo_stream do
        render turbo_stream: turbo_stream.append("posts_table", partial: "posts/post_row", locals: { post: @post })
      end
    end
  end
end

With other actions u shouldn't have problems, I think only append and prepend are the issue. For replace, remove etc. you can just wrap
 in turbo frame.

You can also have a unique ID on each table row
 and have it replaced
<turbo-stream action="replace" target="unique">
  <template>

....new content

  </template>
</turbo-stream>

turbo_stream.replace "unique", partial: "path/index" # view that contains de the table row with same id

This solution is worked for me for CRUD operation now i can insert, delete and update with updated view without refreshing page.
index.html.erb

<%= turbo_stream_from "rooms" %>

      Name
      Key
      User

    <% @rooms.each do |room| %>
      <%= render room %> <%# assumes that `rooms/room` renders a `<tr>`
    <% end %>

_room.html.erb

<tr id="room_<%=room.id%>" is="turbo-frame">
  <%= room.name %>
  <%= room.key %>
  <%= room.user.name %>

@hannan228 Could you elaborate? Do the is="turbo-frame" attributes make your tbody and tr act like turbo-frame elements?

@manuelmeurer yes, By adding a unique id and is="turbo-frame" to the row tag, it can be used as a Turbo-frame element.

@hannan228
I tried this, but it didn't work for me
in create.turbo_stream.erb
  <%= turbo_stream.prepend "table-body" do %>
    <%= render partial: 'incomes/income', locals: { income: @income } %>
  <% end %>

in index.html.erb

              <%= render(TableNoItemsComponent.new(show: @collection.blank?)) %>
              <%= render(partial: @partial, collection: @collection) %>

@thamdavies Please convert the table rows into turbo-frames. Please note that turbo-frames won't work on the tbody tag, but they will work on tr tags. If you want to prepend the entire table, then enclose tbody in a new div. I believe this should make it work. thanks

Many of these examples target creation, but for me the issue was editing the row I was on and, for whatever reason (not using safari), the is='turbo-frame' solution wasn't working for me.
FWIW, the missing piece for me was adding turbo_stream: true to the edit button:
<%= button_to t('edit'), edit_something_path(something), method: :get, data: { turbo_stream: true } %>

Then, I could define app/views/something/edit.turbo_stream.erb to replace the row. For me, that looked like
<%= turbo_stream.replace @something, partial: '', locals: {} %>

Late to the party, non rails user here...
Just encountered this issue, and was able to get row edit working with this simple setup
table.html
<turbo-frame id="edit-target"></turbo-frame>

          Edit me

edit.html
<turbo-frame id="edit-target">
  <turbo-stream action="replace" target="row-1">
    <template>

          <input value="Ok"></input>

    </template>
  </turbo-stream>
</turbo-frame>

Late to the party, non rails user here...
Just encountered this issue, and was able to get row edit working with this simple setup
table.html
<turbo-frame id="edit-target"></turbo-frame>

          Edit me

edit.html
<turbo-frame id="edit-target">
  <turbo-stream action="replace" target="row-1">
    <template>

          <input value="Ok"></input>

    </template>
  </turbo-stream>
</turbo-frame>

Wow! Thanks a lot! I did not know you can put turbo_stream tag inside turbo_frame. This solved all the issues with tables.

Here is my simple way of adding a row to a table. Maybe not best practice, but works.
Overview: Documents are added to an application via API. The Document index page is updated via hotwire
The view is the document index page at app/views/documents/index.html.erb
Here is the entire table:

            Description
            Link
            Token

          <% @documents.each do |document| %>

              <%= document.description %>
              <%= document.link %>
              <%= document.token %>
              <%= link_to "Show", document, class: "button is-small is-info" %>

          <% end %>

Documents are broadcast to the index page using the trigger of callback: after_create_commit. Here is the entire document model:
class Document < ApplicationRecord
 # this hotwire event requires redis to be running

 after_update_commit do
   broadcast_replace_to(
     :document,
     target: "main-document-image",
     html: "",
   )
 end

 after_create_commit do
   broadcast_append_to(
     :documents,
     target: "document-list",
     html: "

         #{self.description}
         #{self.link}
         #{self.token}
         Show

     "
   )
 end
end

I did not need to add an id to the table row, neither in the erb, nor in HTML I am sending in the append stream.
I did not need to add is="turbo-frame" anywhere.

Happy to hear any improvements, just noting this basic version for anyone who finds this thread.

authors: AleksandarJeftic Intrepidd adamalton ajaishankar atstockland ayb defsdoor dhh estani etcook hannan228 inopinatus james-em johnofsydney jonathanhefner julianrubisch kwent manuelmeurer maricavor michelson rjaus seanharmer seanpdoyle siegfault thamdavies vanthao03596 woto ycrepeau

repo: hotwired/turbo


text:
HikariCp Accept the id of response that is not recognized by Server.

JDBC version in pom.xml
<dependency>
            <groupId>com.github.housepower</groupId>
            <artifactId>clickhouse-native-jdbc</artifactId>
            <version>2.2-stable</version>
</dependency>

ClickHouse version
ClickHouse server version 20.7.2
Error  logs
Caused by: org.springframework.beans.factory.BeanCreationException: Error creating bean with name 'dataSource' defined in class path resource [com/bilibili/warship/common/model/config/ClickHouseConfig.class]: Bean instantiation via factory method failed; nested exception is org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.sql.DataSource]: Factory method 'dataSource' threw exception; nested exception is com.zaxxer.hikari.pool.HikariPool$PoolInitializationException: Failed to initialize pool: Accept the id of response that is not recognized by Server.
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:655)
	at org.springframework.beans.factory.support.ConstructorResolver.instantiateUsingFactoryMethod(ConstructorResolver.java:483)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.instantiateUsingFactoryMethod(AbstractAutowireCapableBeanFactory.java:1336)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBeanInstance(AbstractAutowireCapableBeanFactory.java:1176)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.doCreateBean(AbstractAutowireCapableBeanFactory.java:556)
	at org.springframework.beans.factory.support.AbstractAutowireCapableBeanFactory.createBean(AbstractAutowireCapableBeanFactory.java:516)
	at org.springframework.beans.factory.support.AbstractBeanFactory.lambda$doGetBean$0(AbstractBeanFactory.java:324)
	at org.springframework.beans.factory.support.DefaultSingletonBeanRegistry.getSingleton(DefaultSingletonBeanRegistry.java:226)
	at org.springframework.beans.factory.support.AbstractBeanFactory.doGetBean(AbstractBeanFactory.java:322)
	at org.springframework.beans.factory.support.AbstractBeanFactory.getBean(AbstractBeanFactory.java:202)
	at org.springframework.beans.factory.config.DependencyDescriptor.resolveCandidate(DependencyDescriptor.java:276)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.doResolveDependency(DefaultListableBeanFactory.java:1307)
	at org.springframework.beans.factory.support.DefaultListableBeanFactory.resolveDependency(DefaultListableBeanFactory.java:1227)
	at org.springframework.beans.factory.support.ConstructorResolver.resolveAutowiredArgument(ConstructorResolver.java:884)
	at org.springframework.beans.factory.support.ConstructorResolver.createArgumentArray(ConstructorResolver.java:788)
	... 20 common frames omitted
Caused by: org.springframework.beans.BeanInstantiationException: Failed to instantiate [javax.sql.DataSource]: Factory method 'dataSource' threw exception; nested exception is com.zaxxer.hikari.pool.HikariPool$PoolInitializationException: Failed to initialize pool: Accept the id of response that is not recognized by Server.
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:185)
	at org.springframework.beans.factory.support.ConstructorResolver.instantiate(ConstructorResolver.java:650)
	... 34 common frames omitted
Caused by: com.zaxxer.hikari.pool.HikariPool$PoolInitializationException: Failed to initialize pool: Accept the id of response that is not recognized by Server.
	at com.zaxxer.hikari.pool.HikariPool.throwPoolInitializationException(HikariPool.java:595)
	at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:581)
	at com.zaxxer.hikari.pool.HikariPool.<init>(HikariPool.java:115)
	at com.zaxxer.hikari.HikariDataSource.<init>(HikariDataSource.java:81)
	at com.bilibili.warship.common.model.config.ClickHouseConfig.dataSource(ClickHouseConfig.java:40)
	at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
	at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
	at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
	at java.lang.reflect.Method.invoke(Method.java:498)
	at org.springframework.beans.factory.support.SimpleInstantiationStrategy.instantiate(SimpleInstantiationStrategy.java:154)
	... 35 common frames omitted
Caused by: java.lang.IllegalStateException: Accept the id of response that is not recognized by Server.
	at com.github.housepower.jdbc.protocol.RequestOrResponse.readFrom(RequestOrResponse.java:52)
	at com.github.housepower.jdbc.connect.PhysicalConnection.receiveResponse(PhysicalConnection.java:95)
	at com.github.housepower.jdbc.connect.PhysicalConnection.receiveHello(PhysicalConnection.java:81)
	at com.github.housepower.jdbc.ClickHouseConnection.serverInfo(ClickHouseConnection.java:200)
	at com.github.housepower.jdbc.ClickHouseConnection.createPhysicalInfo(ClickHouseConnection.java:184)
	at com.github.housepower.jdbc.ClickHouseConnection.createClickHouseConnection(ClickHouseConnection.java:179)
	at com.github.housepower.jdbc.NonRegisterDriver.connect(NonRegisterDriver.java:26)
	at com.zaxxer.hikari.util.DriverDataSource.getConnection(DriverDataSource.java:138)
	at com.zaxxer.hikari.pool.PoolBase.newConnection(PoolBase.java:358)
	at com.zaxxer.hikari.pool.PoolBase.newPoolEntry(PoolBase.java:206)
	at com.zaxxer.hikari.pool.HikariPool.createPoolEntry(HikariPool.java:477)
	at com.zaxxer.hikari.pool.HikariPool.checkFailFast(HikariPool.java:560)
	... 43 common frames omitted

Steps to reproduce
datasource:
    hikari:
      driver-class-name: com.github.housepower.jdbc.ClickHouseDriver
      jdbc-url: jdbc:clickhouse://192.168.1.112:9000
      username:
      password:

Other descriptions
Use hikaricp connection pool to report an error.
<hikariCP.version>3.4.5</hikariCP.version>

hello， can you provide a simple reproduce java code?

Caused by: java.lang.IllegalStateException: Accept the id of response that is not recognized by Server.
I met the same problem today,  in my situation, there is already a service start on port 9000, I changed another port in [/etc/clickhouse-server/config.xml : <tcp_port>19000</tcp_port>] ,  and the problem sovled

The jdbc driver works properly with hikariCP in my application. According to @Kingleading description, it looks like not jdbc driver issue? Could you please check it? @imperio-wxm

Close issue because cannot reproduce, feel free reopen it if you have a way for me to reproduce.

It would be reproduced by setting the port of jdbc-url with an active none-clickhouse-server port,  such as an active database port, it would be caused by wrong setting, not an issue

authors: Kingleading imperio-wxm pan3793 sundy-li

repo: housepower/ClickHouse-Native-JDBC


text:
New bug intoduced in editor in latest build (artifacts on top of editor see pic)

Plus moving a parent node with child locked to it corrupts the parent node and results in PHP errors below:
Notice: Undefined index: node_iconfilename in /var/www/html/plugins/weathermap/editor.php on line 380 Notice: Undefined index: node_iconfilename in /var/www/html/plugins/weathermap/editor.php on line 384 Notice: Undefined index: node_iconfilename in /var/www/html/plugins/weathermap/editor.php on line 385
PS: I will get back to you on WARN26 issue. I'm will create a simple case scenario and get back to you...

Tested the patch, Howie that you did 40min ago for editor.php original problem reported still there.
Please validate
Notice: Undefined index: node_iconfilename in /var/www/html/plugins/weathermap/editor.php on line 380 Notice: Undefined index: node_iconfilename in /var/www/html/plugins/weathermap/editor.php on line 384 Notice: Undefined index: node_iconfilename in /var/www/html/plugins/weathermap/editor.php on line 385 --NO ICON----ARTIFICIAL ICON--

It works for me... both issues are part of the same problem (outputting part of the page in the wrong order).

I'm sorry must have been cache issue works now thanks :)

authors: howardjones ikorzha

repo: howardjones/network-weathermap

license: mit


text:
Fabric Support ?

Hello currently  on fabric  project seems to giving errors due to @shopify/flash-list is not compatible with fabric right now https://github.com/Shopify/flash-list/issues/196
Just a heads up otherwise great work keep it up

I think we need to wait for update from FlashList library 🥹

authors: KubilayKerim howljs

repo: howljs/react-native-calendar-kit


text:
TwilioVoice.connect doesn't work

When I run TwilioVoice.connect I don't get any errors in react-native, but I do get this in android studio.
D/RNTwilioVoice: sendEvent connectionDidDisconnect params { NativeMap: {"call_to":null,"call_state":"DISCONNECTED","call_sid":null,"call_from":null,"err":"TwiML application not found"} }
The even listener just said the device was ready so i'm not sure why it wouldn't work.

@JosephMulder, I am getting exactly the same issue. Please give me a solution to this problem.

How is this issue resolved @JosephMulder  @MssMaster ??

authors: JosephMulder MssMaster tragicmj


text:
How to run it completely on cpu?

I tried changing the device to cpu in your colab notebook, but it throws
CUDA errors
Can you please guide me 🙏🏼

Hi, as far as I know, the causal_conv1d used in Mamba does not currently support CPU inference. You might want to check the issues in the Mamba original repository to see if there's any related solution. I'm really sorry that I can't help you with this.


text:
[Chat] Add KTO

📌 Checklist before creating the PR

[x] I have created an issue for this PR for traceability
[x] The title follows the standard format: [doc/gemini/tensor/...]: A concise description
[ ] I have added relevant tags if possible for us to better distinguish different PRs
[x] I have installed pre-commit: pip install pre-commit && pre-commit install

🚨 Issue number

Link this PR to your issue with words like fixed to automatically close the linked issue upon merge
e.g. fixed #1234, closed #1234, resolved #1234

📝 What does this PR do?

Summarize your work here.
if you have any plots/diagrams/screenshots/tables, please attach them here.

💥 Checklist before requesting a review

[ ] I have linked my PR to an issue (instruction)
[ ] My issue clearly describes the problem/feature/proposal, with diagrams/charts/table/code if possible
[x] I have performed a self-review of my code
[x] I have added thorough tests.
[x] I have added docstrings for all the functions/methods I implemented

⭐ Do you enjoy contributing to Colossal-AI?

[x] 🌝 Yes, I do.
[ ] 🌚 No, I don't.

Tell us more if you don't enjoy contributing to Colossal-AI.

@YeAnbang Seem that you need to rename testing data.

repo: hpcaitech/ColossalAI


text:
Copy comments

This closes https://github.com/hpi-swa-lab/BP2020RH1/issues/73
Some notes on the implementation:
The copyMorph method previously was also used for a lot of stuff where copying may not be the word one would intuitively use. We introduced a parameter to this function, that should be true for a "real" copy, i.e., you actually want a deep copy of the morph object.
Then the idea for the copying and pasting is as follows:

Cache CommentIndicators, Comments,... that the original Morph holds
Remove these of the original Morph
Make a copy of the original Morph without these
Readd the cached elements to the Morph

The last thing to do was then handling some tricky cases when multiple Morphs are selected. Here we introduced the option to skip the copying from Morphs if their copy method returns a falsy value.
This was tested with short-clicking and dragging of the halo and also Strg-C.

I think we already have a test case for this, as it is easily testable behavior. Please write tests or adapt existing test cases to show:

Morph with comment on copy retains comment
Copy does not have a comment
(optionally) test comment indicators

I think we already have a test case for this, as it is easily testable behavior. Please write tests or adapt existing test cases to show:

Morph with comment on copy retains comment
Copy does not have a comment
(optionally) test comment indicators

I would like to see those changes ;)

Since abandon() is not yet present on this branch it will not be changed in this MR. See https://github.com/hpi-swa-lab/BP2020RH1/issues/98

I would like to see those changes ;)

Since abandon() is not yet present on this branch it will not be changed in this MR. See https://github.com/hpi-swa-lab/BP2020RH1/issues/98

authors: frcroth linusha


text:
If event end date is today event isn't shown in event list

^this

@Philipp-Bode Is it your fault that the event still doesn't show on the main page?

I fixed the scope that was used for the event-index list, apparently the main page does not use that scope. Am on it.

@tom95 Maybe?

:revolving_hearts:

authors: Philipp-Bode bjrne hendraet


text:
有没有办法用于 Anonymous pipes 和 Named pipes （进程间通信）

父进程和子进程之间通信，不想开个端口，走TCP通信，用 系统提供的管道来通信，一边传一个Stream，另一边接收这个Stream。
请求等待响应可能有些麻烦，不等待响应，是否可以用hprose来处理

我没试过，你可以参考：
https://github.com/hprose/hprose-dotnet/blob/master/src/Hprose.RPC/TcpHandler.cs
https://github.com/hprose/hprose-dotnet/blob/master/src/Hprose.RPC/TcpTransport.cs
这俩试试看。
TcpHandler 是服务器端的 Tcp 处理代码，TcpTransport 是客户端的 Tcp 处理代码。你按照这个结构来分别写一个 pipes 的客户端和服务器端处理代码，然后
Client.Register<AnonymousPipeTransport>("ap");
Client.Register<NamedPipeTransport>("np");
Service.Register<AnonymousPipeHandler, AnonymousPipeServerStream>("ap");
Service.Register<NamedPipeHandler, NamedPipeServerStream>("np");

注册一下你开发的这些处理代码就可以用了。

整了两天半，终于粗略能用了。
服务端我没有用Handler，有一个Service，然后封装它的Handle方法，就OK了。
客户端还是要老老实实实现Transport，不过还是很简单的，传入PipeStream，然会对这个Stream进行输入输出。是的，输出也封装了，因为用的NamedPipeStream 本身就是双向流，这样Request - Response模式也搞定了。
还有一个难点在于服务端也可以向客户端发起请求，所以单个Stream是不够的，因此整了两个Stream，终于是简单测试通过了。
不得不说，Hprose的API封装的太好了，所有针对liu的传输都可以轻易嫁接上。真棒👍

repo: hprose/hprose-dotnet


text:
Rename terms

rename 'wing vein' to 'wing vein ABCD'

rename FBbt:00004750 from 'wing septum 2' to 'wing septum 2 ABCD'
rename http://purl.obolibrary.org/obo/FBbt_00004752 from 'second anal vein' to 'second anal vein ABCD'

repo: hrshdhgd/onto-crawler


text:
PlayJson: Use a RejectionError to transport a parsing error

As discussed in #46, akka-http allows you to put more information about unmarshalling errors into the rejections.
This PR puts the original JsError into the Rejection. Unfortunately I had to create a pretty superfluous wrapper exception but I haven't found a way to avoid this.

Also, it took me a little while to figure out the actual rejection handler code, which is this one:
implicit def rejectionHandler =
    RejectionHandler
      .newBuilder()
      .handleAll[ValidationRejection] { rejections =>
        val combinedError =
          rejections.collect({ case ValidationRejection(_, Some(PlayJsonError(jsError))) => jsError }).reduce(_ ++ _)

        val errorJson = Json.stringify(JsError.toJson(combinedError))
        complete((StatusCodes.BadRequest, HttpEntity(ContentTypes.`application/json`, errorJson)))
      }
      .result()

This should be documented somewhere. Where would be a good place? In the readme, or maybe create one in akka-http-play-json/Readme.md?

I've fixed what came up in the review and amended my commit. It should be all clean now.

Thanks!

authors: hseeberger lenniboy

repo: hseeberger/akka-http-json


text:
Added one resource

Spyse is a pretty useful one, IMO

Closing this, as https://spyse.com seems down. Sorry, @Luci-d 😞

authors: Luci-d hslatman

repo: hslatman/awesome-threat-intelligence


text:
Add "sorting by date" mode to "contributed music to groups" box

Not sure if this should display individual contiguous ranges (of years) or not.
For example, some of Erik Scheele's groups, showing just the range from earliest to latest:

Official Discography (2010–2020)
Fandom (2010–2021)
Homestuck Gaiden (2010–2011)
Beyond (2012–2016)
Unofficial MSPA Fans (2012–2021)
etc

And the same data, but individual contiguous ranges:

Official Discography (2010–2013, 2016, 2019–2020)
Fandom (2010–2012, 2016, 2018, 2021)
Homestuck Gaiden (2010–2011)
Beyond (2012, 2016)
Unofficial MSPA Fans (2012, 2021)

It's important to consider this feature in the context of #308. Detailed chronology breakdowns per-group will be available by filtering, making the details here somewhat extraneous. However, this mode may also be used as a way to decide which groups you're interested in filtering by at the moment - in which case the extra details are useful, and directly reflected in the data you choose to filter.
Unlike "Sorting by duration", this does apply for artwork contributions as well as music. Client-side JS may need refactoring to support more than one of these sorts of controls being present on a single page (haven't investigated yet).

Another option is to display multiple items for each group - one for each continuous range of years:

Official Discography (2010–2013) (sorted before Homestuck Gaiden because its range starts sooner)
Homestuck Gaiden (2010–2011) (sorted before Fandom because its range ends sooner)
Fandom (2010–2012)
Beyond (2012)
Official Discography (2016) (these three are sorted according to release dates within 2016)
Fandom (2016) (above)
Beyond (2016) (above)
Fandom (2018)
Official Discography (2019–2020)
Fandom (2021)

But it's honestly kind of obtuse. Dividing by more discrete chunks of time is what the rest of the list is for, after all, and the details are clear once you've chosen what to filter by.
Worth keeping in mind, but probably not preferable above the two above.

Alright, thanks to Tangle in #hsmusic-chat, we've got a pretty fleshed-out design for this feautre now.

Concerns with the current group contributions info:

Sorting by duration or by count is not an especially useful default view.

Duration and count are both atemporal ranking kinds of placement: they provide information that simply isn't relevant if you don't care about comparing an artist's amoutn of work for one group to that of another. There is a casual use for that information, besides "for fun" — it can give a sense of what works an artwork might be especially known for, or prominent in the creation of — but this is mainly its only use. Details except for the very top can quickly turn into visual noise, decreasing the emotional value of the element as a whole (and encouraging you to just skip past all of it, all the time).
The element is not unreasonably huge, but it's still something that most people probably skip over when viewing an artist info page. If they aren't using, they have to skip over it, because it's always at the top of the tracks/artworks lists.
(Note: tracks and artworks do share the same default—both sort by count—so this isn't something a "sorting by date" would improve further on.)

Sorting by duration or by count isn't very good as a filtering control.

Not to say it's not good at all, but it tends to be poor for quickly accessing a select group you have in mind. Sure, Desynced is near the top of Rainy's list, but look for UMSPAF and SAHCon and the only cues you're getting for free are the group colors. Generally, since the lower end of the list is inherently more random, you have to do some searching. If you aren't aware of roughly how much the artist has contributed to the group in mind, sorting is absolutely random.
Sorting is moreover random per artist — each artist has contributed different amounts to different groups, so the list is always entirely personalized to them. At best you can usually find Fandom or Beyond closer to the top (since they include the totals of most quantities in individual other groups), but that's all you get. The most important groups for filtering (official / fandom / beyond) are at best semi-predictable across artists; the rest you can't build any sense across artists.

Presenting groups as completely discrete units, when there is almost always some degree of overlap, can be confusing to parse and understand.

This is a concern brought up by Makin in #issuefication-zone—thanks! Also what sparked Tangle's review and brainstorming.
The worst case is when an artist's contributed to a single fandom-oriented group, as is common for recent contributors to UMSPAF, for example: the list displays Contributed music to groups: Fandom (5 tracks), UMSPAF (5 tracks), giving the impression that the artist's contributed ten tracks total, when in fact they've only five!
But this can be broadly confusing anyway, ex. Rainy's top three are Fandom (74 tracks), Desynced (44 tracks), Deconreconstruction (21 tracks)—you can guess that 44 + 21 comes somewhere sort of around 74, but on closer inspection there are 11 tracks not accounted for. You have to parse the rest of the list to figure out what's what—UMSPAF (6 tracks), Stuck at Home Con (3 tracks) gets you all the way to 74—and there's no visual cue to assist. The numbers work out neatly for Rainy, reinforcing the apparent breakdown; but that's rare, as many artists have contributed tracks to albums that aren't (yet) categorized into specific groups besides Fandom.
The quantity-sorting modes are predominantly useful because they treat groups as discrete things, i.e. they don't regard overlap at all... but this is confusing at first glance, especially if you're parsing the list for any purpose besides getting detailed comparison data.

Tangle's proposal is to address all these concerns at once by using a spin on the "sorting by date" proposed here. Best to review the full discussion for details (#hsmusic-chat), but here's a summary of the takeaways:

Make "sorting by date" the default view.

Chronological sorting reflects the structure of the actual lists! Quantity-ranking is something that "sorting by count" and "sorting by duration" uniquely do; otherwise, the entire page is sorted chronologically (and so are chronology links and most lists across the website). Quantity-ranking is sort of like a normal listing leaking into an artist info page's content, and default content at that. Although it may be useful (and is always neat trivia), it doesn't particularly fit.
Chronological sorting summarizes the content of the page. If you're interested in browsing the full list (or a filtered selection of it), "sorting by date" provides information that is relevant and useful: you get a sense of where/when certain contributions will show up.
Chronological sorting generally provides better stability across artists. Some groups have very long histories (UMSPAF spans about 11 years of history!), but most span a more limited timeframe. If you're looking for a given group, you likely know loosely when its music got started. "Sorting by date" provides you wtih simple numeric information that is consistent across artists (years are absolute, forward always means later), so you can quickly skip any entries that obviously predate the desired group.
Chronological sorting is great for filtering. Filtering necessarily means removing context; if the list of buttons you can click to filter is itself sorted chronologically, you can tell exactly what nearby context you're setting aside! Also, if you're choosing to filter by multiple groups, a chronological list will generally give you a sense of what things will overlap. If you're mostly curious what an artist was doing in 2020, entries including that year will generally clump together; even if they're not immediately nearby, the numeric data is still fairly easy to parse and find relevant ranges.
Making "sorting by date" the default leaves room for "sorting by count" and "sorting by duration" to focus harder on doing what they're good at, without bending to suit a more useful general-purpose view. And since the whole wiki places a great significance on chronology, "sorting by date" is inherently better suited to provide useful default information.

Chunk groups under the main dividing groups of the wiki—Official Discography, Fandom, Beyond, Additional Tracks.

Broadly, these groups (defined in wiki-info.yaml by Divide Track Lists By Groups) represent how we conceptualize and the entire contents of the wiki at the very highest level. Apart from referencing-track lists, they also divide the "Random Pages" and "Artists - by Group" listings. And they're obviously constantly represented in data, marking the basic categorization of all albums and tracks.
Chunking by the dividing groups makes locating those dividing groups easier. These would always be sorted the same order on every artist info page (only skipping the completely empty chunks), so if an artist's contributed to Official Discography, that always places first, for example. This sort is arbitrary, but reinforced across the wiki, so it's a common cue. And since the dividing groups are the titles of chunks and everything else is indented, they're trivial to pick out of the crowd.
Chunking by the dividing groups makes locating sub-groups easier. They automatically put the main groups and all other groups on different (visual) levels, and there's no mixing up if SAHCon willl be indented or not; there are fewer albums to visually parse. Although some groups include material under two or more of the dividing groups (and these would be duplicately represented, though with different date data), most don't—you can always spot Desynced under Fandom, certainly never Official Discography. This makes for more consistency across artist pages, and generally easier and quicker parsing.
Chunking by the dividing groups provides data that is usually more useful. At a baseline, we categorize everything on the wiki under official/fandom/beyond; apart from "Albums - by Date", the dividing groups' info pages provide the basic "stories" which all albums on the music wiki fit into. So, chunking by these groups reflects those wiki-wide "stories" on artists' own pages—fitting the summary into the language the rest of the wiki uses, and making it more approachable/fun to explore.
Chunking isn't exactly ideal if you want a high-level summary of everything that an artist has contributed to—you have to mentally interweave the chunks—but that's a concession we're OK with making, mainly because the full contribution lists, when not filtered, already serve that purpose. (They're just more verbose about it.)
Chunking is incompatible with quantity-sorting. The point of sorting by quantity (count/duration) is to provide an absolute metric for comparing amounts. Chunking makes the final ranking muddier; if you want the data across groups, you have to keep mental track of the current maximum/minimum and cross-reference all chunks for the next largest/smallest value. It's awkward and inconvenient. Meanwhile, duplicate entries (groups which hold contributions under both Fandom and Beyond) are far less meaningful than in a chronological context, and outright problematic if an individual contribution counts as both fandom and beyond.

We'd like to introduce this feature at the same time as filtering (#308) — we (obviously) think they go well together. See https://github.com/hsmusic/hsmusic-wiki/issues/308#issuecomment-2067822462 for details.

repo: hsmusic/hsmusic-wiki


text:
Feat toast

This PR will add code for the Toast component
In this PR, 167 additions 21 deletions lines of code

some files contain only 5 to 6 lines of code

Please review this PR and give your feedback

Live URL

Thank you for reviewing,


text:
Ionic 5 Update Request

Ionic version:  (check one with "x")
[ ] 2.x
[ ] 3.x
[ ] 4.x
[ - ] 5.x
Ion2-calendar mode:  (check one with "x")
[ ] components mode
[ ] modal mode
I'm submitting a ...  (check one with "x")
[ - ] bug report
[ ] feature request
[ ] help me
Current behavior:

The error comes from momentjs package which I believe must be updated and optimised for Ionic 5.
Expected behavior:

Steps to reproduce:

Related code:
insert short code snippets here
I ran the following code in Ionic 5 as you'd expect from your documentation:
`  async openCalendar() {
    const options: CalendarModalOptions = {
      pickMode: 'range',
      title: 'Range',
      color: 'danger'
    };

    let myCalendar = await this.modalCtrl.create({
      component: CalendarModal,
      componentProps: { options }
    });

    myCalendar.present();
  }`

Other information:
Ionic info: (run ionic info from a terminal/cmd prompt and paste output below):
insert the output from ionic info here

After running the above code snippet from the documentation, this is an error I got below:
ERROR TypeError: moment is not a function     at CalendarModal.push../node_modules/ion2-calendar/dist/components/calendar.modal.js.CalendarModal.init (calendar.modal.js:47)     at CalendarModal.push../node_modules/ion2-calendar/dist/components/calendar.modal.js.CalendarModal.ngOnInit (calendar.modal.js:31)     at checkAndUpdateDirectiveInline (core.js:31910)     at checkAndUpdateNodeInline (core.js:44367)     at checkAndUpdateNode (core.js:44306)     at debugCheckAndUpdateNode (core.js:45328)     at debugCheckDirectivesFn (core.js:45271)     at Object.eval [as updateDirectives] (CalendarModal_Host.ngfactory.js? [sm]:1)     at Object.debugUpdateDirectives [as updateDirectives] (core.js:45259)     at checkAndUpdateView (core.js:44271)
I then figured that the dependencies haven't been updated in a while, especially with some changes in Ionic 5. I would like to request that you update this very important calendar in Ionic to be also used in Ionic 5.

this plugin supports ionic 5?

There's a PR that fix this, in the meanwhile use this repo: https://github.com/shaneparsons/ion2-calendar
Run these commmands:
npm uninstall ion2-calendar
npm i git+https://github.com/shaneparsons/ion2-calendar.git

Did the PR ever get merged, or we still need to use Shanes repo for Ionic 5/6?

authors: TingaZack shalinidxc-git ulver2812 zolakt


text:
What does this mean?

from section 2.1

If two local variables x and y are explicitly uninitialized, then on every path x’s definite first use must precede y’s definite first use.

What does this mean? y isn't mentioned at all prior to this or after this and I assume both x and y are placeholders. As such when it says x must precede y it's not clear to me which is which. e.g. in the subsequent example with uninitialized variables j and s how can I tell which one is the x that must be initialized first.
My best guess is that is intended to be interpreted as "If two local variables x and y are explicitly uninitialized and one one code path x's definite first use precedes y's definite first use then x's definite first use must precede y's definite first use on all code paths". However I can't see a justification provided for that assertion and can't intuit a good reason for it myself.

Good point, thanks. The point is that you have to initialize variables in declaration order.
I'll update the three bullets as follows:

A declaration of a local variable x that is initialized with = uninitialized; allocates stack memory as usual but does not invoke a constructor.
Every path containing x’s declaration must contain a definite first use of x before the declaration or initialization of another local variable, and that definite first use must be either to pass x to another function’s out parameter, or else be an assignment-expression to x (which can be from a single-object ex-pression or a possibly-empty initializer_list) that performs a single constructor call (usually direct-initialization) of x with the right-hand side expression treated as the argument to x’s constructor.
If two local variables x and y are declared in that order and are explicitly uninitialized, then on every path x’s definite first use must precede y’s definite first use.

And I'll add this Note:

The requirement to initialize in declaration order preserves that variable lifetimes continue to nest correctly, so that a later-declared local variable y can safely refer to a previously-declared variable x that will outlive y by construction.

I'll be in the next version of the PDF I push. Thanks!

Good point, thanks. The point is that you have to initialize variables in declaration order.
I'll update the three bullets as follows:

A declaration of a local variable x that is initialized with = uninitialized; allocates stack memory as usual but does not invoke a constructor.
Every path containing x’s declaration must contain a definite first use of x before the declaration or initialization of another local variable, and that definite first use must be either to pass x to another function’s out parameter, or else be an assignment-expression to x (which can be from a single-object ex-pression or a possibly-empty initializer_list) that performs a single constructor call (usually direct-initialization) of x with the right-hand side expression treated as the argument to x’s constructor.
If two local variables x and y are declared in that order and are explicitly uninitialized, then on every path x’s definite first use must precede y’s definite first use.

And I'll add this Note:

The requirement to initialize in declaration order preserves that variable lifetimes continue to nest correctly, so that a later-declared local variable y can safely refer to a previously-declared variable x that will outlive y by construction.

I'll be in the next version of the PDF I push. Thanks!

thanks that clarifies a lot. I'm a bit concerned about that limitation but that's a separate issue so I'll raise it separately once the paper is updated.

thanks that clarifies a lot. I'm a bit concerned about that limitation but that's a separate issue so I'll raise it separately once the paper is updated.

authors: hsutter shaneasd