Added tooltip prop to ActionButton.Item

This pull request adds tooltips to the ActionButtonItem component. It calculates the position of each action button and either places it to the left, right or on top of the action button item.
Here are pictures of what the tooltip looks like with an even and odd set of ActionButtonItems.

@geremih Would you be interested in adding this to your project?

Thanks @Ajackster! I have added some comments to be addressed before I can merge. Also, can you document your change in the Readme?

Hey @geremih I'm not sure what comments you are talking about. Happy to fix or improve anything though!

@geremih Hm I'm not too sure what the position prop actually does. I tried passing it down to the action button items and wasn't seeing the same result. I think the position prop is actually used for the placement of the actual ActionButton component, not necessarily the placement of the ActionButtonItems.
position="center"

position="left"

Would love to see this added. However, I think the tooltip text will also need a tooltipStyle prop to go with it to style the backdrop of the text and the text color. Or allow the user to supply a custom  component rather than limiting them to a string.

@AbhishekBiswal Haven't had the time to finish this yet, I've been very busy. I plan to do it very soon.

@Ajackster any work-in-progress branch I can pull this from? I'm trying to implement this:

@Ajackster I tried this PR out and I have some feedback if you don't mind.

For some weird reason, the tooltip doesn't show up on Android. Any idea why?
The tooltips don't align properly when you right position the ActionButton. See attached screenshot.

I think the key might be to place it up slightly higher than the button rather than the middle. This is what the My fitness Pal app does:

@rknell do you know if my fitness pal is written in React Native?

No idea! it just looks suspiciously like this project hey
http://www.snappy-apps.com.au
On 4 August 2017 at 07:48, Monte Thakkar<EMAIL_ADDRESS>wrote:

@rknell https://github.com/rknell do you know if my fitness pal is
written in React Native?
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/geremih/react-native-circular-action-menu/pull/3#issuecomment-320099441,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AFmlbWrzoPFJhjLaHTGaj52f7Livi6Cgks5sUkA4gaJpZM4LxxtP
.


Coords for Dravanian Mistletoe wrong

Heyo Ottermandias,
Just reporting another wrongly placed flag for another material I just came across. It is for the timed node for Dravanian Mistletoe.
The Node is at 26.0x-9.0y, but GatherBuddy (I assume) places it at 23.7x-6.2y instead and therefor out of bounds.
Nonetheless, GatherBuddy is such a big help and keep it up! ^^
Cheers,
Maxunit
EDIT: The same kind of applies to Lignum Vitae Log. The Flag is only a bit off, but i thought I just put it in here as well.

Hum. I just checked that node. There's a node exactly where the flag is set (after recording), but it doesn't actually spawn, while the one that does spawn doesn't get the flag. I gotta look at this in a bit more detail, but I don't think it's really relevant. It's only off by a bit and when it's up there's a correct marker anyway.
But interesting find, thanks!

I have fixed a wrong averaging of nodes that resulted in the first recorded node just being used for coordinates. The flag still won't be exactly on the node, but that's because there are multiple spawn points for some nodes and the records are averaged between them.


Add Python 3.10 and Drop Django-3.0 support

Release

Python 3.10: 2021-10-04 https://www.python.org/dev/peps/pep-0619/

Django 3.0: EOL: April 6, 2021

update tox and github CI

update setup.cfg

update document

bump version X.y.z for incompatibility update

It has been released https://pypi.org/project/django-redshift-backend/3.0.0/


Invalid package name

When trying to install the server I am greeted with an npm error.
/usr/bin/npm -g --prefix /home/casper/.config/emacs/.local/cache/.cache/copilot install<EMAIL_ADDRESS>npm error code EINVALIDPACKAGENAME
npm error Invalid package name "copilot-node-server\" of package<EMAIL_ADDRESS>name can only contain URL-friendly characters.
npm error A complete log of this run can be found in: /home/casper/.npm/_logs/2024-07-01T14_06_46_512Z-debug-0.log

Comint exited abnormally with code 1 at Mon Jul  1 16:06:46

I can't help much here.
You may want to examine the shell-quote-argument and copilot-install-server functions to find out where the extra \ comes from.

I don't see from the source where it may appear from. The code seems fine, i.e.
        "install" (format "%s@%s" copilot-server-package-name copilot-version)))
does not have an extra \. Could the @ symbol be automatically escaped?

what shell are you using, @cvanelteren ?
I wonder if this is some naive usage of the login shell by emacs. I ran into this myself, and I know I use a non-posix shell.
I did find that a perfectly okay workaround for this issue is to copy-paste the command into my own shell and run (without the incorrect backslash). Then emacs seems to have no problem picking up the new server binary and moving on with its life.

Using nushell (0.96.1).

I think the issue is with nushell, after copying the installation command  to bash and running it there, the installation succeeded, (and because this installation is persistent, you can continue the rest of the setup, like logging in).
The installation command can be found when you run M-x copilot-install-server, it looks something like this:
path/to/your/npm -g --prefix path/to/your/emacs/config/.local/cache/.cache/copilot install<EMAIL_ADDRESS>


implement expandable list using Polymer

bower install
(download Polymer CLI)
polymer serve
http://localhost:8080/components/more-list/
Click on demo on the top right

Nice work!

Should the README be updated with the description of this PR?

Nice work!


NU1603 Warnings

NEST/Elasticsearch.Net version:
5.4/5.5
Description of the problem including expected versus actual behavior:
warning NU1603: NEST 5.4.0 depends on Newtonsoft.Json (>= 10.0.0 && < 11.0.0) but Newtonsoft.Json 10.0.0 was not found. An approximate best match of Newtonsoft.Json 10.0.1 was resolved.

Shouldn't have these warnings when build in latest vs2017
Steps to reproduce:

Updated VS2017 to Version 15.3.0
Build the project having reference on NEST 5.4/5.5

Same problem with versions 2.4.6/2.4.6.

error NU1603: NEST 2.4.6 depends on Newtonsoft.Json (>= 9.0.0 && < 10.0.0) but Newtonsoft.Json 9.0.0 was not found. An approximate best match of Newtonsoft.Json 9.0.1 was resolved.

I also hit this. Specifically when trying to use NEST in a .NET Core project.
This is caused by NEST's nuspec file setting a lower-bound on Newtonsoft.Json of 10.0.0 but that version does not exist, the best match would be 10.0.1. Releasing new packages with updated lower-bounds to that would fix this issue. The reason these warnings are reported is that it negatively impacts package restore performance because the NuGet has to check the package feed for version 10.0.0 each time a restore is done (though there is some caching) before it falls back to 10.0.1.
See https://docs.microsoft.com/en-us/nuget/reference/errors-and-warnings#nu1603 for more.
I'd have sent a PR but I haven't had a chance to dig into the build scripts enough or set things up locally to test. I believe this line is the culprit:
https://github.com/elastic/elasticsearch-net/blob/2efdb55a6d40e71ca60b42ed9a23ddc7e6125863/build/scripts/Releasing.fsx#L37

I've taken @anurse 's suggestion and raised a PR - it's not a blocker for us, but it does mean that all dependencies that reference Newtonsoft.Json have warning triangles in VS, which makes it hard to find the actual warnings.

Any update when the next release fixing this will be available?

@xplatsolutions Hoping to get a new 5.x release out within the next week. We've been focused on getting the 6.x version of the client shipped as a priority.


[V2V] Prevent removing active conversion host

It is currently possible to remove a conversion host, while it is used by an active migration task. This will fail the migration task, so this should be blocked with a clear message.
While looking at how to implement that check, we noticed that most tests happen after the async configuration task has been created, which makes it difficult for an API user to understand why it failed.
This pull request adds a check in the disable_queue method for existing active tasks associated to the conversion host. And it also adds a check in enable_queue for the presence of an IP address for the resource.


Profile are not properly disposed from cache

Currently DefaultProfileCache is going to grow the more profiles we get in runtime. This could lend into memory issues.
Through the introduction of comms, we are going to fetch more profiles from peers. We need an implementation to dispose the unused profiles, for those users who has been disconnected, moved out from our room, etc.
DefaultProfileCache already has some methods for removing profiles from the map, however we need to hook this calls into the domain's flow. Also, we should properly implement DefaultProfileCache.Unload(...) method.
Another thing worth mentioning is that DefaultProfileCache.UpdateProfilingCounter() is wrongly implemented. We should fix this line, since the profile intentions are not the current profiles:
ProfilingCounters.ProfileIntentionsInCache.Value = profiles.Count;

Similar but not the same, related: https://github.com/decentraland/unity-explorer/issues/1433


H6052 White Temperature Bug

Govee Device SKU
H6052
Govee2MQTT Version
2024.01.13-b7277f05
Describe the issue
If I set the White balance over 8921K, the light is turning off, but it is still turned on in the Integration and the govee app, but no light is emitted. I can also set the temperature to 9009K, so 9K above the limit of the device, but the light is going dark already at values over 8921K.
Seems like colortemp 112 is working but 111 is causing the light to go dark
Startup Diagnostics
s6-rc: info: service s6rc-oneshot-runner: starting
s6-rc: info: service s6rc-oneshot-runner successfully started
s6-rc: info: service fix-attrs: starting
s6-rc: info: service fix-attrs successfully started
s6-rc: info: service legacy-cont-init: starting
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service legacy-services: starting
s6-rc: info: service legacy-services successfully started
GOVEE_API_KEY=REDACTED
GOVEE_MQTT_HOST=<IP_ADDRESS>
GOVEE_LAN_SCAN=<IP_ADDRESS>
GOVEE_EMAIL=REDACTED
GOVEE_PASSWORD=REDACTED
GOVEE_MQTT_PASSWORD=REDACTED
GOVEE_MQTT_USER=master
GOVEE_MQTT_PORT=1883
++ cd /app
++ exec /app/govee serve
[2024-01-14T11:07:24 INFO  govee::commands::serve] Starting service. version 2024.01.13-b7277f05
[2024-01-14T11:07:24 INFO  govee::commands::serve] Querying platform API for device list
[2024-01-14T11:07:25 INFO  govee::commands::serve] Querying undocumented API for device + room list
[2024-01-14T11:07:28 INFO  govee::service::iot] Connected to IoT: CONNACK code 0: Connection Accepted.
[2024-01-14T11:07:28 INFO  govee::commands::serve] Starting LAN discovery
[2024-01-14T11:07:28 INFO  govee::commands::serve] Waiting 10 seconds for LAN API discovery
[2024-01-14T11:07:28 INFO  govee::service::iot] IoT (re)connected with status CONNACK code 0: Connection Accepted.
[2024-01-14T11:07:38 INFO  govee::commands::serve] Devices returned from Govee's APIs
[2024-01-14T11:07:38 INFO  govee::commands::serve] Led-Tür (cef142b0b354995f H6127)
[2024-01-14T11:07:38 INFO  govee::commands::serve]   Platform API: devices.types.light. supports_rgb=true supports_brightness=true
[2024-01-14T11:07:38 INFO  govee::commands::serve]                 color_temp=Some((2000, 9000)) segment_rgb=Some(0..15)
[2024-01-14T11:07:38 INFO  govee::commands::serve]   Undoc: room=Some("Schlafzimmer") supports_iot=false ble_only=true
[2024-01-14T11:07:38 INFO  govee::commands::serve]
[2024-01-14T11:07:38 INFO  govee::commands::serve] Nachttischlampe (57:CC:CD:31:30:30:70:77 H6052)
[2024-01-14T11:07:38 INFO  govee::commands::serve]   LAN API: ip=<IP_ADDRESS>
[2024-01-14T11:07:38 INFO  govee::commands::serve]   Platform API: devices.types.light. supports_rgb=true supports_brightness=true
[2024-01-14T11:07:38 INFO  govee::commands::serve]                 color_temp=Some((2000, 9000)) segment_rgb=Some(0..15)
[2024-01-14T11:07:38 INFO  govee::commands::serve]   Undoc: room=Some("Schlafzimmer") supports_iot=true ble_only=false
[2024-01-14T11:07:38 INFO  govee::commands::serve]   Quirk { sku: "H6052", icon: "mdi:light-bulb", supports_rgb: true, supports_brightness: true, color_temp_range: Some((2000, 9000)), avoid_platform_api: false, ble_only: false, lan_api_capable: true, device_type: Light, platform_temperature_sensor_units: None, platform_humidity_sensor_units: None, iot_api_supported: true }
[2024-01-14T11:07:38 INFO  govee::commands::serve]
[2024-01-14T11:07:38 INFO  govee::service::http] http server addr is <IP_ADDRESS>:8056
Additional Logs
[2024-01-14T11:12:51 INFO  govee::service::hass] Command for Nachttischlampe (57:CC:CD:31:30:30:70:77 H6052): {"state":"ON","color_temp":112}
[2024-01-14T11:12:51 INFO  govee::service::state] Using LAN API to set Nachttischlampe (57:CC:CD:31:30:30:70:77 H6052) color temperature
[2024-01-14T11:12:51 INFO  govee::service::hass] Command for Nachttischlampe (57:CC:CD:31:30:30:70:77 H6052): {"state":"ON","color_temp":111}
[2024-01-14T11:12:51 INFO  govee::service::state] Using LAN API to set Nachttischlampe (57:CC:CD:31:30:30:70:77 H6052) color temperature
Home Assistant Logs
No response
Anything else?
No response

FWIW, home assistant internally prefers to use mired for color temperature.
You can convert mired to kelvin (and vice-versa) by dividing 1,000,000 by either amount.
So color_temp:112 in the command coming from home assistant is 112 mired or ~8928 kelvin.
Govee's lan api docs claim that all devices support 2000-9000 kelvin, and the platform API metadata returned for your device in the logs you shared also indicates that that range is supported.
govee2mqtt always clamps the home assistant request to the range it believes is supported by the device.
In this situation the inputs are all within the supported range.
If the device is misbehaving then this sounds like a problem to raise with Govee support!

I use the light Card from the home assistant to change the temperature, and four days ago, I could drag the temperature slider to cold white, and it worked as intended. Now I have to move it slightly away from the limit to ensure that the light is not going dark, and in the govee app, I can slide the temperature to 9000k with no problem.

You can manually send lan API packets to your device like this:
$ echo '{"msg":{"cmd":"colorwc","data":{"colorTemInKelvin":9000}}}' | nc -q0 -u <IP_ADDRESS> 4003

try varying the color temperature value and see how the device behaves, and please report back with what you see.

I tried the comand and the light is changing to 9000K with no issue but over HA it is still not working right

Please update to the latest version of the addon, try to control this device, and share the logs from the addon. I think we're missing some information about what is happening!

still not working also since the last 3 versions the controls are a bit laggy.
GOVEE_MQTT_PORT=1883
++ cd /app
++ exec /app/govee serve
[2024-01-22T04:45:50 INFO  govee::commands::serve] Starting service. version 2024.01.21-33e8cd7c
[2024-01-22T04:45:50 INFO  govee::commands::serve] Querying platform API for device list
[2024-01-22T04:45:55 INFO  govee::commands::serve] Querying undocumented API for device + room list
[2024-01-22T04:45:59 INFO  govee::service::iot] Connected to IoT: CONNACK code 0: Connection Accepted.
[2024-01-22T04:45:59 INFO  govee::commands::serve] Starting LAN discovery
[2024-01-22T04:45:59 INFO  govee::commands::serve] Waiting 10 seconds for LAN API discovery
[2024-01-22T04:45:59 INFO  govee::service::iot] IoT (re)connected with status CONNACK code 0: Connection Accepted.
[2024-01-22T04:46:09 INFO  govee::commands::serve] Devices returned from Govee's APIs
[2024-01-22T04:46:09 INFO  govee::commands::serve] Nachttischlampe (57:CC:CD:31:30:30:70:77 H6052)
[2024-01-22T04:46:09 INFO  govee::commands::serve]   LAN API: ip=<IP_ADDRESS>
[2024-01-22T04:46:09 INFO  govee::commands::serve]   Platform API: devices.types.light. supports_rgb=true supports_brightness=true
[2024-01-22T04:46:09 INFO  govee::commands::serve]                 color_temp=Some((2000, 9000)) segment_rgb=Some(0..15)
[2024-01-22T04:46:09 INFO  govee::commands::serve]   Undoc: room=Some("Schlafzimmer") supports_iot=true ble_only=false
[2024-01-22T04:46:09 INFO  govee::commands::serve]   Quirk { sku: "H6052", icon: "mdi:light-bulb", supports_rgb: true, supports_brightness: true, color_temp_range: Some((2000, 9000)), avoid_platform_api: false, ble_only: false, lan_api_capable: true, device_type: Light, platform_temperature_sensor_units: None, platform_humidity_sensor_units: None, iot_api_supported: true, show_as_preset_buttons: None }
[2024-01-22T04:46:09 INFO  govee::commands::serve]
[2024-01-22T04:46:09 INFO  govee::commands::serve] Led-Tür (cef142b0b354995f H6127)
[2024-01-22T04:46:09 INFO  govee::commands::serve]   Platform API: devices.types.light. supports_rgb=true supports_brightness=true
[2024-01-22T04:46:09 INFO  govee::commands::serve]                 color_temp=Some((2000, 9000)) segment_rgb=Some(0..15)
[2024-01-22T04:46:09 INFO  govee::commands::serve]   Undoc: room=Some("Schlafzimmer") supports_iot=false ble_only=true
[2024-01-22T04:46:09 INFO  govee::commands::serve]
[2024-01-22T04:46:13 INFO  govee::service::http] http server addr is <IP_ADDRESS>:8056
[2024-01-22T04:46:57 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) None
[2024-01-22T04:46:57 INFO  govee::service::hass] Wait 2.2s for hass to settle on 44 entity configs
[2024-01-22T04:46:59 INFO  govee::service::hass] MQTT connected with status=CONNACK code 0: Connection Accepted.
[2024-01-22T04:49:43 INFO  govee::service::hass] Home Assistant status changed: online
[2024-01-22T04:49:44 INFO  govee::service::hass] Wait 2.2s for hass to settle on 44 entity configs
[2024-01-22T05:01:58 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T03:46:57.853013537Z })
[2024-01-22T05:17:00 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T04:01:58.592919956Z })
[2024-01-22T05:32:04 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T04:17:02.371494762Z })
[2024-01-22T05:47:07 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T04:32:04.917531624Z })
[2024-01-22T06:02:09 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T04:47:07.561760753Z })
[2024-01-22T06:17:13 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T05:02:09.869483Z })
[2024-01-22T06:32:15 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T05:17:14.217125940Z })
[2024-01-22T06:47:18 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T05:32:16.543060810Z })
[2024-01-22T07:02:20 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T05:47:18.837125755Z })
[2024-01-22T07:17:24 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T06:02:22.324374891Z })
[2024-01-22T07:32:26 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T06:17:24.733161717Z })
[2024-01-22T07:47:28 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T06:32:27.034591450Z })
[2024-01-22T08:02:31 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T06:47:29.372043253Z })
[2024-01-22T08:17:34 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T07:02:32.204919940Z })
[2024-01-22T08:32:36 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T07:17:34.624629775Z })
[2024-01-22T08:47:38 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T07:32:36.843074740Z })
[2024-01-22T09:02:42 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T07:47:39.225054404Z })
[2024-01-22T09:17:44 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T08:02:43.002970409Z })
[2024-01-22T09:27:54 INFO  govee::service::hass] Home Assistant status changed: offline
[2024-01-22T09:27:58 INFO  govee::service::hass] Wait 2.2s for hass to settle on 44 entity configs
[2024-01-22T09:28:47 INFO  govee::service::hass] Home Assistant status changed: online
[2024-01-22T09:28:47 INFO  govee::service::hass] Wait 2.2s for hass to settle on 44 entity configs
[2024-01-22T09:32:47 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T08:17:45.317831741Z })
[2024-01-22T09:47:48 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T08:32:48.163523881Z })
[2024-01-22T10:02:52 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T08:47:48.873799346Z })
[2024-01-22T10:17:55 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T09:02:53.461829646Z })
[2024-01-22T10:32:57 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T09:17:55.728124676Z })
[2024-01-22T10:47:59 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T09:32:58.194393153Z })
[2024-01-22T11:03:07 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T09:48:02.274873576Z })
[2024-01-22T11:18:12 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T10:03:08.436982327Z })
[2024-01-22T11:33:16 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T10:18:13.612336482Z })
[2024-01-22T11:48:19 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T10:33:16.857335815Z })
[2024-01-22T12:03:23 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T10:48:22.213632702Z })
[2024-01-22T12:18:26 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T11:03:24.425149136Z })
[2024-01-22T12:33:28 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T11:18:26.684971094Z })
[2024-01-22T12:48:32 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T11:33:28.924040629Z })
[2024-01-22T13:03:34 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T11:48:33.025321085Z })
[2024-01-22T13:18:37 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T12:03:35.506159030Z })
[2024-01-22T13:33:40 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T12:18:38.507903405Z })
[2024-01-22T13:48:44 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T12:33:42.251446170Z })
[2024-01-22T14:03:47 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T12:48:45.475094499Z })
[2024-01-22T14:18:49 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T13:03:47.953691812Z })
[2024-01-22T14:33:53 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T13:18:52.152110458Z })
[2024-01-22T14:48:56 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T13:33:54.373432328Z })
[2024-01-22T15:03:58 INFO  govee::service::state] requesting update via Platform API Led-Tür (cef142b0b354995f H6127) Some(DeviceState { on: false, light_on: None, online: Some(false), kelvin: 0, color: DeviceColor { r: 0, g: 0, b: 0 }, brightness: 0, scene: None, source: "PLATFORM API", updated: 2024-01-22T13:48:57.019288737Z })
[2024-01-22T15:07:51 INFO  govee::service::hass] Command for Nachttischlampe (57:CC:CD:31:30:30:70:77 H6052): {"state":"ON"}
[2024-01-22T15:07:51 INFO  govee::service::state] Using LAN API to set Nachttischlampe (57:CC:CD:31:30:30:70:77 H6052) light power state
[2024-01-22T15:07:53 INFO  govee::service::hass] Command for Nachttischlampe (57:CC:CD:31:30:30:70:77 H6052): {"state":"ON","color_temp":395}
[2024-01-22T15:07:53 INFO  govee::service::state] Using LAN API to set Nachttischlampe (57:CC:CD:31:30:30:70:77 H6052) color temperature
[2024-01-22T15:07:58 INFO  govee::service::hass] Command for Nachttischlampe (57:CC:CD:31:30:30:70:77 H6052): {"state":"ON","color_temp":159}
[2024-01-22T15:07:58 INFO  govee::service::state] Using LAN API to set Nachttischlampe (57:CC:CD:31:30:30:70:77 H6052) color temperature
[2024-01-22T15:07:58 INFO  govee::service::hass] Command for Nachttischlampe (57:CC:CD:31:30:30:70:77 H6052): {"state":"ON","color_temp":157}
[2024-01-22T15:07:58 INFO  govee::service::state] Using LAN API to set Nachttischlampe (57:CC:CD:31:30:30:70:77 H6052) color temperature
[2024-01-22T15:08:06 INFO  govee::service::hass] Command for Nachttischlampe (57:CC:CD:31:30:30:70:77 H6052): {"state":"ON","color_temp":121}
[2024-01-22T15:08:06 INFO  govee::service::state] Using LAN API to set Nachttischlampe (57:CC:CD:31:30:30:70:77 H6052) color temperature
[2024-01-22T15:08:11 INFO  govee::service::hass] Command for Nachttischlampe (57:CC:CD:31:30:30:70:77 H6052): {"state":"ON","brightness":100}
[2024-01-22T15:08:11 INFO  govee::service::state] Using LAN API to set Nachttischlampe (57:CC:CD:31:30:30:70:77 H6052) brightness
[2024-01-22T15:08:15 INFO  govee::service::hass] Command for Nachttischlampe (57:CC:CD:31:30:30:70:77 H6052): {"state":"ON","color_temp":150}
[2024-01-22T15:08:15 INFO  govee::service::state] Using LAN API to set Nachttischlampe (57:CC:CD:31:30:30:70:77 H6052) color temperature
[2024-01-22T15:08:20 INFO  govee::service::hass] Command for Nachttischlampe (57:CC:CD:31:30:30:70:77 H6052): {"state":"ON","color_temp":122}
[2024-01-22T15:08:20 INFO  govee::service::state] Using LAN API to set Nachttischlampe (57:CC:CD:31:30:30:70:77 H6052) color temperature
[2024-01-22T15:08:25 INFO  govee::service::hass] Command for Nachttischlampe (57:CC:CD:31:30:30:70:77 H6052): {"state":"ON","color_temp":119}
[2024-01-22T15:08:25 INFO  govee::service::state] Using LAN API to set Nachttischlampe (57:CC:CD:31:30:30:70:77 H6052) color temperature
[2024-01-22T15:08:30 INFO  govee::service::hass] Command for Nachttischlampe (57:CC:CD:31:30:30:70:77 H6052): {"state":"ON","color_temp":112}
[2024-01-22T15:08:30 INFO  govee::service::state] Using LAN API to set Nachttischlampe (57:CC:CD:31:30:30:70:77 H6052) color temperature
[2024-01-22T15:08:35 INFO  govee::service::hass] Command for Nachttischlampe (57:CC:CD:31:30:30:70:77 H6052): {"state":"ON","color_temp":111}
[2024-01-22T15:08:35 INFO  govee::service::state] Using LAN API to set Nachttischlampe (57:CC:CD:31:30:30:70:77 H6052) color temperature
[2024-01-22T15:08:40 INFO  govee::service::hass] Command for Nachttischlampe (57:CC:CD:31:30:30:70:77 H6052): {"state":"ON","color_temp":111}
[2024-01-22T15:08:40 INFO  govee::service::state] Using LAN API to set Nachttischlampe (57:CC:CD:31:30:30:70:77 H6052) color temperature
[2024-01-22T15:09:24 INFO  govee::service::hass] Command for Nachttischlampe (57:CC:CD:31:30:30:70:77 H6052): {"state":"ON","color_temp":117}
[2024-01-22T15:09:24 INFO  govee::service::state] Using LAN API to set Nachttischlampe (57:CC:CD:31:30:30:70:77 H6052) color temperature


[BUG]: Helm chart missing websocket ingress template

Description of the bug
If you add an ingress to websocket in your values.yaml it will never render the necessary yaml because the websocket template file is missing.
Steps To Reproduce

Add ingress to values.yaml file for websocket

websocket:
  enabled: true
  ingress:
    enabled: true
    hosts:
      - host: keep-websocket.${SECRET_DOMAIN}
        paths:
          - path: /
            pathType: Prefix
    tls:
      - hosts:
          - keep-websocket.${SECRET_DOMAIN}

Install helm chart
Verify no ingress is created

Additional Information
No response

I don't think websocket service ever need to have ingress object at all. Instead of adding template for it, removing ingress part from values.yaml would be better. @talboren @shahargl what do you guys think?

I don't think websocket service ever need to have ingress object at all. Instead of adding template for it, removing ingress part from values.yaml would be better. @talboren @shahargl what do you guys think?

Hmm, but we do need ingress for the websocket service if we want FE clients to be able to get push notifications about newly added alerts (real-time updates) -- lmk if I miss understood something

I don't think websocket service ever need to have ingress object at all. Instead of adding template for it, removing ingress part from values.yaml would be better. @talboren @shahargl what do you guys think?

Hmm, but we do need ingress for the websocket service if we want FE clients to be able to get push notifications about newly added alerts (real-time updates) -- lmk if I miss understood something

Actually you don't need ingress for that if you are not going to access your websocket service from another cluster. If both websocket and fe services are in same cluster it is kind of best practice to communicate them over services. like: keep-websocket.<namespace>.svc.cluster.local:6001

Contributor

gotcha! thanks for the detailed explanation! @pehlicd do you want to craft a PR to issue that?

yeah sure


Update readme.md for CentOS 8 installation

Hallo Max,
we chatted in the discord channel about a PR for the CentOS 8 installation guide.
Currently, I can't install the chia-plotter under CentOS 8. Could you please update the installation guide for CentOS 8?
There are several dependencies not available or not required any more for CentOS 8. I had to install Cmake and I used this HowTo-Article https://www.osradar.com/how-to-install-cmake-on-centos-8/. Nevertheless, after the execution of ./make_devel.sh, I get the following error: /usr/bin/ar: /usr/lib64/libgmp.so File format not recognized and the script returns Error 2.
Thank you very much in advance for your help. I really appreciate, that you provide this piece of software to us.
Best regards
4thHorseman

to fix the libgmp issue, you have to deinstall it from the system

I did that and now instead of the libgmp error, I get the same error with libsodium.so. When I try to uninstall libsodium, the compilation of the application fails, because the header file sodium.h is required.

others have solved that by installing a static version of libsodium, which is usually not part of the official packaging system

I just installed the rpm from https://centos.pkgs.org/8/epel-x86_64/libsodium-static-1.0.18-2.el8.x86_64.rpm.html but the same error for the file libsodium.so occurs. Are you sure there was no other step necessary?

can you search for a libsodium.a and verify that it was installed?

I have a fix pending for this issue, stay tuned...

try latest master

Unfortunately it did not work for me. I still get the libsodium.so error. What where the steps you did?

install CentOS 8
uninstall libgmp
clone the repo
execute ./make.delvel.sh?

Or was it some other procedure?
Thank you in advance for your answer.

yep... centos 7 is also throwing this now....

should be fixed now, try git pull && git submodule update --init

The build run through flawlessly. I have to check the plotter, though.
But at this point, thank you very much, Max.

Plotting works, too. I think we finished the job here. Could you please update the MD-File?

I don't have CentOS 8...

Max,if you want me to, I can create a pull request for the installation on CentOS8


hasMultipleIntents to use OpenAI functions

Currently, hasMultipleIntents is using conditional statement to tell if the user request contain multi intents (require multiple API calls to get done).
Might be better to use OpenAI function to do that, something like:
Given these endpoints and their descriptions, please answer the question at the end:
getPets: to get all pets
createPet: to create a new pet
delete pet: delete a single pet

The question: "please delete the last pet"

The LLM should spit something like "yes" or any thing similar.
# llm-server/routes/root_service.py:76
    try:
        if hasMultipleIntents(text):
            return run_workflow(
                WorkflowData(text, swagger_text, headers, server_base_url)
            )
    except Exception as e:
        print(e)

there is another implementation similar to your suggestion here, we will switch to it
https://github.com/openchatai/OpenCopilot/blob/a1cb68645e8e7acaf8b45a5154863cb2c2f7342b/llm-server/utils/detect_multiple_intents.py


Unable to decrypt 7-ZIP file with password (err: breader.ReadByte: no data!)

What version of the package or command are you using?
v4.0.0-alpha.7
What are you trying to do?
Decompress 7-ZIP file with password
What did you expect to happen, and what actually happened instead?
Err:  breader.ReadByte: no data !
After my testing:
All 7-zip encrypted files created by  software 7-zip (official windows x64 version, default options)  cannot be decrypted.
but files encrypted by another software Bandzip  can be decrypted normally.
What steps did you take?
see： https://github.com/bodgit/sevenzip/issues/75

Duplicate of #375 ...
This isn't even a bug in archiver, it's something about the upstream repo which I see you opened 2 issues there as well. Please only open 1 issue.


Tagging tests appropriately to pick them for running on basic zone

Adding additional tag to the list of tags.

LGTM

LGTM

No direct commits to master. all the commits to master should be merges.
I earlier reverted and merged a PR. Please check the comments on PR #728 and merge the PR

I am reverting this direct commit. Please reopen the PR and use the git pr script to merge

@karuturi Thank you


The image data in "data/images"

Hi,  This work is of great help to me.
I can't find the image data that these ids are shown in the dialogue.json.
Can release the corresponding the image dataset ?
Thanks very much!!! Looking forward to your reply！

Hi, you may download the images via https://drive.google.com/file/d/1gjt41sJYm3afzghUphNIkwQeeOPsxn52/view?usp=sharing. Please let me know if there is any other problem. Thanks.


Refresh project - add as Note - Fiori app using ABAP

Hello,
Scenario URL: https://developers.sap.com/tutorials/abap-environment-deploy-cf-production.html
Issue: Step 7.1: Open Eclipse and check the BSP library and SAP Fiori Launchpad app descriptor item folder in your package ZTRAVEL_APP_XXX : Here, actually the project structure sometimes takes time and doesn't refresh automatically so we might need to refresh the package once to be able to see entire project.
Can you add a note for that saying "you might need to refresh the project if you are not able to see BSP applications under BSP Library" ?
Landscape Labels: trail1, trail2
Sprint Label: SCPTest-2009A
Scenario Label:SCPTest-fabap
priority label: low-prio

Hi @i353590 ,
thank your for your feedback. We updated this tutorial with following PR: #6017.
@MichaelCzcz can you merge?
Thank you.
Best regards,
Merve

Thank you for your feedback. The issue seems to be resolved, so I am closing the issue.
If you still have questions, feel free to reopen the issue.


Cluster and edit changes space character in values to nbsp

When using cluster and edit, when you select an existing value by clicking on the hyperlinked option, it replaces any spaces in the original values with non-breaking spaces. See here.

To Reproduce
Steps to reproduce the behavior:

Use cluster and edit on a column of data
In the interface, select one of the clustering option by clicking on the hyperlinked options. Select merge selected and close.
New values will all have replaced standard spaces with non-breaking spaces

Current Results
Space replaced with non-breaking space which can cause inconsistencies with rest of data
Expected Behavior
Should not alter original data in this way
Screenshots

Versions

Operating System: Mac
Browser Version: Chrome
JRE or JDK Version:
OpenRefine:  3.6.2

Datasets

Additional context

In 3.7 version, cannot reproduce using key collision - Daitch-Mokotoff or nearest neighbor - Levenshtein.

Argh, I should have thought about this! I indeed introduced those non-breaking spaces in the UI to make sure that options which differed in spaces were rendered differently in the dialog, but I did not think the values were read from the DOM when merging a cluster. Sorry about this! I'll work on a fix asap.

Thanks @wetneb
And @thadguidry, I'm sorry I wasn't clear in my op, but it occurs when values already have spaces in them, so I think if you check 'small size' you'll see what I'm talking about.

Note that I could only reproduce this bug with Chromium, not with Firefox. I think it is known that they do not handle non-breaking spaces in the same way (or at least, until recently).

If I may add to this issue... this non-breaking space added during clustering appears as \xa0 when the data is exported as CSV and loaded into pandas.
It also prevents text filtering in OpenRefine when using a normal space. For example, after clustering, the string DEW TECHNOLOGIES doesn't return when you search for DEW  (with a regular space after the word). The only fix is to copy the whitespace character from the string (in a facet, for example), and do a search-replace with a regular space.
I'm using version 3.6.2 on Windows, Firefox.

This issue should be fixed in 3.7-beta5.


Resolving Wrapped Keyed Services With Condition Fails

I'm using DryIoc in a Xamarin app, with Prism as the Mvvm framework.
I recently updated Prism, which caused my DryIoc version to update from 2.x to 3.0.
In 2.x I was using a generic method to register types for specific services:
public static void Register<TService, TImplementation, TFactory>
(
  this IContainerRegistry This,
  object metadataKey
) where TImplementation : TService
{
  This.GetContainer()
      .Register<TService, TImplementation>(
        setup: Setup.With(
          metadataKey,
          (RequestInfo r) => r.Parent.ServiceType.IsAssignableTo<TFactory>()));
}

And I was able to resolve this using:
TFactory
(
  IEnumerable<Tuple<Func<TService>, metadataType>> serviceFactories
){ }

In 3.0 this fails, in the constructor the enumerable is empty. The goal is to register keyed Service implementations, and resolve them as an enumerable in a specific parent. How should I update this for 3.0?
In 3.0, registration in the generic has changed slightly due to the removal of the RequestInfo class, and uses Request instead.
TFactory is also registered with the container.
Then, I have a registration:
containerRegistry.GetContainer().Register<TService>(
  setup: Setup.With(
    condition: r => !r.Parent.ServiceType.IsAssignableTo(typeof(TFactory))),
        made: Made.Of(
          r => ServiceInfo.Of<TFactory>(),
          f => f.Create(Arg.Of<metadataType>())));

Which I use elsewhere through a constructor injected parameter as:
ctor (   Func<metadataType, TService> )

Mm, I will check Tomorrow.
But nothing crucial changed in regard to your registrations.
Maybe you can create a PR with complete failing test in DryIoc.IssueTests project?

Sure, I'll take a look and see if I can get a PR put together for that, thanks for taking a look.

I've had other things that I've been focusing on here, and have decided to postpone the Prism update. When I look at that upgrade in the near future I'll take a look at this again and create the repro if it is still an issue. I'll close this for now, thanks.


Update AppCheckCore dependency to 10.19.1

For the App Check release, we should update our CocoaPods and SPM dependencies on "AppCheckCore" to be 10.19.1 in GoogleSignIn.podspec and Package.swift.
AppCheck 10.19 removed the use of some required reasons API, and 10.19.1 patched in a fix.

https://github.com/google/GoogleSignIn-iOS/pull/422 addresses this.


Fix user tests in cg

Describe your changes
Comment Triggers

PR Check triggers

Build: trigger build
Sub Category Field Check: trigger subcategoryfieldcheck

trigger build


Feature/laser slam worker

Moved to iSAM2 and created LaserSlamWorker. Comes after #2.

retest this please


Use dataTables.js

Clean PR for this - related discussion in #90. Added data tables to variants.html and sv_variants.html for now, and prepared the others. However, now that the genes and transcripts are in separate macros - the call to dataTable from here comes before the loading of jQuery. That won't work.

[x] Solve loading order of jQuery vs individual dataTable calls
This was not actually a problem, just me misunderstanding the templating functions

[ ] Decide on which features to enable in dataTables

Nice! Thanks @vasiliosz for the new PR :-)

:+1:


Webpack 4 splitChunks.cacheGroups is ignored in production mode

Bug report
What is the current behavior?
Using the cacheGroups to filter what chunks should contain code that will be inlined in the html and what chunks should not include in the bundle those content that will be inlined work in development mode, but fails in the bundle production.
If the current behavior is a bug, please provide the steps to reproduce.
Create 2 entry points: runtime, main
Create a file that is required by runtime-inline and main entrypoint files
Use this configs for splitChunks:
      {
        chunks: 'all',
        // Group the runtime, so we can inject it in the HTML
        cacheGroups: {
          runtime: {
            test(module, chunks) {
              const regexp = /runtime[~].+/i;
              const result = `${module.name || ''}`.match(regexp) || chunks.some(chunk => `${chunk.name || ''}`.match(regexp));
              return result;
            },
            // Format the name to include inline in every chunk that is required in the runtime
            // This will allow the HTMLInlineRuntime to include this chunks in the HTML
            name(module) {
              const moduleName = module.name || module.context.match(/[^/]+$/)[0];
              return `runtime~${moduleName}`;
            }
          },
          // Resolve the rest of chunks but do not repeat content from runtime in any other chunk
          default: {
            test(module, chunks) {
              const regexp = /runtime[~].+/i;
              const result = !(`${module.name || ''}`.match(regexp) || chunks.some(chunk => `${chunk.name || ''}`.match(regexp)));
              return result;
            }
          }
        },
        name: true,
      }

When running this code, every file that is required by the runtime-inline entrypoint will be named as runtime~... and will belong to the cacheGroup runtime. Then the default group will not include those files in the chunks (because it will return the opposite result from the other group).
When running this in development, it will work fine, files in runtime~ chunks are not repeated in the main~ chunks.
When running in production mode, the tests works as expected and returns the same results as in development, however, the chunks ignore it and repeat code from runtime~ inside main~.
What is the expected behavior?
It should behave in production mode as it behaves in development and not repeat the code in the other entrypoint chunks.
Other relevant information:
webpack version:  v4.40.2
Node.js version: v12.5.0
Operating System: OSX
Additional tools: none
Full webpack.config.js file (it's react-create-app with few changes):
'use strict';

const fs = require('fs');
const isWsl = require('is-wsl');
const path = require('path');
const webpack = require('webpack');
const resolve = require('resolve');
const PnpWebpackPlugin = require('pnp-webpack-plugin');
const HtmlWebpackPlugin = require('html-webpack-plugin');
const ScriptExtHtmlWebpackPlugin = require('script-ext-html-webpack-plugin');
const CaseSensitivePathsPlugin = require('case-sensitive-paths-webpack-plugin');
const InlineChunkHtmlPlugin = require('react-dev-utils/InlineChunkHtmlPlugin');
const TerserPlugin = require('terser-webpack-plugin');
const MiniCssExtractPlugin = require('mini-css-extract-plugin');
const OptimizeCSSAssetsPlugin = require('optimize-css-assets-webpack-plugin');
const safePostCssParser = require('postcss-safe-parser');
const ManifestPlugin = require('webpack-manifest-plugin');
const InterpolateHtmlPlugin = require('react-dev-utils/InterpolateHtmlPlugin');
const WorkboxWebpackPlugin = require('workbox-webpack-plugin');
const WatchMissingNodeModulesPlugin = require('react-dev-utils/WatchMissingNodeModulesPlugin');
const ModuleScopePlugin = require('react-dev-utils/ModuleScopePlugin');
const getCSSModuleLocalIdent = require('react-dev-utils/getCSSModuleLocalIdent');
const VisualizerPlugin = require('webpack-visualizer-plugin');
const paths = require('./paths');
const modules = require('./modules');
const getClientEnvironment = require('./env');
const ModuleNotFoundPlugin = require('react-dev-utils/ModuleNotFoundPlugin');
const ForkTsCheckerWebpackPlugin = require('react-dev-utils/ForkTsCheckerWebpackPlugin');
const typescriptFormatter = require('react-dev-utils/typescriptFormatter');

const postcssNormalize = require('postcss-normalize');

// Source maps are resource heavy and can cause out of memory issue for large source files.
const shouldUseSourceMap = process.env.GENERATE_SOURCEMAP !== 'false';
// Some apps do not need the benefits of saving a web request, so not inlining the chunk
// makes for a smoother build process.
const shouldInlineRuntimeChunk = process.env.INLINE_RUNTIME_CHUNK !== 'false';

// Check if TypeScript is setup
const useTypeScript = fs.existsSync(paths.appTsConfig);

// style files regexes
const cssRegex = /\.css$/;
const cssModuleRegex = /\.module\.css$/;
const sassRegex = /\.(scss|sass)$/;
const sassModuleRegex = /\.module\.(scss|sass)$/;

// This is the production and development configuration.
// It is focused on developer experience, fast rebuilds, and a minimal bundle.
module.exports = function(webpackEnv) {
  const isEnvDevelopment = webpackEnv === 'development';
  const isEnvProduction = webpackEnv === 'production';

  // Webpack uses `publicPath` to determine where the app is being served from.
  // It requires a trailing slash, or the file assets will get an incorrect path.
  // In development, we always serve from the root. This makes config easier.
  const publicPath = isEnvProduction
    ? paths.servedPath
    : isEnvDevelopment && '/';
  // Some apps do not use client-side routing with pushState.
  // For these, "homepage" can be set to "." to enable relative asset paths.
  const shouldUseRelativeAssetPaths = publicPath === './';

  // `publicUrl` is just like `publicPath`, but we will provide it to our app
  // as %PUBLIC_URL% in `index.html` and `process.env.PUBLIC_URL` in JavaScript.
  // Omit trailing slash as %PUBLIC_URL%/xyz looks better than %PUBLIC_URL%xyz.
  const publicUrl = isEnvProduction
    ? publicPath.slice(0, -1)
    : isEnvDevelopment && '';
  // Get environment variables to inject into our app.
  const env = getClientEnvironment(publicUrl);

  // common function to get style loaders
  const getStyleLoaders = (cssOptions, preProcessor) => {
    const loaders = [
      isEnvDevelopment && require.resolve('style-loader'),
      isEnvProduction && {
        loader: MiniCssExtractPlugin.loader,
        options: shouldUseRelativeAssetPaths ? { publicPath: '../../' } : {},
      },
      {
        loader: require.resolve('css-loader'),
        options: cssOptions,
      },
      {
        // Options for PostCSS as we reference these options twice
        // Adds vendor prefixing based on your specified browser support in
        // package.json
        loader: require.resolve('postcss-loader'),
        options: {
          // Necessary for external CSS imports to work
          // https://github.com/facebook/create-react-app/issues/2677
          ident: 'postcss',
          plugins: () => [
            require('postcss-flexbugs-fixes'),
            require('postcss-preset-env')({
              autoprefixer: {
                flexbox: 'no-2009',
              },
              stage: 3,
            }),
            // Adds PostCSS Normalize as the reset css with default options,
            // so that it honors browserslist config in package.json
            // which in turn let's users customize the target behavior as per their needs.
            postcssNormalize(),
          ],
          sourceMap: isEnvProduction && shouldUseSourceMap,
        },
      },
    ].filter(Boolean);
    if (preProcessor) {
      loaders.push({
        loader: require.resolve(preProcessor),
        options: {
          sourceMap: isEnvProduction && shouldUseSourceMap,
        },
      });
    }
    return loaders;
  };

  return {
    mode: isEnvProduction ? 'production' : isEnvDevelopment && 'development',
    // Stop compilation early in production
    bail: isEnvProduction,
    devtool: isEnvProduction
      ? shouldUseSourceMap
        ? 'source-map'
        : false
      : isEnvDevelopment && 'cheap-module-source-map',
    // These are the "entry points" to our application.
    // This means they will be the "root" imports that are included in JS bundle.
    entry: {
      'runtime~html': [
        paths.appSrc + '/html/runtime/index.js',
      ],
      main: [
        // Include an alternative client for WebpackDevServer. A client's job is to
        // connect to WebpackDevServer by a socket and get notified about changes.
        // When you save a file, the client will either apply hot updates (in case
        // of CSS changes), or refresh the page (in case of JS changes). When you
        // make a syntax error, this client will display a syntax error overlay.
        // Note: instead of the default WebpackDevServer client, we use a custom one
        // to bring better experience for Create React App users. You can replace
        // the line below with these two lines if you prefer the stock client:
        // require.resolve('webpack-dev-server/client') + '?/',
        // require.resolve('webpack/hot/dev-server'),
        isEnvDevelopment &&
          require.resolve('react-dev-utils/webpackHotDevClient'),
        // Finally, this is your app's code:
        paths.appIndexJs,
        // We include the app code last so that if there is a runtime error during
        // initialization, it doesn't blow up the WebpackDevServer client, and
        // changing JS code would still trigger a refresh.
      ].filter(Boolean)
    },
    output: {
      // The build folder.
      path: isEnvProduction ? paths.appBuild : undefined,
      // Add /* filename */ comments to generated require()s in the output.
      pathinfo: isEnvDevelopment,
      // There will be one main bundle, and one file per asynchronous chunk.
      // In development, it does not produce real files.
      filename: isEnvProduction
        ? 'static/js/[name].[contenthash:8].js'
        : isEnvDevelopment && 'static/js/[name].js',
      // TODO: remove this when upgrading to webpack 5
      futureEmitAssets: true,
      // There are also additional JS chunk files if you use code splitting.
      chunkFilename: isEnvProduction
        ? 'static/js/[name].[contenthash:8].chunk.js'
        : isEnvDevelopment && 'static/js/[name].chunk.js',
      // We inferred the "public path" (such as / or /my-project) from homepage.
      // We use "/" in development.
      publicPath: publicPath,
      // Point sourcemap entries to original disk location (format as URL on Windows)
      devtoolModuleFilenameTemplate: isEnvProduction
        ? info =>
            path
              .relative(paths.appSrc, info.absoluteResourcePath)
              .replace(/\\/g, '/')
        : isEnvDevelopment &&
          (info => path.resolve(info.absoluteResourcePath).replace(/\\/g, '/')),
    },
    optimization: {
      minimize: isEnvProduction,
      minimizer: [
        // This is only used in production mode
        new TerserPlugin({
          terserOptions: {
            parse: {
              // we want terser to parse ecma 8 code. However, we don't want it
              // to apply any minfication steps that turns valid ecma 5 code
              // into invalid ecma 5 code. This is why the 'compress' and 'output'
              // sections only apply transformations that are ecma 5 safe
              // https://github.com/facebook/create-react-app/pull/4234
              ecma: 8,
            },
            compress: {
              ecma: 5,
              warnings: false,
              // Disabled because of an issue with Uglify breaking seemingly valid code:
              // https://github.com/facebook/create-react-app/issues/2376
              // Pending further investigation:
              // https://github.com/mishoo/UglifyJS2/issues/2011
              comparisons: false,
              // Disabled because of an issue with Terser breaking valid code:
              // https://github.com/facebook/create-react-app/issues/5250
              // Pending futher investigation:
              // https://github.com/terser-js/terser/issues/120
              inline: 2,
              passes: 3,
            },
            mangle: {
              safari10: true,
            },
            output: {
              beautify: true,
              ecma: 5,
              comments: false,
              // Turned on because emoji and regex is not minified properly using default
              // https://github.com/facebook/create-react-app/issues/2488
              ascii_only: true,
            },
          },
          // Use multi-process parallel running to improve the build speed
          // Default number of concurrent runs: os.cpus().length - 1
          // Disabled on WSL (Windows Subsystem for Linux) due to an issue with Terser
          // https://github.com/webpack-contrib/terser-webpack-plugin/issues/21
          parallel: !isWsl,
          // Enable file caching
          cache: true,
          sourceMap: shouldUseSourceMap,
        }),
        // This is only used in production mode
        new OptimizeCSSAssetsPlugin({
          cssProcessorOptions: {
            parser: safePostCssParser,
            map: shouldUseSourceMap
              ? {
                  // `inline: false` forces the sourcemap to be output into a
                  // separate file
                  inline: false,
                  // `annotation: true` appends the sourceMappingURL to the end of
                  // the css file, helping the browser find the sourcemap
                  annotation: true,
                }
              : false,
          },
        }),
      ],
      // Automatically split vendor and commons
      // https://twitter.com/wSokra/status/969633336732905474
      // https://medium.com/webpack/webpack-4-code-splitting-chunk-graph-and-the-splitchunks-optimization-be739a861366
      splitChunks: {
        chunks: 'all',
        // Group the runtime, so we can inject it in the HTML
        cacheGroups: {
          runtime: {
            test(module, chunks) {
              const regexp = /runtime[~].+/i;
              const result = `${module.name || ''}`.match(regexp) || chunks.some(chunk => `${chunk.name || ''}`.match(regexp));
              return result;
            },
            // Format the name to include inline in every chunk that is required in the runtime
            // This will allow the HTMLInlineRuntime to include this chunks in the HTML
            name(module) {
              const moduleName = module.name || module.context.match(/[^/]+$/)[0];
              return `runtime~${moduleName}`;
            }
          },
          // Resolve the rest of chunks but do not repeat content from runtime in any other chunk
          //TODO: Fix main chunk in production is including streamloader (it shouldn't)
          //TODO: The result is same as dev, but the final bundle includes regenerator and streamloader to app chunk
          default: {
            test(module, chunks) {
              const regexp = /runtime[~].+/i;
              const result = !(`${module.name || ''}`.match(regexp) || chunks.some(chunk => `${chunk.name || ''}`.match(regexp)));
              return result;
            }
          }
        },
        name: true,
      },
      // Keep the runtime chunk separated to enable long term caching
      // https://twitter.com/wSokra/status/969679223278505985
      runtimeChunk: 'single',
    },
    resolve: {
      // This allows you to set a fallback for where Webpack should look for modules.
      // We placed these paths second because we want `node_modules` to "win"
      // if there are any conflicts. This matches Node resolution mechanism.
      // https://github.com/facebook/create-react-app/issues/253
      modules: ['node_modules', paths.appNodeModules].concat(
        modules.additionalModulePaths || []
      ),
      // These are the reasonable defaults supported by the Node ecosystem.
      // We also include JSX as a common component filename extension to support
      // some tools, although we do not recommend using it, see:
      // https://github.com/facebook/create-react-app/issues/290
      // `web` extension prefixes have been added for better support
      // for React Native Web.
      extensions: paths.moduleFileExtensions
        .map(ext => `.${ext}`)
        .filter(ext => useTypeScript || !ext.includes('ts')),
      alias: {
        // Support React Native Web
        // https://www.smashingmagazine.com/2016/08/a-glimpse-into-the-future-with-react-native-for-web/
        'react-native': 'react-native-web',
      },
      plugins: [
        // Adds support for installing with Plug'n'Play, leading to faster installs and adding
        // guards against forgotten dependencies and such.
        PnpWebpackPlugin,
        // Prevents users from importing files from outside of src/ (or node_modules/).
        // This often causes confusion because we only process files within src/ with babel.
        // To fix this, we prevent you from importing files out of src/ -- if you'd like to,
        // please link the files into your node_modules/ and let module-resolution kick in.
        // Make sure your source files are compiled, as they will not be processed in any way.
        new ModuleScopePlugin(paths.appSrc, [paths.appPackageJson]),
      ],
    },
    resolveLoader: {
      plugins: [
        // Also related to Plug'n'Play, but this time it tells Webpack to load its loaders
        // from the current package.
        PnpWebpackPlugin.moduleLoader(module),
      ],
    },
    module: {
      strictExportPresence: true,
      rules: [
        // Disable require.ensure as it's not a standard language feature.
        { parser: { requireEnsure: false } },

        // First, run the linter.
        // It's important to do this before Babel processes the JS.
        {
          test: /\.(js|mjs|jsx|ts|tsx)$/,
          enforce: 'pre',
          use: [
            {
              options: {
                formatter: require.resolve('react-dev-utils/eslintFormatter'),
                eslintPath: require.resolve('eslint'),

              },
              loader: require.resolve('eslint-loader'),
            },
          ],
          include: paths.appSrc,
        },
        {
          // "oneOf" will traverse all following loaders until one will
          // match the requirements. When no loader matches it will fall
          // back to the "file" loader at the end of the loader list.
          oneOf: [
            // "url" loader works like "file" loader except that it embeds assets
            // smaller than specified limit in bytes as data URLs to avoid requests.
            // A missing `test` is equivalent to a match.
            {
              test: [/\.bmp$/, /\.gif$/, /\.jpe?g$/, /\.png$/],
              loader: require.resolve('url-loader'),
              options: {
                limit: 10000,
                name: 'static/media/[name].[hash:8].[ext]',
              },
            },
            // Process application JS with Babel.
            // The preset includes JSX, Flow, TypeScript, and some ESnext features.
            {
              test: /\.(js|mjs|jsx|ts|tsx)$/,
              include: paths.appSrc,
              loader: require.resolve('babel-loader'),
              options: {
                customize: require.resolve(
                  'babel-preset-react-app/webpack-overrides'
                ),

                plugins: [
                  [
                    require.resolve('babel-plugin-named-asset-import'),
                    {
                      loaderMap: {
                        svg: {
                          ReactComponent: '@svgr/webpack?-svgo,+ref![path]',
                        },
                      },
                    },
                  ],
                ],
                // This is a feature of `babel-loader` for webpack (not Babel itself).
                // It enables caching results in ./node_modules/.cache/babel-loader/
                // directory for faster rebuilds.
                cacheDirectory: true,
                cacheCompression: isEnvProduction,
                compact: isEnvProduction,
              },
            },
            // Process any JS outside of the app with Babel.
            // Unlike the application JS, we only compile the standard ES features.
            {
              test: /\.(js|mjs)$/,
              exclude: /@babel(?:\/|\\{1,2})runtime/,
              loader: require.resolve('babel-loader'),
              options: {
                babelrc: false,
                configFile: false,
                compact: false,
                presets: [
                  [
                    require.resolve('babel-preset-react-app/dependencies'),
                    { helpers: true },
                  ],
                ],
                cacheDirectory: true,
                cacheCompression: isEnvProduction,

                // If an error happens in a package, it's possible to be
                // because it was compiled. Thus, we don't want the browser
                // debugger to show the original code. Instead, the code
                // being evaluated would be much more helpful.
                sourceMaps: false,
              },
            },
            // "postcss" loader applies autoprefixer to our CSS.
            // "css" loader resolves paths in CSS and adds assets as dependencies.
            // "style" loader turns CSS into JS modules that inject <style> tags.
            // In production, we use MiniCSSExtractPlugin to extract that CSS
            // to a file, but in development "style" loader enables hot editing
            // of CSS.
            // By default we support CSS Modules with the extension .module.css
            {
              test: cssRegex,
              exclude: cssModuleRegex,
              use: getStyleLoaders({
                importLoaders: 1,
                sourceMap: isEnvProduction && shouldUseSourceMap,
              }),
              // Don't consider CSS imports dead code even if the
              // containing package claims to have no side effects.
              // Remove this when webpack adds a warning or an error for this.
              // See https://github.com/webpack/webpack/issues/6571
              sideEffects: true,
            },
            // Adds support for CSS Modules (https://github.com/css-modules/css-modules)
            // using the extension .module.css
            {
              test: cssModuleRegex,
              use: getStyleLoaders({
                importLoaders: 1,
                sourceMap: isEnvProduction && shouldUseSourceMap,
                modules: true,
                getLocalIdent: getCSSModuleLocalIdent,
              }),
            },
            // Opt-in support for SASS (using .scss or .sass extensions).
            // By default we support SASS Modules with the
            // extensions .module.scss or .module.sass
            {
              test: sassRegex,
              exclude: sassModuleRegex,
              use: getStyleLoaders(
                {
                  importLoaders: 2,
                  sourceMap: isEnvProduction && shouldUseSourceMap,
                },
                'sass-loader'
              ),
              // Don't consider CSS imports dead code even if the
              // containing package claims to have no side effects.
              // Remove this when webpack adds a warning or an error for this.
              // See https://github.com/webpack/webpack/issues/6571
              sideEffects: true,
            },
            // Adds support for CSS Modules, but using SASS
            // using the extension .module.scss or .module.sass
            {
              test: sassModuleRegex,
              use: getStyleLoaders(
                {
                  importLoaders: 2,
                  sourceMap: isEnvProduction && shouldUseSourceMap,
                  modules: true,
                  getLocalIdent: getCSSModuleLocalIdent,
                },
                'sass-loader'
              ),
            },
            // "file" loader makes sure those assets get served by WebpackDevServer.
            // When you `import` an asset, you get its (virtual) filename.
            // In production, they would get copied to the `build` folder.
            // This loader doesn't use a "test" so it will catch all modules
            // that fall through the other loaders.
            {
              loader: require.resolve('file-loader'),
              // Exclude `js` files to keep "css" loader working as it injects
              // its runtime that would otherwise be processed through "file" loader.
              // Also exclude `html` and `json` extensions so they get processed
              // by webpacks internal loaders.
              exclude: [/\.(js|mjs|jsx|ts|tsx)$/, /\.html$/, /\.json$/],
              options: {
                name: 'static/media/[name].[hash:8].[ext]',
              },
            },
            // ** STOP ** Are you adding a new loader?
            // Make sure to add the new loader(s) before the "file" loader.
          ],
        },
      ],
    },
    plugins: [
      // Generates an `index.html` file with the <script> injected.
      new HtmlWebpackPlugin(
        Object.assign(
          {},
          {
            inject: true,
            template: paths.appHtml,
            meta: {
              charset: { charset: 'utf-8' },
              viewport: 'width=device-width, initial-scale=1'
            },
            excludeChunks: [],
            optimize: {
              prefetch: true,
            },
          },
          isEnvProduction
            ? {
                minify: {
                  removeComments: true,
                  collapseWhitespace: true,
                  removeRedundantAttributes: true,
                  useShortDoctype: true,
                  removeEmptyAttributes: true,
                  removeStyleLinkTypeAttributes: true,
                  keepClosingSlash: true,
                  minifyJS: true,
                  minifyCSS: true,
                  minifyURLs: true,
                },
              }
            : undefined
        )
      ),
      new ScriptExtHtmlWebpackPlugin({
        defaultAttribute: 'defer'
      }),
      // Inlines the webpack runtime script. This script is too small to warrant
      // a network request.
      shouldInlineRuntimeChunk &&
        new InlineChunkHtmlPlugin(HtmlWebpackPlugin, [/runtime[.]js/, /runtime[a-z~/].+[.]js/]),
      // Makes some environment variables available in index.html.
      // The public URL is available as %PUBLIC_URL% in index.html, e.g.:
      // <link rel="shortcut icon" href="%PUBLIC_URL%/favicon.ico">
      // In production, it will be an empty string unless you specify "homepage"
      // in `package.json`, in which case it will be the pathname of that URL.
      // In development, this will be an empty string.
      new InterpolateHtmlPlugin(HtmlWebpackPlugin, env.raw),
      // This gives some necessary context to module not found errors, such as
      // the requesting resource.
      new ModuleNotFoundPlugin(paths.appPath),
      // Makes some environment variables available to the JS code, for example:
      // if (process.env.NODE_ENV === 'production') { ... }. See `./env.js`.
      // It is absolutely essential that NODE_ENV is set to production
      // during a production build.
      // Otherwise React will be compiled in the very slow development mode.
      new webpack.DefinePlugin(env.stringified),
      // This is necessary to emit hot updates (currently CSS only):
      isEnvDevelopment && new webpack.HotModuleReplacementPlugin(),
      // Watcher doesn't work well if you mistype casing in a path so we use
      // a plugin that prints an error when you attempt to do this.
      // See https://github.com/facebook/create-react-app/issues/240
      isEnvDevelopment && new CaseSensitivePathsPlugin(),
      // If you require a missing module and then `npm install` it, you still have
      // to restart the development server for Webpack to discover it. This plugin
      // makes the discovery automatic so you don't have to restart.
      // See https://github.com/facebook/create-react-app/issues/186
      isEnvDevelopment &&
        new WatchMissingNodeModulesPlugin(paths.appNodeModules),
      isEnvProduction &&
        new MiniCssExtractPlugin({
          // Options similar to the same options in webpackOptions.output
          // both options are optional
          filename: 'static/css/[name].[contenthash:8].css',
          chunkFilename: 'static/css/[name].[contenthash:8].chunk.css',
        }),
      // Generate a manifest file which contains a mapping of all asset filenames
      // to their corresponding output file so that tools can pick it up without
      // having to parse `index.html`.
      new ManifestPlugin({
        fileName: 'asset-manifest.json',
        publicPath: publicPath,
        generate: (seed, files) => {
          const manifestFiles = files
            .filter(file => {
              // Remove maps from asset-manifest.json
              if (file.path.endsWith('.map')) {
                return false;
              }
              // Remove runtime from assets, since it's already in the index.html
              if (file.name.startsWith('runtime~') || file.name === ('runtime.js')) {
                // If the inline is disabled, include the runtime
                return !shouldInlineRuntimeChunk;
              }
              return true;
            })
            .reduce(function(manifest, file) {
              manifest[file.name] = file.path;
              return manifest;
            }, seed);

          return {
            files: manifestFiles,
          };
        },
      }),
      // Moment.js is an extremely popular library that bundles large locale files
      // by default due to how Webpack interprets its code. This is a practical
      // solution that requires the user to opt into importing specific locales.
      // https://github.com/jmblog/how-to-optimize-momentjs-with-webpack
      // You can remove this if you don't use Moment.js:
      new webpack.IgnorePlugin(/^\.\/locale$/, /moment$/),
      // Generate a service worker script that will precache, and keep up to date,
      // the HTML & assets that are part of the Webpack build.
      isEnvProduction &&
        new WorkboxWebpackPlugin.GenerateSW({
          clientsClaim: true,
          exclude: [/\.map$/, /asset-manifest\.json$/],
          importWorkboxFrom: 'cdn',
          navigateFallback: publicUrl + '/index.html',
          navigateFallbackBlacklist: [
            // Exclude URLs starting with /_, as they're likely an API call
            new RegExp('^/_'),
            // Exclude URLs containing a dot, as they're likely a resource in
            // public/ and not a SPA route
            new RegExp('/[^/]+\\.[^/]+$'),
          ],
        }),
      // TypeScript type checking
      useTypeScript &&
        new ForkTsCheckerWebpackPlugin({
          typescript: resolve.sync('typescript', {
            basedir: paths.appNodeModules,
          }),
          async: isEnvDevelopment,
          useTypescriptIncrementalApi: true,
          checkSyntacticErrors: true,
          resolveModuleNameModule: process.versions.pnp
            ? `${__dirname}/pnpTs.js`
            : undefined,
          resolveTypeReferenceDirectiveModule: process.versions.pnp
            ? `${__dirname}/pnpTs.js`
            : undefined,
          tsconfig: paths.appTsConfig,
          reportFiles: [
            '**',
            '!**/__tests__/**',
            '!**/?(*.)(spec|test).*',
            '!**/src/setupProxy.*',
            '!**/src/setupTests.*',
          ],
          watch: paths.appSrc,
          silent: true,
          // The formatter is invoked directly in WebpackDevServerUtils during development
          formatter: isEnvProduction ? typescriptFormatter : undefined,
        }),
      new VisualizerPlugin({
        filename: `../${paths.appVisualizer}`,
      }),
    ].filter(Boolean),
    // Some libraries import Node modules but don't use them in the browser.
    // Tell Webpack to provide empty mocks for them so importing them works.
    node: {
      module: 'empty',
      dgram: 'empty',
      dns: 'mock',
      fs: 'empty',
      http2: 'empty',
      net: 'empty',
      tls: 'empty',
      child_process: 'empty',
    },
    // Turn off performance processing because we utilize
    // our own hints via the FileSizeReporter
    performance: false,
  };
};

use splitChunks.cacheGroups.runtime.enforce: true if you want to really make sure that these chunks are created. Otherwise the i. e. default size limit of 30kb and the default request limit of 4 resp 6 chunks apply.

@sokra  Dude, I'm trying to find this problem for hours!  Because of the HMR in the dev entrypoint the size is different therefore it shifts the weights to bundle the chunks for production. Thank you for the suggestion I really didn't though about the enforce option.
We can say that this is not a bug, it's a feature! lolol I'm being silly because I'm so happy to get this fixed.
Please let me know your Venmo, PayPal, BTC Address, whatever I really appreciate your help and I want to give you something back as gratitude, also because your project is awesome and I use since the first releases when I came from RequireJS ;)

We always need more sponsors for the project: https://opencollective.com/webpack

Done! I'm a contributor now, as long as I can contribute and companies that pay my works use webpack I'll be a contributor, my best wishes for the success of the project! And thank you again @sokra I hope more people join that idea and contribute :)

Thanks


[Roadmap] Alpha release of the FHIR core app

Release the alpha release of the FHIR core app running on Android FHIR SDK

Release link

this looks closed


CI broken, nimble file is not updated

not sure why but nimble file is not updated correctly in CI.
to be sure I added a cat nimibook.nimble in CI and the nimble file it is different from the one in main branch.
this leads to a failure since the new jsony dependence is not installed.

fixed by 66cb44cdfe5f664b19487114e088693a1b07d68d
realized that we were running nimble install before rebasing...
this bug was also causing #5


Fails to run with "import cPickle" failed Error.

My /usr/bin/python is aliased to ~/Library/Enthought/Canopy/edm/envs/User/bin/python
~/Library/Enthought/Canopy/edm/envs/User/bin/python --version
Python 3.5.2 -- Enthought, Inc. (x86_64)

When I run the zotero command example zot impact ( I have pdf with title impact of something in zotero), it fails and gives following debug message:
Starting debug for 'ZotHero'

[2018-09-07 11:01:49][ERROR: input.scriptfilter] Code 1: Traceback (most recent call last):
  File "./zh", line 49, in <module>
    from workflow import Workflow3, ICON_WARNING, ICON_WEB
  File "./lib/workflow/__init__.py", line 16, in <module>
    from .workflow import Workflow, manager
  File "./lib/workflow/workflow.py", line 25, in <module>
    import cPickle
ImportError: No module named 'cPickle'
[2018-09-07 11:01:49][ERROR: input.scriptfilter] Code 1: Traceback (most recent call last):
  File "./zh", line 49, in <module>
    from workflow import Workflow3, ICON_WARNING, ICON_WEB
  File "./lib/workflow/__init__.py", line 16, in <module>
    from .workflow import Workflow, manager
  File "./lib/workflow/workflow.py", line 25, in <module>
    import cPickle
ImportError: No module named 'cPickle'
[2018-09-07 11:01:50][ERROR: input.scriptfilter] Code 1: Traceback (most recent call last):
  File "./zh", line 49, in <module>
    from workflow import Workflow3, ICON_WARNING, ICON_WEB
  File "./lib/workflow/__init__.py", line 16, in <module>
    from .workflow import Workflow, manager
  File "./lib/workflow/workflow.py", line 25, in <module>
    import cPickle
ImportError: No module named 'cPickle'
[2018-09-07 11:01:50][ERROR: input.scriptfilter] Code 1: Traceback (most recent call last):
  File "./zh", line 49, in <module>
    from workflow import Workflow3, ICON_WARNING, ICON_WEB
  File "./lib/workflow/__init__.py", line 16, in <module>
    from .workflow import Workflow, manager
  File "./lib/workflow/workflow.py", line 25, in <module>
    import cPickle
ImportError: No module named 'cPickle'

Note that this workflow runs fine in my laptop with pyton2.7 but it fails in office computer with aliased python.
I can not alias python2 to python in office computer.
Is there a way to circumvent this problem?

Is there a way to circumvent this problem?

The obvious answer is to get your machine unfucked. /usr/bin/python is part of macOS. Replacing it with something else is a bad idea. Replacing it with an incompatible version is insane.
Failing that, you'll need to install a compatible version of Python 2.7 plus PyObjC (not part of Python, but installed by default in the macOS system Python), and then edit the workflow's source code and change any reference to /usr/bin/python (there are several) to point to your new 2.7 installation.
And you'll have to repeat that for other Python workflows, as very many hardcode /usr/bin/python precisely to avoid being run with an incompatible, non-system version of Python.


Change to new enum library

I rule and have completed some work on Case Manager that's ready for review!
We can rescue ourselves from mongoid-enum. However any current pull requests that use current enum may be affected. Hopefully the tests cover all the bases.
This pull request makes the following changes:

Change to new enum library

(If there are changes to the views, please include a screenshot so we know what to look for!)
It relates to the following issue #s:

Fixes #866

Codecov Report

Merging #1106 into master will increase coverage by 0.01%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master    #1106      +/-   ##
==========================================
+ Coverage   96.54%   96.56%   +0.01%
==========================================
  Files          50       50
  Lines        1042     1047       +5
==========================================
+ Hits         1006     1011       +5
  Misses         36       36

Impacted Files
Coverage Δ

app/controllers/users_controller.rb
100% <100%> (ø)
:arrow_up:

app/models/concerns/searchable.rb
94.73% <100%> (ø)
:arrow_up:

app/controllers/application_controller.rb
100% <100%> (ø)
:arrow_up:

app/models/concerns/urgency.rb
73.68% <100%> (ø)
:arrow_up:

app/models/user.rb
100% <100%> (ø)
:arrow_up:

app/models/patient.rb
99.02% <100%> (+0.01%)
:arrow_up:

app/helpers/dashboards_helper.rb
100% <100%> (ø)
:arrow_up:

app/lib/reporting/patient.rb
100% <100%> (ø)
:arrow_up:

Continue to review full report at Codecov.

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

Thanks a ton @tingaloo ! Really appreciate your looking out on this front.
@DarthHater can you review this? Do you think this is a viable migration away from mongoid-enum?

I'll take a gander at reviewing, moving away from mongoid-enum is great, seriously.

I'm interested in pushing on this hard after the scheduled deployment this Sunday. @tingaloo can you do me a solid and resolve merge conflicts on this so we can hit the ground running on this? As @DarthHater pointed out to me, mongoid enum is something that's holding us back from getting on rails 5.1.1, so once we get this in we can get that process started.

I spent some time today poking around the enumerize docs -- @tingaloo this was a great find and I think it's a great move toward something much more sustainable for this project.

I was really concerned about enums being saved as strings, but I think we might be able to rig it up so that it's functionally pretty similar to mongoid-enum, save-wise. From the docs:

class User < ActiveRecord::Base
  extend Enumerize

  enumerize :role, in: {:user => 1, :admin => 2}
end

So I think we can continue to save role data as ints (with CMs as 0, admins as 1, data vols as 2) and not have to do a database migration here, necessarily. It's kinda silly that saving them as ints isn't standard but I will happily accept this alternative.

I was also kinda concerned about predicate methods but it looks like we can chuck a predicates: true on the end of an enum and be able to use them similarly. Also from the docs:

class User
  extend Enumerize

  enumerize :sex, in: %w(male female), predicates: true
end

user = User.new
user.sex = 'male'
user.male?   # => true

I think this means that we can skip doing role_admin? in a bunch of places, and more or less leave this the same. Thoughts @tingaloo ?

I changed the roles back to the initial code. I think there still needs to be a DB refresh because of how _line becomes line and _role becomes role?

Mongoid enum MIGHT store it in both places, with one as an alias, so we might luck out. I hope. In rails console:
irb(main):001:0> User.first
=> #<User _id: BSON::ObjectId('595432ac311c8884230e4ca1'), _role: :admin, call_order: [...], created_at: Wed, 28 Jun 2017 18:50:20 EDT -04:00, email<EMAIL_ADDRESS>line: nil, modifier_id: nil, name: "testuser (admin)", patient_ids: [....], updated_at: Tue, 04 Jul 2017 13:48:46 EDT -04:00, version: 1>

irb(main):002:0> User.first.role
=> :admin
irb(main):003:0> User.first._role
=> :admin

I bet you're right that we won't get that lucky though.

It looks like most of the tests are passing -- since we have a pretty rigorous test suite, that's a real accomplishment. Nicely done @tingaloo !

The way I'm testing this is switching to master, rake db:seed, then switching back to this branch and seeing if index is populating. I'm not exactly sure what I am doing with setting 0,1,2 values. So an explanation of how we're migrating this new library without altering the DB would be awesome.

the plot thickens a little bit -- I popped into mongo and looked at the saved json, and it looks like it's saving stuff as strings now. Which, rude! But also simplifies moving over quite a bit.
> use dcaf_case_management_development
switched to db dcaf_case_management_development
> db.users.find({}).limit(1)
{ "_id" : ObjectId("595c47fa311c884ae5ee33bf"), "_role" : "cm", "email"<EMAIL_ADDRESS>"encrypted_password" : "$2a$10$ECcGOwblCGQD0vVwP3I8he7qToD37wMCf6/4fUYx5N9bSB/Dr0sXa", "sign_in_count" : 0, "failed_attempts" : 0, "name" : "testuser2", "updated_at" : ISODate("2017-07-05T01:59:22.401Z"), "created_at" : ISODate("2017-07-05T01:59:22.401Z"), "version" : 1 }

Looks like _role is getting saved as a string, and it's getting translated from there. So probably we can ditch the number values.
In the spirit of suffering for my sins I'm going to pull this into a branch and see what steps I have to take to get our enum fields to work, and doc them here.

ps sorry for the back and forth @tingaloo . I know that's it's a pain, thanks for bearing with me.

Here's what it took to get a call list to load:
bundle install
in user model: enumerize :role, in: [:cm, :admin, :data_volunteer], predicates: true
in patient model: enumerize :voicemail_preference, in: [:not_specified, :no, :yes], default: :not_specified
Running the following in rails console:
User.each { |u| u.rename(_role: 'role')}
Patient.each { |pt| pt.rename(_line: 'line')}
Patient.each { |pt| pt.rename(_voicemail_preference: 'voicemail_preference')}
I was hopeful that there was a way to avoid doing a field rename, but I think this is okay.

Gotcha, I changed the code back to what you stated earlier. As for the rails console script, I guess you can run that on another PR?

We'll have to run both of those on the prod DBs after taking backups. (It's kind of a pain, which is why I try to avoid doing it.)
Here's our remaining test failures:
ERROR["test_0003_disallows role editing", #<Class:0x007f906063c980>,<PHONE_NUMBER>3701185]
 test_0003_disallows role editing#UserManagementTest::edit a user (221.44s)
Capybara::ExpectationNotMet:         Capybara::ExpectationNotMet: expected to find text "cm" in "DARIA - test Your current line: DC Admin tools admin × Successfully updated user details User Account Management Add New User Reset Password (WIP) Toggle Lock (WIP) Search FULL NAME ROLE LAST LOGIN DATE CREATED [-] STATUS john admin 2017-07-08 19:45:44 -0400 Active admin admin 2017-07-08 19:45:44 -0400 2017-07-08 19:45:44 -0400 Active volunteer data_volunteer 2017-07-08 19:45:44 -0400 Active Please send feedback or ideas for this case management app to<EMAIL_ADDRESS>DC Abortion Fund --<PHONE_NUMBER> National Abortion Federation --<PHONE_NUMBER> onlinefaxes.com". (However, it was found 1 time using a case insensitive search.)
            test/integration/user_management_test.rb:151:in `block (2 levels) in <class:UserManagementTest>'

 FAIL["test_0002_should not cancel if not rescinded", #<Class:0x007f905ca557f0>,<PHONE_NUMBER>8601057]
 test_0002_should not cancel if not rescinded#SubmitPledgeTest::cancelling a pledge (250.46s)
        Expected false to be truthy.
        test/integration/submit_pledge_test.rb:108:in `block (2 levels) in <class:SubmitPledgeTest>'

 FAIL["test_0001_should let you mark a pledge submitted", #<Class:0x007f905ca56740>,<PHONE_NUMBER>47999]
 test_0001_should let you mark a pledge submitted#SubmitPledgeTest::submitting a pledge (355.31s)
        Expected false to be truthy.
        test/integration/submit_pledge_test.rb:37:in `block (2 levels) in <class:SubmitPledgeTest>'

That test itself looks kinda weird
Once that's merged I think we get this to pass CI and then ship!

I pulled your PR #1128 to let CircleCI to do its thing. Other than the DB migration, I think this is at the finish line.

Looks good to me! @DarthHater can you review this too and make sure it looks good to your eyes, since this is a pretty heavy hitting PR?

🥇
going to ship this and get it out tonight hopefully!


Update UndoRedo.xml

Update documentation for class UndoRedo.xml

You can simply amend the commit, no need to close the PR :/

I know, I wanted to make the two commits into one but I failed and it merged.