Property class and conversion attributes

From https://github.com/marvinroger/homie/pull/27#issuecomment-320040445
Hey guys, great progress so far!
I did a little brainstorming with a colleague today and we found room for two improvements I'd like to discuss with you:

Property class/category: A property is a distinct reading or characteristic value produced by a node of a device. The other side of the network, the discovering entity, needs to know about the nature of this value (e.g. to show a thermometer in a GUI). We are already providing attributes to characterize its unit, range, pretty name and "set'ability" but not a clear type.
A not-settable property with the unit "°C" does at best imply that the property is a temperature reading of a thermometer, not e.g. a thermostat or a nominal temperature. The discovering entity should not have to resort to guessing and interpreting of the other attributes.
I propose a counted number of property classes to characterize the nature of a property. The $class or $category attribute is required but can be "Unspecified"/"Other"/"" for special non-trivial properties. The classes list can be extended over time and the discovering entity is allowed to ignore the provided class if unknown.

Conversion Attribute: When working with embedded systems or low-energy micro controllers, we can not expect the device to be capable to convert a raw sensor reading into a final human-comprehendible value. An example would be a temperature sensor reading between [0..255] which would map onto a degree Celcius value with decimal places.
I propose the introduction of a $conversion property attribute. The published String value is either "x"/"" for no conversion or the right hand of an f(x) formula, e.g. x / 255 * 50 - 20.

Both points are of course open for discussion. What do you think?

Answer by @marvinroger

@ThomDietrich I see a problem with property classes. Imagine you have an heater node, with two properties: mode (off,comfort,night), and temperature. How do you assing a "class" to mode, for example? The most logical thing to do would be to assing classes to nodes, not properties. Therefore we would have heater, light, weatherstation... But this would introduce another problem: for the UI to be able to show a thermometer with the temperature embedded in the picture, we would have to define a standard set of properties for each class. Which defeat the flexibility of the homie convention, right?

For the conversion attribute, I am not that sure. It's rather complicated, and I don't see in practice what kind of value can't be computed directly on-device. I mean, even a 3$ chip is able to read a temperature in °C, °F.

Regarding property classes:
I don't think classes for nodes are meaningful. Nodes can consist of any number of properties and can represent a very special device with a special use case. We can't assign a class to that and even if we could (e.g. "generic weather station") what would be the use case for it?
On the other hand properties are basic properties of a device, represented by a number or other simple datatype. We've already agreed to add a unit and other things to educate the controller about the nature of this property.
However here's my issue with this: A property with [not settable, float, range [-100..200], unit "°C"] is clearly the reading of a thermometer.... clearly in the eyes of a human, a computer would apply some pretty wild guessing to come to that conclusion.
The key question is "How much does the controller need to know about the property?" (same question can be asked about the node)
I'll leave this question open for others to think about. @marvinroger @kwave @euphi
Regarding property conversion:
I think this is a very important aspect in the IoT world. Most µC might indeed be capable to convert values but is that always the way to go? Conversion introduces error, doesn't indicate precision and a second conversion might still be needed (e.g. to present the temperature reading from above in °F).
On top of that I'd like to mention that the idea for a conversion attribute came from a colleague from the communication networks department at my university. Conversion costs time and energy. I have to admit, that you might not use MQTT and Homie when every Joule per bit counts but I learned, that MQTT (and CoAP) are becoming quite interesting in the area of wireless sensor networks (WSNs).
Besides, the conversion argument should of course be an optional one. It will not hurt to define the option for use cases where a conversion is needed and 95% of potential users can simply ignore it.

Well, indeed, it doesn't hurt
If classes for nodes aren't meaningful (and, with the discoverability introduced, it's not necessary anymore, in the past, I used it to know that a "shutters" node had a "level" property for example), do you think we should strip the $type node attribute?

@ThomDietrich ?

Too many ideas and todos, too little time 😅
I've not forgotten about this (and other) ideas and will add my PR soon!

@marvinroger for the sake of other improvements, let's not have this one in 2.1.0.

Agreed.

Because there is $type for nodes, I have extended the idea in #92. Would also help with the ESH implementation where the UI interprets channel hints like <category>light</category>.

I am going to close this so we can keep all discussion in this thread.
#205


chore: disable the Owl Bot post-processor

Part of enabling hermetic code generation in this repo. more context.

Could you also remove the image url in .OwlBot-hermetic.yaml?

@JoeWang1127 I just created a PR for that other task.
https://github.com/googleapis/java-bigtable/pull/2333


Add Template for Qumulo Storage

Add Template for Qumulo Storage

We wanted to thank you for your contribution to the development of the community, but we can't take your PR. Please, move the zabbix_qumulo.conf file to the "files" directory.
Example:

template_name

\_5.0
|   \_template_<name>.xml
|   |_README.md
|   |_files
|       \_other_files
|       |_ ...
|_5.4
|   \_template_<name>.[xml,yaml,json]
|   |_README.md
|   |_files
|       \_other_files
|       |_ ...
|
|_...

Hi, I move the the subfolder files.
Regards

Thank you for your integration.


remove all mentions of 'instrument'

I think I've very thoroughly purged instrument, including from the C. I was able to build and install in a new virtual environment and test functionality. I think it's all good?
@blanton144 if you could double check that it builds for you that would make me feel better.
Thanks!

@blanton144 If you've had a chance to look at this I can try to merge it. But I definitely feel better about merging this fairly significant change if you've had a chance to compile and run the test suite successfully.

@blanton144 I merged master into the branch and fixed a small issue that I had caused in a test case. Should be good for review and merge to master.

All the tests passed, and the upstream changes to robostrategy are straightforward.

Awesome. Thanks Mike!


⚠ Bofrost.fr has degraded performance

In ca6f1a5, Bofrost.fr (https://www.bofrost.fr) experienced degraded performance:

HTTP code: 200
Response time: 1729 ms

Resolved: Bofrost.fr performance has improved in fca57f4 after 9 minutes.


Cannot fully override rule in Webpack config

Version
3.0.0-beta.6
Reproduction link
https://codesandbox.io/s/7mklr625z6
Steps to reproduce
Go to App.vue to see the loading of the SVG asset. The SVG contents is displayed in the view.
What is expected?
svg-sprite-loader is not being used (setup in vue.config.js). The Star data property should be an object after being processed by this loader.
What is actually happening?
The SVG is still being processed with file-loader from the default Webpack configuration and is therefore returning a string.

CodeSandbox is not using the latest CLI version yet, so this is not a valid reproduction.

I’m not sure then how I would demo a reproduction? The result is the same as what I see on latest anyway. Unsure if it’s a bug then.

You can provide a GitHub repository as a reproduction.

Hi @yyx990803 ,
Created a repo for reproduction.
https://github.com/divyamrastogi/config-override-bug-demo
I'm facing this same issue while trying to change the loader for svg files, the default loader (file-loader) doesn't get overridden.
Hope you're able to reproduce and reopen this issue. Let me know if you need more information.
Thanks!

Hi @yyx990803 - is it possible to get this issue reopened at all in light of the above repo? Thanks.


Keeps restoring rootfs

I have an iPhone X iOS 11.2.1 and every time I try to jailbreak, it keeps restoring rootfs. After it is done doing that the phone restarts and nothing happens. The toggle to restore rootfs is always off but it keeps restoring it anyway.

This is an issue with coolstar/electra1131
The rootfs backup that Electra makes on first jailbreak... contains electra and therefore cant be removed automatically by unc0ver
You should install and use electra once, then run the Delectra script kivoair/delectra and then switch to unc0ver.

Hey Samgisaninja,
Okay so here is my situation I was first jailbroken with Electra on my iPhone 7 that's on iOS 11.2.6 . So what I did was is I uninstalled all of my tweaks and any left over directories from the tweaks. So the only packages left installed were the ones for Cydia. So it was just like I was freshly jailbroken with Electra. So then what I did was delete the Electra app and rebooted my iPhone. Then I uses the Restore RootFS option in UnC0ver to restore RootFS. But after multiple tries and multiple reboots Cydia app was still on my device. Then finally I noticed it was gone. So I figured okay maybe this finally worked and I can jailbreak. So I rebooted my phone, and tried to jailbreak but it kept restoring RootFS even tho the option was toggled off. Then I figured well since Cydia was gone from restoring RootFS. I backed up my device and then I restored my device via the settings app. And then loaded my backup back onto my device. Then I tried to jailbreak with unc0ver again and it still kept restoring RootFS and rebooting once done. Then I saw this issue and so I jailbroke my iPhone again with Electra and then ssh'ed the Delectra file into /electra and used terminal on my laptop to ssh into my phone and run the shell script. And then it completed successfully. So now Cydia was gone. So I deleted the Electra app. Rebooted my iPhone one more time for safe measure, and tried to use unc0ver again to jailbreak and I still keep getting the same exact issue where it just continues to restore RootFS even tho the toggle is off. Do you have any idea on what else I could do to try to fix this issue? I'm using the latest version on Unc0ver by the way.
Thanks!

Re-opened because we’re attempting to fix this on our end even though it’s not our fault

Hey Samgisaninja,
I found a solution on reddit in order to jailbreak with Unc0ver. It's this tutorial right here. Credit goes to Reddit user /u/wb0815
Tutorial that worked for me.
Reboot > install Electra, toggle OFF tweak and hit Jailbreak > run delectra script again > device will reboot when completed > then go to setting > general > reset > hit erase all content and setting > device now full unjailbreak (make sure you already do backup iTunes). After that, do not restore backup device and do not login iCloud on the first place > just jailbreak with unc0ver and it should work now.
Now here's the other issue... After I jailbroken my iPhone with Unc0ver 1.1.1 I rebooted my iPhone and then restored my backup data to my iPhone and after it was done restoring my backup data to my iPhone and now when I try to jailbreak with my iPhone using unc0ver, it gets stuck at 37 and then gives me this error.
Error

Errno: 2

Test: daffodils("/var/tmp/jailbreakd.pid") == 0
Filename: ViewController.m
Line: 2186
Function: exploit
Description: Failed to spawn jailbreakd

And after the pop up for this error it crashes the unc0ver application and I continue to get this error every time after I reboot and try again. Do you think that since now my phone is jailbroken with Unc0ver, should I do a RestoreFS and try jailbreaking my iPhone again? Or do I just need to keep trying the jailbreak until it goes thru? I'm using the MP (MultiPath) exploit.
Please let me know if you need anymore information.

@KBrownies can you post your diagnostics exported from unc0ver utilities section.


Program stuck in somewhere

Hello,
When use nvidia A30 run the code, I find the program will stuck in pretrain.py after this function (define in function make_pretrain_step) return but use CPU will not.
def pretrain_step(data, params, state, key, scf_approx):
    """One iteration of pretraining to match HF."""
    val_and_grad = jax.value_and_grad(loss_fn, argnums=0)
    loss_val, search_direction = val_and_grad(params, data, scf_approx)
    search_direction = constants.pmean(search_direction)
    updates, state = optimizer_update(search_direction, state, params)
    params = optax.apply_updates(params, updates)
    full_params = {'ferminet': params, 'scf': scf_approx}
    data, pmove = mcmc_step(full_params, data, key, width=0.02)
    return data, params, state, loss_val, pmove

I use pdb check where the code stuck, finally find after this function return, program will call some jax internal code. Until this line, the program is stuck.
/home/ps/users/whb/natural_excited_states/venvcuda/ferminet/lib/python3.11/site-packages/jax/_src/api.py(1774)cache_miss()
-> out = map_bind_continuation(execute(*tracers))

I use top check the program is sl+. I wonder this may be because my jax installation is not correct？
Below is jax and jaxlib version :

jax 0.4.12
jaxlib 0.4.12+cuda12.cudnn89

Because cuda version is 12.1, use jax 0.4.12. And install jax use pip install jax==0.4.12, install jaxlib use pip install ./jaxlib-0.4.12+cuda12.cudnn89-cp311-cp311-manylinux2014_x86_64.whl

I try in nvdia A100, the program can run correctly.
On A30 may have some setting, stop the program.

You might be hitting an OOM issue or an XLA compilation issue, hard to know without careful debugging on your own setup.


Remove test filtering plugin

Prepare to use a new one soon.

@bot-gradle RfM

@bot-gradle test RFN

OK, I've already triggered the following builds for you:

ReadyForNightly build

@bot-gradle test RFN

OK, I've already triggered the following builds for you:

ReadyForNightly build

@bot-gradle test and merge

OK, I've already triggered a build for you.


Can't compile : error on xcbgen dependency

Describe the issue
Compilation failed.
Expected behavior:
I try to compile polybar. I've got an error on a missing dependency.
A clear and concise description of what you expected to happen.
Actual behavior:
What actually happens
Was it working before?

Did you also experience this bug in an earlier version of polybar?
If no, what was the last version where this worked correctly?

To Reproduce
A minimal but complete config with which the problem occurs:
$ sudo ./build.sh
[....]
-- Searching for xcbgen with python3
-- Searching for xcbgen with python
-- Searching for xcbgen with python2
-- Searching for xcbgen with python2.7
CMake Error at lib/xpp/CMakeLists.txt:75 (message):
  Missing required python module: xcbgen

List any other steps needed to reproduce the issue besides starting polybar with the config you posted above.
Polybar Log
Post everything polybar outputs to the terminal when you run it and the issue occurs below

Screenshots
If applicable, add screenshots to help explain your problem.
Environment:

WM: I3
Distro: Archlinux
Output of polybar -vvv:

Additional context
Add any other context that you think is necessary about the problem here.
xcbgen seems already installed on the system :
ls -alFrt /usr/lib/python3.8/site-packages/xcbgen
.rw-r--r-- root root 51.4 KB Sun Feb 23 06:16:47 2020   xtypes.py
.rw-r--r-- root root  6.6 KB Sun Feb 23 06:16:47 2020   state.py
.rw-r--r-- root root  3.8 KB Sun Feb 23 06:16:47 2020   matcher.py
.rw-r--r-- root root  6.3 KB Sun Feb 23 06:16:47 2020   expr.py
.rw-r--r-- root root  116 B  Sun Feb 23 06:16:47 2020   error.py
.rw-r--r-- root root  6.2 KB Sun Feb 23 06:16:47 2020   align.py
.rw-r--r-- root root    1 B  Sun Feb 23 06:16:47 2020   __init__.py
drwxr-xr-x root root    4 KB Fri Apr 10 17:41:08 2020   __pycache__/
drwxr-xr-x root root    4 KB Fri Apr 10 17:41:08 2020   ./
drwxr-xr-x root root   12 KB Fri Apr 10 17:41:09 2020   ../

Any idea ?
thanks.

First of all, don't run build.sh as root, it will run sudo itself if it needs root privileges.
I don't think that's the problem here, but it may be.
If you have xcb-proto installed and still get that error, it might be an issue with conda or pyenv, do you use either of them?
From the Compiling Page:

Note: If you are using anaconda, run conda deactivate before running cmake, also see the note on the Known Issues page if that doesn't work.
Note: Similarly, if you are using pyenv, you will likely need to use system python during compilation. You can revert to system python in the current directory by executing pyenv local system directly before executing cmake.

Does this help?

Hi,
xcb-proto is installed. And no, i don't use conda or pyenv.

Hmm...
Can you post the output of the following two commands:
python3 -c "import sys; print(sys.path)"

and
python3 -c "import re,xcbgen;print(re.compile('/xcbgen/__init__.py.*').sub('',xcbgen.__file__))"

The first one tells us where your python is looking for packages and the second one runs the same command our build setup does to find xcbgen.

Closing due to inactivity


[CPLP-1475] - Digital-twin-search-logic

Hello @manojava-gk , thanks for the suggestion, but it seems like PageLoadingTable takes totally different components and flow to make it operational,  i had a check on the PageLoadingTable, it wont be compatible with the flow we used in Digital Twin. Can you guide me through this?

Hello @manojava-gk , thanks for the suggestion, but it seems like PageLoadingTable takes totally different components and flow to make it operational, i had a check on the PageLoadingTable, it wont be compatible with the flow we used in Digital Twin. Can you guide me through this if i am missing anything here?

Hi @smartdeepp thanks for this information. Can we connect over a call in CatenaX Teams? Kindly let me know your email for the same

Hello @manojava-gk , thanks for the suggestion, but it seems like PageLoadingTable takes totally different components and flow to make it operational, i had a check on the PageLoadingTable, it wont be compatible with the flow we used in Digital Twin. Can you guide me through this if i am missing anything here?

Hi @smartdeepp thanks for this information. Can we connect over a call in CatenaX Teams? Kindly let me know your email for the same

Hello @manojava-gk , sure. it's<EMAIL_ADDRESS>.

Hello @manojava-gk , thanks for the suggestion, but it seems like PageLoadingTable takes totally different components and flow to make it operational, i had a check on the PageLoadingTable, it wont be compatible with the flow we used in Digital Twin. Can you guide me through this if i am missing anything here?

Hi @smartdeepp thanks for this information. Can we connect over a call in CatenaX Teams? Kindly let me know your email for the same

Hello @manojava-gk , sure. it's<EMAIL_ADDRESS>.

Lets connect in teams

I reviewed your PR as requested, but I could not checkout your branch, since it is not published inisde the product-portal-frontend. Can you explain where to find it? Would be great to test the UI.

Can you please check with this branch name smartdeepp:CPLP-1475-Digital-twin-search-logic

I reviewed your PR as requested, but I could not checkout your branch, since it is not published inisde the product-portal-frontend. Can you explain where to find it? Would be great to test the UI.

Can you please check with this branch name smartdeepp:CPLP-1475-Digital-twin-search-logic

I tried this already, but it is not working. I also deleted my local version and cloned the Portal code again, but still your branch is missing. When you go to https://github.com/catenax-ng/product-portal-frontend/branches I can also not see your branch there... Maybe it has something to do with this?

I reviewed your PR as requested, but I could not checkout your branch, since it is not published inisde the product-portal-frontend. Can you explain where to find it? Would be great to test the UI.

Can you please check with this branch name smartdeepp:CPLP-1475-Digital-twin-search-logic

I tried this already, but it is not working. I also deleted my local version and cloned the Portal code again, but still your branch is missing. When you go to https://github.com/catenax-ng/product-portal-frontend/branches I can also not see your branch there... Maybe it has something to do with this?

i have added a new commit too, with the current change you gave.

I reviewed your PR as requested, but I could not checkout your branch, since it is not published inisde the product-portal-frontend. Can you explain where to find it? Would be great to test the UI.

Can you please check with this branch name smartdeepp:CPLP-1475-Digital-twin-search-logic

I tried this already, but it is not working. I also deleted my local version and cloned the Portal code again, but still your branch is missing. When you go to https://github.com/catenax-ng/product-portal-frontend/branches I can also not see your branch there... Maybe it has something to do with this?

i have added a new commit too, with the current change you gave.

Cool! I know now, why I can not checkout to your branch. You forked the project, so it is a different Repo... I don't know if the workflow is good like that, because then the reviewers has to checkout your repo as well. Maybe for the future it is better to just make a branch in the original repository?

I reviewed your PR as requested, but I could not checkout your branch, since it is not published inisde the product-portal-frontend. Can you explain where to find it? Would be great to test the UI.

Can you please check with this branch name smartdeepp:CPLP-1475-Digital-twin-search-logic

I tried this already, but it is not working. I also deleted my local version and cloned the Portal code again, but still your branch is missing. When you go to https://github.com/catenax-ng/product-portal-frontend/branches I can also not see your branch there... Maybe it has something to do with this?

i have added a new commit too, with the current change you gave.

Cool! I know now, why I can not checkout to your branch. You forked the project, so it is a different Repo... I don't know if the workflow is good like that, because then the reviewers has to checkout your repo as well. Maybe for the future it is better to just make a branch in the original repository?

Yes, you are correct you need to checkout from my repo. Additionally this work flow was given to us by @jjeroch herself. Can you please share your thoughts here @jjeroch

I reviewed your PR as requested, but I could not checkout your branch, since it is not published inisde the product-portal-frontend. Can you explain where to find it? Would be great to test the UI.

Can you please check with this branch name smartdeepp:CPLP-1475-Digital-twin-search-logic

I tried this already, but it is not working. I also deleted my local version and cloned the Portal code again, but still your branch is missing. When you go to https://github.com/catenax-ng/product-portal-frontend/branches I can also not see your branch there... Maybe it has something to do with this?

i have added a new commit too, with the current change you gave.

Cool! I know now, why I can not checkout to your branch. You forked the project, so it is a different Repo... I don't know if the workflow is good like that, because then the reviewers has to checkout your repo as well. Maybe for the future it is better to just make a branch in the original repository?

Yes, you are correct you need to checkout from my repo. Additionally this work flow was given to us by @jjeroch herself. Can you please share your thoughts here @jjeroch

Ok, so I tested your branch now. Looks good to me. There is just one thing (and it could be possible, that it is a problem of the Table-Component, and not your changes) - when you enter a value in the search field manually it already tries to search after the 3rd or 4th letter and then you can not continue entering, because the input is not active anymore... But the same happens in the semantic model page as well. So I assume this is a different thing.


Add gocheckcompilerdirectives linter and fix warnings

What does this PR do?

Enable the gocheckcompilerdirectives linter and fix its warnings.
Motivation

This linter detects invalid Go compiler directives, which can lead to a real change in behavior and real bugs.
Additional Notes

Possible Drawbacks / Trade-offs

Describe how to test/QA your changes

/merge


Add GitHub Action workflow to automatically update gh-pages branch

@fschwahn FYI - changes are now automatically deployed by GH Actions, see https://github.com/denkungsart/castupload-doc/actions?query=workflow%3ADeploy


Web API idea

I've been briefly experimenting with Postlight (nee Mercury) Parser, most of my projects are Python based so I was looking at a couple of the server implementations. Any interest in implementing the API described in:

https://github.com/postlight/parser-api
https://github.com/postlight/parser-api-express
https://github.com/HenryQW/mercury-parser-api/

Example (copied from HenryQW/):
GET /parser?url=[required:url]&contentType=[optional:contentType]&headers=[optional:url-encoded-headers]
curl localhost:3000/parser?url=https://www.bbc.co.uk/news/science-environment-35876621

I'm thinking about knocking something up, wondering if anyone else would find it useful (e.g. for switching backends).

I've not got as figuring out good defaults for different features when missing/present compared with Postlight's return payload.

Hi @clach04, I believe people would find it useful indeed.
You may want to look at this repository which implements a basic API:
https://github.com/Soontao/trafilatura-srv (see app.py)

@clach04 There is now an official implementation, see the API page in the docs.

Awesome I'll have an experiment!


Lagg Failover Mode Master Interface select. Issue #1019

[ ] Redmine Issue: https://redmine.pfsense.org/issues/1019
[ ] Ready for review

when creating a lagg interface in failover mode I am not able to choose the master interface.
The first interface in the list becomes the master, which in my case is making
the lagg choosing a 100mbit interface over a 1gbit interface.
An additional drop down menu would be nice.

How will this behave when creating the LAGG vs editing the LAGG?

no issue, because it execute interface_lagg_configure() in both cases


fix(everything): update name to e2core, add syncer

This PR does a lot of things, but most significantly it adds a syncer which now powers the coordinator and the orchestrator to ensure they stay in sync.
Please pay closest attention to those packages, as there's a lot of other renaming cruft in this PR.

Few comments mostly around readability which is subjective so address as you see fit. Great work on this!


Socket error when trying to call from another domain?

Hey im trying to call my running dog project from a SPA react app running locally but I keep getting a socket protocol error. Any idea why this might be?
[ HELLO ][receive] req.url http://localhost:4556//ws?u=dave
GET //ws?u=dave 200 OK (7.28ms)
[mf:err] Web Socket request did not return status 101 Switching Protocols response with Web Socket

http://localhost:4556 is the socket that DOG is running on but I am calling it from a browser running on http://localhost:8787/chat

this I think was user error.


The accepted format for SAML ID is not well documented

We saw a confusing error message on AzureAD, alluding that the given SAML ID is invalid because it begins with an ASCII digit (which is not). I got the identical error message when I shortened the ID to 20 characters.
The problem seemed to go away when I changed the format to hexadecimal prefixed by "id", but I'm not confident because the accepted format is not documented thoroughly.
AADSTS7500529: The value 'p0hxHdKbylFDd2/hzGyKUTiliWBzh72PxznHR50adRl+vml9mNDJu26F3sSHDGGrRU0O7+lXqOz7p/WvtA94gQ==' is not a valid SAML ID. The ID must not begin with a number.

Document Details
⚠ Do not edit this section. It is required for learn.microsoft.com ➟ GitHub issue linking.

ID: ffb44f0f-e3d3-459e-2f11-10a7fd8958a4
Version Independent ID: 8a827dba-0353-4b88-bfd1-1edb6dfbf97d
Content: Error AADSTS75005 - The request is not a valid Saml2 protocol message - Active Directory
Content Source: support/azure/active-directory/error-code-AADSTS75005-not-a-valid-saml-request.md
Service: active-directory
Sub-service: app-mgmt
GitHub Login: @genlin
Microsoft Alias: genli

@fumieval, Thanks for the feedback. I will forward this issue to our product team.

Close this issue since the PR is merged.

#reassign:AllisonAm

Close the issue since the problem is fixed

Thank you!


grub2: unreproducible localization resources

Building this package twice does not produce the bit-by-bit identical result each time, making it harder to detect CI breaches. You can read more about this at https://reproducible-builds.org/ .
Fixing bit-by-bit reproducibility also has additional advantages, such as avoiding hard-to-reproduce bugs, making content-addressed storage more effective and reducing rebuilds in such systems.
Steps To Reproduce
nix-build '<nixpkgs>' -A grub2 --check --keep-failed

You can use diffoscope to analyze the differences in the output of the two builds.
To view the build log of the build that produced the artifact in the binary cache:
nix-store --read-log $(nix-instantiate '<nixpkgs>' -A grub2)

Additional context
https://reproducible.nixos.org/nixos-iso-minimal-runtime/diff/76610f85a7c73b54e1ec6fdee1982929a5391d7122f590d0cc7eeae4fee9f5c9-9ca84891f8328dd999d6e6373b10cb8018ab97814d9c28f00148901d5137577a.html
possibly related: https://savannah.gnu.org/bugs/?59658

I think we haven't hit this problem before (with 2.06) because the po files are usually distributed along with the source tarball. Now (with 2.12-rc1) that we've switched to a git checkout the derivation is building the po files itself, and I suspect we're either not doing it right, or we're missing part of the process.

(Fixing gettext's reproducibility is also likely an acceptable solution - but I suspect there's a more targeted and less controversial fix we could just apply to grub2 directly.)

should be fixed with #245885 on staging - if we can do something to grub2 to fix it 'more targeted and less controversial' that's still fine, but might not be needed


I'm trying to render the Dom content widgets to be slice specific can I know how i achieve it ?

If you are asking a question rather than filing a bug, try one of these instead:

StackOverflow (http://stackoverflow.com/questions/tagged/ami.js)
FNNDSC #AMI Slack Channel (https://slack.babymri.org)

Description

Live Demo

http://jsfiddle.net/gh/get/library/pure/fnndsc/ami/tree/master/lessons/01#run
Steps to Reproduce

Expected Results

Actual Results

Browsers Affected

[ ] All
[ ] Chrome
[ ] Firefox
[ ] Edge
[ ] Safari 9
[ ] Safari 8
[ ] IE 11

Versions

AMI: vX.X.X
THREEJS: vX.X.X

Each widget has hide and show methods.
So, you can hide them on slice change and show when initial slice for this widget is shown.


Issue links show loading state in editor until focus is restored

Have your browser in another monitor
Click on an issue link in VS Code
The issue opens on the other monitor, but the loading state atop the editor sticks around until you focus back on the VS Code window

I've removed links since they were not performant. But what platform were you seeing this with, and does it occur with non-issue links?

I actually don't see this on OSX or my windows VM at work. I'll try to reproduce it again when I get home tonight and see if I can figure out what the difference is.

Can't repro any more


added useCallback to getCurrentDecision in useDecision hook

adding useCallback here fixed a few things:

Bug: if you used multiple useDecision hooks with { autoUpdate: true }, the second one would not autoUpdate (you had to fully reload the app to get the decision to update)
Before it was redefining getCurrentDecision on every rerender of the useDecision hook, which decreased performance

This seems to relate to #196 and (now) internal ticket FSSDK-9624

@monahans, this has been added in #273 with so many other improvements. Thanks for the suggestion. Closing this!


Continuous update of User Profile and Code Contributions.

Update own respective personal pull requests completed.

Moved to issues #148, #149, #150, #151, #152


HELP WITH TAB CONTROL

How to control minions with TAB, I have already made configurations in the client, emit (18)
However, there are still problems, some help?

What client you use? What will happen when you press TAB.
P.S. Don't use CAPS

I'm using Agarplus client, hmm
I get manage to control the bot with the TAB, but there were some problems like that did not respond very well and was slow to respond.

Are you sure, that issue is server-sided? Maybe MultiOgar-Edited doesn't support bot control feature.
Communication scheme look like this: You(Browser) -> client JS code -> WebSocket message -> server
What happens when you press TAB in Agarplus? Maybe client JS code converts your TAB to unknown for server ws-message.
Is it feature request?

@cyclopentan He is trying to change the button from Q to TAB, you don't need to give him the javascript knowledge lmao

Just change the keycode from the one for Q to the one for TAB... No need for any critical changes.

Okay :)


Jekyll 4

[ ] I have added or updated the specs/tests.
[X] I have verified that the specs/tests pass on my computer.
[X] I have not attempted to bump, or alter versions.
[ ] This is a documentation change.
[X] This is a source change.

Description
This pull request bumps the Jekyll version spec so that it's usable with the alpha of v4. I've also updated Nokogiri and a typo with Sprockets.

I missed this one, sorry about that!

Thanks! 💖


⚠ Bofrost.com has degraded performance

In 406822b, Bofrost.com (https://www.bofrost.com) experienced degraded performance:

HTTP code: 200
Response time: 1102 ms

Resolved: Bofrost.com performance has improved in 5c8e454 after 6 minutes.


Disable segment place index after restart under disagg arch

Enhancement
The segment delta index on wn is useless now. But it introduces high CPU and high S3 read-write flow after restart. And now wn could serve much more data than the coupled arch.
We should disable the segment place index under disagg arch.


TUL/after_test-3-Searched Items/Collections/Communities wrong badge color

Problem description
It is light blue and not purple:

I've fixed also:


Add Homepage UI

Fixes #65
Description
I created the Homepage as per the Figma Design.
Screenshots

For BEM, I have not made classes for individual elements in the div tags, so what am I supposed to divide? Or is it some naming convention.
I have removed width and height from everywhere.
Without the height, divs left no space in between, and so I've added padding for now. Is that alright?
I have removed the list class in CSS.
I've removed the offsets.
How to manage height of image elements? This is how that section looks like right now.

BEM is more of a naming convention.
Padding should be set only on the top and bottom of the sections (divs). The height should always be auto. If we decide to add more content, the auto height will make sure that it takes the height as per the content and padding on top and bottom will leave enough breathing space.
For the partner logos, set the max-width of the logos to 250px; Give display: flex to the parent (logo container) and justify the content to center.

I think I got it, please have a look at the code.
This is how the Our Partners section look like right now.


PolyglotException returns isCancelled as false when Context is closed with cancelling during sleep

Hello, after upgrade from GraalJS 20.2.0 to 20.3.0 I am observing a change in behavior when cancelling a script, which I couldn't find in the Release notes. In 20.2.0 the PolyglotException correctly returns its isCancelled property as true, on the version 20.3.0 it is returned as false. However, the new property isInterrupted is now true. Is this wanted behavior? Is this specific for cancelling during the Thead.sleep, or is this behavior likely to occur when using script with other Java classes (or even plain JavaScript)?
Can the truthy isInterrupted be considered as a sign of a cancelled script now? I am not using the new Context.interrupt method anywhere.
    @Test
    public void testSleep() throws InterruptedException {
        Context context = Context.newBuilder()
                .allowHostAccess(HostAccess.ALL)
                .allowHostClassLookup(s -> true)
                .allowIO(true)
                .allowCreateThread(true)
                .allowCreateProcess(true)
                .allowExperimentalOptions(true)
                .option("js.nashorn-compat", "true")
                .option("js.ecmascript-version", "2020")
                .build();

        final boolean[] isCancelled = new boolean[1];
        final String script = "var Thread = Java.type(\"java.lang.Thread\");Thread.sleep(10000)";
        Runnable runnable = () -> {
            try {
                context.eval("js", script);
            } catch (PolyglotException e) {
                e.printStackTrace();
                isCancelled[0] = e.isCancelled();
            }
        };
        Thread scriptExecThread = new Thread(runnable);
        scriptExecThread.start();
        Thread.sleep(5000);
        context.close(true);
        scriptExecThread.join();

        assert isCancelled[0]; // passes on 20.2.0, fails on 20.3.0
    }

@pavel-borik thanks for reporting the issue, please provide the reproducer and full error stack

You can reproduce it with the test in my post, do you mean anything else? There is no error stack, just incorrect value of the property.

The underlying CancelHandler is trying to cancel the execution using two main tools: interrupted flag of Thread and truffle instrument that triggers cancel exception. It seems that the outcome of isCancelled() and isInterrupted() reflects what tool succeeded. The thread is blocked by Thread.sleep(10000) in your case. Hence, you see isCancelled(): false, isInterrupted(): true. If you replaced your script by while (true); then you would see the opposite (isCancelled(): true, isInterrupted(): false). If you have a more complex script then the outcome may be random (based on what your other thread is executing when the cancellation is triggered).
@chumer, is this behaviour intentional? I can imagine how annoying this can be for users of this API as this blurs the difference between interrupt() and cancel(). Maybe the code that clears the interrupt flag can also somehow ensure that the InterruptedException triggered by cancel() is transformed into PolyglotException with isCancelled(): true.

@chumer, is this behaviour intentional?

No this is not intentional. The interrupt should behave like a normal force close.

@chumer, is this behaviour intentional?

No this is not intentional. The interrupt should behave like a normal force close.

@pavel-borik this issue has been fixed and will be present in future releases
Please check
https://github.com/graalvm/graalvm-ce-dev-builds/releases


VSCode and VSMac specific information needs to be separated from VS2019 information

Under https://docs.microsoft.com/en-us/aspnet/core/tutorials/razor-pages/model?view=aspnetcore-3.0&tabs=visual-studio#initial-migration, references made to instructions specific to dotnet CLI.
The text regarding the expected error should be more prominent.

Mac supports .NET CLI
Can you create an issue from the doc page? That will connect the doc to the issue. Go to the bottom of the page and select This page .

@Rick-Anderson - I didn't realize that was the workflow. I will follow it in the future.

NP


Possible to shorten image urls for CartoCSS?

When using an image file, the url to the image is pretty long and if using multiple image files for categories of features, the CartoCSS can get pretty messy:

Also, if a user adds an image (which makes the url even longer) the url portion of the -file gets pushed to the next line and can't be indented to keep the CartoCSS in line:

Because the url is so long, in examples like the CDBFiddle where the url doesn't get pushed to a new line, it is one extremely long line:
http://cartodb.github.io/labs-cdbfiddle/#https://team.cartodb.com/u/mamataakella/api/v2/viz/21560880-6dce-11e5-b0be-0ea31932ec1d/viz.json

Like it for the future, right?

yes, whenever it is possible!

There has been no activity on this issue for more several months. We are closing it. If you think this still needs to be addressed please open a new issue.


Update release flow

Overview
The idea is, that from now on we release Kubescape when creating a new tag and not when merging from the dev branch to the master
This is documented in the README.md file
 as well.
Kubescape workflows
Tag terminology: v<major>.<minor>.<patch>
Developing process
Kubescape's main branch is main, any PR will be opened against the main branch.
Opening a PR
When a user opens a PR, this will trigger some basic tests (units, license, etc.)
Reviewing a PR
The reviewer/maintainer of a PR will decide whether the PR introduces changes that require running the E2E system tests. If so, the reviewer will add the trigger-integration-test label.
Approving a PR
Once a maintainer approves the PR, if the trigger-integration-test label was added to the PR, the GitHub actions will trigger the system test. The PR will be merged only after the system tests passed successfully. If the label was not added, the PR can be merged.
Merging a PR
The code is merged, no other actions are needed
Release process
Every two weeks, we will create a new tag by bumping the minor version, this will create the release and publish the artifacts.
If we are introducing breaking changes, we will update the major version instead.
When we wish to push a hot-fix/feature within the two weeks, we will bump the patch.
Creating a new tag
Every two weeks or upon the decision of the maintainers, a maintainer can create a tag.
The tag should look as follows: v<A>.<B>.<C>-rc.D (release candidate).
When creating a tag, GitHub will trigger the following actions:

Basic tests - unit tests, license, etc.
System tests (integration tests). If the tests fail, the actions will stop here.
Create a new tag: v<A>.<B>.<C> (same tag just without the rc suffix)
Create a release
Publish artifacts
Build and publish the docker image (this is meanwhile until we separate the microservice code from the LCI codebase)

Additional Information
The "callers" have the alphabetic prefix and the "executes" have the numeric prefix
Screenshots

This mentions that the main branch is main, but I still see it as master.  Are we OK to rename and can I help with scheduling?


Maintanance mode is triggering DB Sync

I think it is worth to add to this page that when you turn off the Maintanance mode then DB Sync is triggered - it's a simple solution for a case where the customer is suspecting that DB Sync went well (no errors) but for example for some reason deleted field is still there in table schema.
Document Details
⚠ Do not edit this section. It is required for docs.microsoft.com ➟ GitHub issue linking.

ID: 91ae449b-ec59-28d4-1934-6909e77ee4f3
Version Independent ID: df6ae442-3466-4c69-aa11-ed35e20a629f
Content: Maintenance mode - Finance & Operations | Dynamics 365
Content Source: articles/fin-ops-core/dev-itpro/sysadmin/maintenance-mode.md
Service: dynamics-365-cross-app
Product: ****
Technology: ****
GitHub Login: @laneswenka
Microsoft Alias: laswenka

Bug 735508 has been logged to address this issue.

Thanks for your feedback. We are closing this issue because we are either unable to find relevant information or reproduce this. If you're still experiencing the issue described here, please reopen or create a new issue.


test and application binaries should be separate

This change is

Reviewed 1 of 1 files at r1.
Review status: all files reviewed at latest revision, all discussions resolved.

Comments from Reviewable


Cross platform support

Hey!
Very happy with HAP results on a recent installation.
I've been looking into Density * BC1 and BC4 for similar performance without the particular caveat of Hap...
 But the .mov wrapper is a huge problem in the wider ecosystem. Do you have any thoughts about HAP outside of OSX?
Currently HAP doesn't support:

Linux
openFrameworks on Windows (unless you count legacy versions)
Windows x64 (as far as i know the DirectShow playback doesn't support GPU decompression stage)

Ideally all we'd need is a cross-platform free Quicktime demuxer to get to the frame data then the rest is easy, e.g. ffmpeg/libav probably could help here, have you tried this?
Elliot

There is a directshow wrapper for hap on OSX that render heads have made that works in 64bits.    It's annoying that it won't play mov's though and movies you encode with it aren't cross platform though so +1 for a universal container format and encoding/decoding framework
Sent from my iPhone

On 8 Jul 2016, at 03:27, Elliot Woods<EMAIL_ADDRESS>wrote:
Hey!
Very happy with HAP results on a recent installation.
I've been looking into Density * BC1 and BC4 for similar performance without the particular caveat of Hap...
 But the .mov wrapper is a huge problem in the wider ecosystem. Do you have any thoughts about HAP outside of OSX?
Currently HAP doesn't support:
Linux
openFrameworks on Windows (unless you count legacy versions)
Windows x64 (as far as i know the DirectShow playback doesn't support GPU decompression stage)
Ideally all we'd need is a cross-platform free Quicktime demuxer to get to the frame data then the rest is easy, e.g. ffmpeg/libav probably could help here, have you tried this?
Elliot
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or mute the thread.

Hi Elliot!
Hap is a frame format and does not specify any particular container (or platform).
Existing tools include the QuickTime codec (OS X and Windows), the DirectShow codec (Windows), and transcoding support in ffmpeg (OS X, Windows, Linux). Various proprietary products also support Hap encoding and/or playback.
As well as the QuickTime codec which packs Hap into .mov, the DirectShow codec packs into .avi (and can be used for GPU playback if software requests DXT pixel formats from it) and ffmpeg supports Hap in .mov as well as a range of other containers.
The .mov container has the advantage of being very common and widely integrated into existing workflows, which is why implementations thus far have tended to favour it. Using .mov does not require Apple's (deprecated) QuickTime libraries.
Using libavformat from ffmpeg is a common strategy for Hap playback. Currently you must acquire encoded frames from libavformat and perform the Hap decode yourself to get the frame in compressed texture formats, though the hope is to eventually have support in libavcodec to deliver the unpacked compressed texture formats when software requests them.

Perhaps all this could be better documented for developers to avoid giving the impression that there is a dependency on QuickTime?
Are there libraries or developer tools you think are missing or would make using Hap simpler?
Are there user tools (encoders, transcoders, etc) you think would make using Hap simpler?

Hi Tom
Thanks for the detailed response.
Although HAP technically is agnostic of the container, it might be good to have official cross platform support for the most popular container (i.e. MOV).
ideally there would be prebuilt library which itself links libavcodec but isolates it from the users project, and provides functions for accessing frames, e.g.:
HapFile * hapOpenFile(const char * filename);
HapStatus hapCloseFile(HapFile *);
HapStatus hapGetFileInfo(HapFile *, HapFileInfo * out); // number of frames, frame rate, any metadata
HapStatus hapGetFrame(HapFile *, size_t frameIndex, HapFrame * out); // width, height, data (DXT), size, format. Thread safe so can get multiple frames simultaneously
HapStatus hapReleaseFrame(HapFrame *);

I'm typing this on my phone so not very fine tuned (bit of a mix of C and C++ there). But that kind of API would be amazing

Any thoughts on that type of implementation?

I'm using hap on windows with in an AVI container works well and it works
with touch designer.
AFAIK the ffmpeg group have no intention on adding hap support. So I've
written my own c# (almost pure c#) version of hap. using the Managed
Squish, SnappyPI and c++/CLI wrapper i wrote for DirectXTex.
I hope i'll find the time to share the code on github and the next few
weeks..
if anyone is interested, you can contact me.
On Thu, Jul 28, 2016 at 12:36 PM, Elliot Woods<EMAIL_ADDRESS>wrote:

Any thoughts on that type of implementation?
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
https://github.com/Vidvox/hap/issues/16#issuecomment-235847427, or mute
the thread
https://github.com/notifications/unsubscribe-auth/AJifNDQrsS33KRdWPKGA69I3WwFu36sCks5qaHg1gaJpZM4JHq9D
.

Sure @elliotwoods it would be useful, however I think generally people are interested in supporting other codecs as well, so using eg libavformat fits in to existing workflows better than having an entirely distinct code path for Hap.
There probably should be sample code for optimal Hap playback with libavformat - that sample code would probably provide roughly the API you describe.
Any sample code for any platform is very welcome, and we can link to it from the README here.

@ItayGal2 FFMPEG supports HAP:
https://github.com/FFmpeg/FFmpeg/blob/master/libavcodec/hap.h
I think the command ends up something like: ffmpeg -i test.mp4 -vcodec hap -format hap_q out.mov
@bangnoise regarding libavcodec: I've taken a stab at integration with libavcodec on a couple occasions, and it's always turned into a nightmare. Might be I was going at it the wrong way. I think, however, that a custom player could also open the possibility for some features that would be helpful to Hap users. Opened another discussion on that: #17.
Regarding workflow: I think the Hap user base is unusual enough that a player with only Hap support could be usable. Right now I'm using Davinci Resolve to output DNxHR, and transcoding that with FFMPEG to MJPEG because I've been having difficulty getting Hap working (and I'm on a time crunch at the moment). I've never had a project where I wanted performance enough to justify Hap, but couldn't also ensure that all content got transcoded to Hap. Just saying universal codec/container support maybe isn't so important.

To note
This works well for me
ffmpeg -framerate 60 -f image2 -i %07d.png -vcodec hap -chunks 16 hap.mov
A common use of HAP is a mono-codec world (eg the project spec requires a codec with performance X so the whole tool set will be designed with that in mind). I understand that's not the universal case but it's definitely the one for me :)! (eg also I presume every Windows software which implements GPU accelerated HAP has some kind of dedicated pipeline for HAP video, so it would be amazing to have an officially provided solution for this).
As mentioned by @heisters
Linking / including libavcodec or ffmpeg against existing projects is insurmountable for many developers (I avoid it at all costs, and when I do need it, it can take more than 1 day to setup correctly, especially when using features which aren't always in the most available builds of libavcodec, eg HAP).
The way I'd implement it, is to isolate libavcodec from the user entirely, eg libhap only includes libavcodec in cpp's so not passed through to user's h files through includes, distribute a prebuilt lib / header for 'libhap' and dynamic libraries for libavcodec, and ideally consider that the user might want the option to use libavcodec directly also (but that most of the cases they wouldn't want to even know it existed).

This gets into the conversation I moved over to #17, but, @elliotwoods, what about only supporting a single container format so that you don't even need libavcodec? OGG is unencumbered, and probably an easier dependency than libavcodec, or one could even write a simple container parser from scratch--say MPEG (except that has patent issues). I think it is important that it be a container that FFMPEG could write to, otherwise some dirt-simple format like an MJPEG stream or a tar file might even make sense for these purposes.

OGG sounds good, but it's a bit late in the game to switch from MOV, so I'd suggest discussing with all the companies who've already invested time in supporting HAP and ask them what they think (eg VJ software and media servers)
The main advantage of MOV is that you can compress direct from many applications (when on OSX), right?

Yeah, I guess I wasn't considering OGG as a replacement for MOV, but just an alternative to support a slimmed-down HAP-specific player library. MOV is certainly preferable for its ubiquity. Another alternative might be extracting just the MOV parsing from libavcodec. I tried that a while back, and it seemed like a pretty involved job. Writing a custom MOV parser is a bit of work, but is probably doable, especially if all it needs to do is rip frames out and pass them to the HAP decoder.

This all seems a lot of effort to avoid using ffmpeg, which is not as bad as all that. I'm going to use ffmpeg as the basis of a project soon and will put out some demo code at the same time.
If any of you are insane enough to write your own demuxer and decoder for Hap, I'd recommend sticking with .mov for interaction with other toolsets - and a lot of long nights with that enjoyable tome The QuickTime File Format await you.
You would probably be well advised to start out writing a codec-agnostic demuxer (which will be the bulk of your work, and a lot of work), and then combine that library and a simple Hap decoder.

An example with ffmpeg would be amazing
A library which does what I mentioned above (random access hap frames, isolate ffmpeg from user's code with an airlock) would be perfect
Examples for that library performing multi-threaded pre-cached playback to OpenGL and DirectX would be 'job done'
( presuming out of the box cross-platform)

Agreed, if libavformat is straightforward it's way better than my janky and crazy approach ;)
I need to start work on this component sometime in the coming weeks. Even if your work is not ready as a sample, if you're able to push it to GitHub, I'd love to fork it and work on it myself. If you're on a slower timeline, I'll take a stab at this approach and throw it up somewhere in case it's useful to you.

@bangnoise I took a quick stab at this, but am unsure of the best way to include FFmpeg as a dependency. Attempting to include and compile the code directly within my project is problematic because, from what I can tell, FFmpeg expects a GNU C99 compiler (I'm trying to compile with LLVM C++11), and moreover it requires a lot of platform-specific configuration. It might be the best approach to use a system-installed FFmpeg, given that between homebrew, apt, and chocolatey, there are decent compilation scripts for Mac, Linux, and Windows. But that hardly hides the dependency from the user. What did you have in mind?

Building and packaging any library for a specific platform is well beyond the scope of this issue. FFMPEG is reasonably well documented as far as building it goes. I suggest you carefully follow its documentation to build it, and then use the usual platform-appropriate methods to link and (where necessary) bundle it with your software.

I threw together a quick MP4/MOV Hap + MJPEG player here: https://github.com/heisters/libglvideo
Should compile on Windows, but I haven't tried it yet. Will get that working tomorrow.


Alignment of let bindings

Hi!
I really like what rustfmt is doing, however, one thing hurts me strongly here. It allows the vertical alignment of struct fields, but does not allow for such alignment of let bindings. Consider the following code:
impl Scene {
    fn new() -> Result<Scene, Error> {
        let doc = document()?;
        let canvas = doc.get_element_by_id("canvas").ok_or(DOMError::missing("canvas"))?;
        let data = Rc::new(SceneData { canvas, context });
        let data_weak = Rc::downgrade(&data);
        ....
    }
}

I believe it is much nicer to read the following code:
impl Scene {
    fn new() -> Result<Scene, Error> {
        let doc       = document()?;
        let canvas    = doc.get_element_by_id("canvas").ok_or(DOMError::missing("canvas"))?;
        let data      = Rc::new(SceneData { canvas, context });
        let data_weak = Rc::downgrade(&data);
        ....
    }
}

Would it be possible to add some treshold option to rustfmt for such a style? :)

Checking in on this almost-1-year-old feature request:

what's the feasibility this gets implemented in the near(ish) future?
can anyone provide specific pointers on where/how I (or my team) can contribute (for this feature)?

In any case, many thanks to all the project contributors, we significant-appreciate their efforts.
[ @topecongiro @calebcartwright ]

@johnnyutahh thank you for the question and kind words!

what's the feasibility this gets implemented in the near(ish) future?

To be fully transparent, this is a really low priority for the rustfmt team. That doesn't mean we're opposed to potentially supporting this, it's just a matter of the limited resources/bandwidth and priorities.
Remember that rustfmt's primary purpose is to reformat code according to the Rust Style Guide, and the style support requested here is very divergent from the Style Guide. There's a lot of open bugs/feature requests/etc. (many of which have been open longer than this one) that are related to the Style Guide and/or have a lot more community demand, so those backlog items as well as the general work related to the ongoing maintenance and support of rustfmt take priority, and occupy the bulk of the limited bandwidth that we have.
We'd certainly be happy to take a look at and consider any community submitted PRs that implemented optional support for this type of style with a configuration option, but it's highly unlikely that we'll get to it ourselves. Given the strong divergence from the official code style, we'd also have to weigh the overhead added by the hypothetical code required to support this style.

can anyone provide specific pointers on where/how I (or my team) can contribute (for this feature)? eg: the specific file/module location for suggested review+edits?

The formatting logic that handles these local statement kinds can be found in src/formatting/items.rs. However I think there'd probably be a need to define the parameters a bit to account for all the potential use cases and scenarios (exceeding max width, rhs expresion being moved to the next line, impact of comments, etc.).
I haven't really thought through what it would take to implement such a style, but I suspect it may require an intrusive code change. Seems like it'd probably require inspecting the in-scope statements to determine the longest pattern for determining the infix spacing, and then using that spacing for the infix instead of the current/default of one space.
Some places in the codebase that may be of interest for this:
https://github.com/rust-lang/rustfmt/blob/4e72871510a3a3487e67e1e3a453efcb855c2ea2/src/formatting/items.rs#L49
https://github.com/rust-lang/rustfmt/blob/4e72871510a3a3487e67e1e3a453efcb855c2ea2/src/formatting/stmt.rs#L77
https://github.com/rust-lang/rustfmt/blob/master/src/formatting/visitor.rs#L118

Your thorough writeup is super-duper helpful @calebcartwright. If we can contribute anything we will message back here.
Big thanks again.


Add new ContactExpandableGroup block to LearnPages

This change introduces a new StreamField block named ContactExpandableGroup, and adds it as an option on LearnPages. See GHE/el-camino#21 for background on motivations for this change; this will make it easier to support the site Contact Us page. Ping @sonnakim.
This branch has been deployed to our internal DEV3 testing server, and can be viewed in action at DEV3/about-us/contact-us/.
Additions

New ContactExpandableGroup organism that renders similarly to regular ExpandableGroups, except that the content gets auto-filled from Contact snippets instead of from manual user input.

Changes

A new option has been added to ExpandableGroup, which wraps the entire organism in a <div> with an id based on the slugified header. This allows for in-page linking to a specific ExpandableGroup. I've left this disabled by default. Question for @anselmbradford @Scotchester: any issues with adding the plain <div> to all EGs even if this is disabled?
I've modified the Contact snippet so that it always sorts by heading by default, which seems reasonable and prevents us from needing to manually specify it each time.

Testing

See new unit tests, run tox.
Try creating a LearnPage and adding a ContactExpandableGroup block.

Screenshots
New "Contact expandable group" block available on LearnPages:

Wagtail editing interface:

Checklist

[x] PR has an informative and human-readable title
[x] Changes are limited to a single goal (no scope creep)
[x] Code can be automatically merged (no conflicts)
[x] Code follows the standards laid out in the CFPB development guidelines
[x] Passes all existing automated tests
[x] Any change in functionality is tested
[x] New functions are documented (with a description, list of inputs, and expected output)
[x] Placeholder code is flagged / future todos are captured in comments
[x] Visually tested in supported browsers and devices (see checklist below :point_down:)
[ ] Project documentation has been updated
[x] Reviewers requested with the Reviewers tool :arrow_right:

A new option has been added to ExpandableGroup, which wraps the entire organism in a <div> with an id based on the slugified header. This allows for in-page linking to a specific ExpandableGroup.

I would've just added it to the <h3> tag, rather than introducing a new wrapping <div>, but there's nothing inherently wrong with the approach you took.

I've left this disabled by default. Question for @anselmbradford @Scotchester: any issues with adding the plain <div> to all EGs even if this is disabled?

No concern with doing that. I would go even further and fulfill my dream of having middleware that adds a slugified ids to all rendered heading elements on the site 😀

It would be nice to move this into wagtail groups for expandables, since it doesn't begin with expandable https://github.com/cfpb/cfgov-refresh/pull/5236


Driver and Modules Version Update

Is this a new chart?
No
What this PR does / why we need it:
This PR upgrades the driver and module versions
Which issue(s) is this PR associated with:

https://github.com/dell/csm/issues/1091

Special notes for your reviewer:
Checklist:
[Place an '[x]' (no spaces) in all applicable fields. Please remove unrelated fields.]

[x] Chart Version bumped
[ ] Variables are documented in the chart README.md
[ ] Title of the PR starts with the chart name (e.g. [charts_dir/mychartname]) if applicable

@rishabhatdell : Those changes will not impact modules much, awaiting confirmation, will update the comment based on confirmation

@shanmydell any updates on modules?


Ec2 and Elb pipeline files and Jenkins LTS repo default updates

This pull request adds the EC2 and ELB pipeline files to supplement the Infra pipeline job for the Jenkins Master. This also updates the default GPG key and repo URL for Jenkins LTS.
This has been successfully tested.

Looks like GitHub says all the referenced lines of code have been updated.


typing conlfict: store VueStore

I get the following error:

Subsequent variable declarations must have the same type.  Variable 'store' must be of type 'VueStore<any, any, any, any> | undefined', but here has type 'Store | undefined'.

It seems that the sinai VueStore Interface is conflicting with the vue Store interface
I am using nuxtjs. This might play a role.

Well, this is because you are loading both Vuex and Sinai in your app.
I'm not sure we can fix it in Sinai since using both of them seems invalid situation.

Looks like Nuxt.js core is coupled with Vuex so you should not use Sinai in Nuxt application.
If you want to use Sinai with SSR, you should create your own server.


[BEAM-3934] Use try with resources to close the reader on JavaReadViaImpulse

R: @lukecwik

Run Python_PVR_Flink PreCommit

Run Python_PVR_Flink PreCommit

It seems the class of the container used by "Run Python_PVR_Flink PreCommit" is not getting updated and this is breaking the tests. Any hint on why this is happening @robertwb ?

I have no idea. It should be taking these on as a dependency. Maybe it's pulling an old cache from somewhere?

Mmm I am worried to merge and then breaking all tests after, anyone who may know/fix this ?

@angoenka maybe?

I think the failure is caused by missmatch in class version of Flink Job Server and Extension service.
Checking how we build the extension service

seems like we are not rebuilding the java container which is required now as we run java transforms while in python tests.
Jira: https://issues.apache.org/jira/browse/BEAM-7422

However, on a side note. This highlights that the containers are shared across tests in a machine.
Their is a race condition when multiple tests runs on on machine building container and can be a cause of flakiness.

Run Python_PVR_Flink PreCommit

Thanks a lot @angoenka for creating the related issue and for the quick fix.
What could be done to address the possible flakiness issue?


Toaster Notifications

They are called "toast" notifications, not "toaster" ;)
https://ux.stackexchange.com/questions/11998/what-is-a-toast-notification


Display information about the Java run-time and compiler

The Java runtime (java) and Java compiler (javac) are used during the Oracle Tools Maven runs. Sometimes this leads to errors so it is good to display them just like mvn, perl and sql.

Checking java and javac has been added.


raiboss: e12s oracle prevent adv yellow tethers check trigger during basic

After reviewing some OverlayPlugin debug output, I noticed E12S Adv Relativity Hourglass Collect Yellow Tethers errors like TypeError: Cannot read property '...' of undefined (Source: webpack://cactbot/./ui/raidboss/popup-text.js?, Line: 84). This happened to be caused by the tethers appearing in Basic Relativity that I overlooked which activate the trigger.

Thanks!

Thanks!


Losing network connection on server and speedtest fails

Describe the bug
Every time a speedtest runs (both manual and scheduled) my server seemingly loses network connection for a couple of seconds. I haven't been able to confirm if I lose network connection altogether, but I believe that I do, because I lose connection to both my Minecraft server and my VSCode remote SSH session at the same time.
This has been an issue for a while, but I'm unsure when it first happened. It could've started an update, but that I can't confirm.
The data logs in the web-UI mention using the path /root/.config/ookla/speedtest-cli.json, but I checked the /root path in the container, and there wasn't any files there.

docker-compose.yml
# SPEEDTEST-TRACKER
  speedtest-tracker:
    container_name: speedtest-tracker
    environment:
      - PUID=$PUID
      - PGID=$PGID
      - DB_CONNECTION=mysql
      - DB_HOST=mariadb
      - DB_PORT=3306
      - DB_DATABASE=speedtest_tracker
      - DB_USERNAME=speedtest
      - DB_PASSWORD=$SPEEDTEST_DB_PASSWORD
      - MAIL_HOST=$MAIL_HOST
      - MAIL_PORT=$MAIL_PORT
      - MAIL_USERNAME=$MAIL_USERNAME
      - MAIL_PASSWORD=$SPEEDTEST_MAIL_PASSWORD
      - MAIL_FROM_ADDRESS=$MAIL_USERNAME
    volumes:
      - $DATA/speedtest-tracker:/config
    labels:
      - traefik.enable=true
      - traefik.http.services.speedtest-tracker.loadbalancer.server.port=443
      - traefik.http.services.speedtest-tracker.loadbalancer.server.scheme=https
      - traefik.http.routers.speedtest-tracker.rule=Host(`speedtest.$DOMAIN`)
    image: ghcr.io/alexjustesen/speedtest-tracker:latest
    restart: unless-stopped
    depends_on:
      - mariadb
    networks:
      - default-network

To Reproduce
Steps to reproduce the behavior:
Just use the docker compose, and run a speedtest or wait for the scheduled one.
Environment (please complete the following information):

OS: Ubuntu
Architecture: amd64
Browser: N/A
App version: 0.14.0

Screenshots

Logs

Docker container logs
2023-12-20T09:18:16.920139305Z [2023-12-20 09:18:16] production.ERROR: absoluteDownloadThresholdFailed(): Argument #2 ($download) must be of type float, null given, called in /var/www/html/app/Listeners/Threshold/AbsoluteListener.php on line 117 {"exception":"[object] (TypeError(code: 0): absoluteDownloadThresholdFailed(): Argument #2 ($download) must be of type float, null given, called in /var/www/html/app/Listeners/Threshold/AbsoluteListener.php on line 117 at /var/www/html/app/helpers.php:37)
2023-12-20T09:18:16.920177731Z [stacktrace]
2023-12-20T09:18:16.920182909Z #0 /var/www/html/app/Listeners/Threshold/AbsoluteListener.php(117): absoluteDownloadThresholdFailed()
2023-12-20T09:18:16.920186384Z #1 /var/www/html/app/Listeners/Threshold/AbsoluteListener.php(56): App\\Listeners\\Threshold\\AbsoluteListener->mailChannel()
2023-12-20T09:18:16.920190152Z #2 /var/www/html/vendor/laravel/framework/src/Illuminate/Events/CallQueuedListener.php(107): App\\Listeners\\Threshold\\AbsoluteListener->handle()
2023-12-20T09:18:16.920193511Z #3 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\Events\\CallQueuedListener->handle()
2023-12-20T09:18:16.920197124Z #4 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Util.php(41): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
2023-12-20T09:18:16.920200460Z #5 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\\Container\\Util::unwrapIfClosure()
2023-12-20T09:18:16.920203733Z #6 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\Container\\BoundMethod::callBoundMethod()
2023-12-20T09:18:16.920206908Z #7 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(662): Illuminate\\Container\\BoundMethod::call()
2023-12-20T09:18:16.920210101Z #8 /var/www/html/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(128): Illuminate\\Container\\Container->call()
2023-12-20T09:18:16.920221682Z #9 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\\Bus\\Dispatcher->Illuminate\\Bus\\{closure}()
2023-12-20T09:18:16.920225342Z #10 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
2023-12-20T09:18:16.920229756Z #11 /var/www/html/vendor/laravel/framework/src/Illuminate/Bus/Dispatcher.php(132): Illuminate\\Pipeline\\Pipeline->then()
2023-12-20T09:18:16.920233016Z #12 /var/www/html/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(123): Illuminate\\Bus\\Dispatcher->dispatchNow()
2023-12-20T09:18:16.920236330Z #13 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(141): Illuminate\\Queue\\CallQueuedHandler->Illuminate\\Queue\\{closure}()
2023-12-20T09:18:16.920239748Z #14 /var/www/html/vendor/laravel/framework/src/Illuminate/Pipeline/Pipeline.php(116): Illuminate\\Pipeline\\Pipeline->Illuminate\\Pipeline\\{closure}()
2023-12-20T09:18:16.920243185Z #15 /var/www/html/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(122): Illuminate\\Pipeline\\Pipeline->then()
2023-12-20T09:18:16.920246380Z #16 /var/www/html/vendor/laravel/framework/src/Illuminate/Queue/CallQueuedHandler.php(70): Illuminate\\Queue\\CallQueuedHandler->dispatchThroughMiddleware()
2023-12-20T09:18:16.920254628Z #17 /var/www/html/vendor/laravel/framework/src/Illuminate/Queue/Jobs/Job.php(102): Illuminate\\Queue\\CallQueuedHandler->call()
2023-12-20T09:18:16.920258130Z #18 /var/www/html/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(439): Illuminate\\Queue\\Jobs\\Job->fire()
2023-12-20T09:18:16.920261406Z #19 /var/www/html/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(389): Illuminate\\Queue\\Worker->process()
2023-12-20T09:18:16.920264635Z #20 /var/www/html/vendor/laravel/framework/src/Illuminate/Queue/Worker.php(176): Illuminate\\Queue\\Worker->runJob()
2023-12-20T09:18:16.920267814Z #21 /var/www/html/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(137): Illuminate\\Queue\\Worker->daemon()
2023-12-20T09:18:16.920270955Z #22 /var/www/html/vendor/laravel/framework/src/Illuminate/Queue/Console/WorkCommand.php(120): Illuminate\\Queue\\Console\\WorkCommand->runWorker()
2023-12-20T09:18:16.920274276Z #23 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(36): Illuminate\\Queue\\Console\\WorkCommand->handle()
2023-12-20T09:18:16.920277495Z #24 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Util.php(41): Illuminate\\Container\\BoundMethod::Illuminate\\Container\\{closure}()
2023-12-20T09:18:16.920280869Z #25 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(93): Illuminate\\Container\\Util::unwrapIfClosure()
2023-12-20T09:18:16.920284379Z #26 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/BoundMethod.php(35): Illuminate\\Container\\BoundMethod::callBoundMethod()
2023-12-20T09:18:16.920287656Z #27 /var/www/html/vendor/laravel/framework/src/Illuminate/Container/Container.php(662): Illuminate\\Container\\BoundMethod::call()
2023-12-20T09:18:16.920290872Z #28 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Command.php(211): Illuminate\\Container\\Container->call()
2023-12-20T09:18:16.920294048Z #29 /var/www/html/vendor/symfony/console/Command/Command.php(326): Illuminate\\Console\\Command->execute()
2023-12-20T09:18:16.920297235Z #30 /var/www/html/vendor/laravel/framework/src/Illuminate/Console/Command.php(180): Symfony\\Component\\Console\\Command\\Command->run()
2023-12-20T09:18:16.920300528Z #31 /var/www/html/vendor/symfony/console/Application.php(1096): Illuminate\\Console\\Command->run()
2023-12-20T09:18:16.920303663Z #32 /var/www/html/vendor/symfony/console/Application.php(324): Symfony\\Component\\Console\\Application->doRunCommand()
2023-12-20T09:18:16.920306994Z #33 /var/www/html/vendor/symfony/console/Application.php(175): Symfony\\Component\\Console\\Application->doRun()
2023-12-20T09:18:16.920310182Z #34 /var/www/html/vendor/laravel/framework/src/Illuminate/Foundation/Console/Kernel.php(201): Symfony\\Component\\Console\\Application->run()
2023-12-20T09:18:16.920313384Z #35 /var/www/html/artisan(35): Illuminate\\Foundation\\Console\\Kernel->handle()
2023-12-20T09:18:16.920316606Z #36 {main}
2023-12-20T09:18:16.920319510Z "}

So production.ERROR: absoluteDownloadThresholdFailed() is related to #881, currently there's a bug where it tries to assess sending a notification when there is no result.
It's interesting how your network is dropping connection when a speedtest is run... Can you try the following steps and let me know the outcome? Also looking for logs that don't reference the download threshold from above.

Open the container's terminal to run commands
Run speedtest --accept-license, this will trigger the Speedtest CLI
This should run in the terminal with download and upload outputs

I've disabled the threshold.
CLI command
When I tried running the CLI command. After running the command it seems to work fine for the first couple of percent (the first time it stopped at 4% and the 2nd at 8%):

But then it suddenly stops, I temporarily lose connection to the server, and the CLI output says Cannot open socket:

Manual run from web
I got the same message as before when manually running a speedtest from the web-UI.

The docker container logs doesn't mention anything about the run now that the threshold is disabled. The only things in the container logs are the requests for the admin panel from my browser, so no errors there.

The docker container logs doesn't mention anything about the run now that the threshold is disabled. The only things in the container logs are the requests for the admin panel from my browser, so no errors there.

This is good at least from my app's stand point this means the error isn't there. Are you able to run speedtests in the browser without your connection dying?

Yeah, the network test via speedtest.net works just fine, with expected speeds.

I think I'll try with another docker network config, but if you have any suggestions I'll be happy to test anything.

Yeah this is a new one, after changing the docker network I'd also try searching the logs on your host machine and your router to see if any clues might be there.
I'm going to transfer this issue to a discussion so please keep the updates coming on your findings and I'll open a new issue if we can target something concrete.


Colorful

Adds options for button color and background-color
Derived from https://github.com/suda/tool-bar/pull/21

Could you review this? @suda

Hi @aminya I'm currently away for two weeks and unable to test it. Is it ok if I to it after I'm back?

Hi @aminya I'm currently away for two weeks and unable to test it. Is it ok if I to it after I'm back?

Yes sure! Thanks

Implementation looks good, I have some comments (mainly about the documentation) to improve the Pull Request 👍
Ps. you may consider adding your contributions to the CHANGELOG

All are fixed in https://github.com/suda/tool-bar/pull/278/commits/1f0e0bbc445a1f00fd0525ffcaa1400514dca5d6. Thanks for the comments.

Thanks for the review Eric! Merging in :)


In "Find in files" add a small X similar to other input fields, it's the only field you need to backspace to erase

Very simple, add to the "Find in files" input field a small X similar to other input fields,
it's the only field you need to backspace to erase, That way we can clear the input field with one click instead of a long backspace press.

This one? You can click the "Clear Search Results" button:

I don't know from which part of the application this is, for me clicking Ctrl+Shift+F Looks like this.

In your screenshots there seems to be buttons underneath "Clear Search Results", and it's not located properly (part of the input box border is hidden).
Are you sure it's not an extension that is adding it for you?

@yaronelh it's the same thing. I just moved it to the secondary side bar. But it's exactly the same as what you're looking at.

In your screenshots there seems to be buttons underneath "Clear Search Results", and it's not located properly (part of the input box border is hidden).

Those are the same buttons you see... the Aa, ab and .* buttons. They are just under the tooltip of the "Clear Search Results" button (which is what I'm trying to show you).
This is part of VS Code, not an extension. Have you located the button for "Clear Search Results"? It's the one with lines and a small cross at the corner, in BOTH screenshots (yours and mine).

This one:

I see it,,

They implemented it outside of the input box 👍

Makes sense to me because it clears the search results as well as the input box. 🤷


Inconsistent state after barplot errors

This is a small weird problem that nonetheless makes the UI look weird:

The problem is caused by setting the barplots to something invalid (e.g. trying to use continuous coloring with a categorical field, as shown in the GIF above), and then -- rather than fixing the error -- going and doing something else (e.g. changing the layout parameters).
What happens is the barplot state hasn't been reset to something that at least works, so -- although the canvas is changed -- I think what happens is stuff is bailed out of before draw() is called. This results in the weird scenario where the tree remains unchanged until the user does something like zooming or panning, as shown in the GIF above.
Some ways we could fix this:

Detect when an error is thrown when trying to draw barplots (and, alternatively, when barplots are drawn successfully), and update an Empress (?) class-level boolean variable named barplotsBroken or something like that. Then, only call Empress.drawBarplots() from Empress.reLayout() if barplotsBroken isn't true. (Pressing the barplot panel Update button calls Empress.drawBarplots() directly, which gives us the chance to un-break the barplots.)

Instead of throwing an error, immediately modify the barplot UI to automatically "fix" any erroneous settings and then use that -- e.g. uncheck the continuous values box, as is done in #484. (I think this would be difficult to implement smoothly for barplots, since there are more ways these can cause errors and messing with the UI automatically here might get confusing/annoying for users...)

I think the first option would be best, and shouldn't be too difficult to implement.

A broader solution would be to make redrawing events limited in their scope of what they can redraw, right? So if we are re-doing layout we shouldn't recompute the barplot data, unless the "update barplot" button is pressed. Any thoughts?

On Jun 11, 2021, at 7:59 PM, Marcus Fedarko @.***> wrote:
This is a small weird problem that nonetheless makes the UI look weird:
The problem is caused by setting the barplots to something invalid (e.g. trying to use continuous coloring with a categorical field, as shown in the GIF above), and then -- rather than fixing the error -- going and doing something else (e.g. changing the layout parameters).
What happens is the barplot state hasn't been reset to something that at least works, so -- although the canvas is changed -- I think what happens is stuff is bailed out of before draw() is called. This results in the weird scenario where the tree remains unchanged until the user does something like zooming or panning, as shown in the GIF above.
Some ways we could fix this:
• Detect when an error is thrown when trying to draw barplots (and, alternatively, when barplots are drawn successfully), and update an Empress (?) class-level boolean variable named barplotsBroken or something like that. Then, only call Empress.drawBarplots() from Empress.reLayout() if barplotsBroken isn't true. (Pressing the barplot panel Update button calls Empress.drawBarplots() directly, which gives us the chance to un-break the barplots.)
• Instead of throwing an error, immediately modify the barplot UI to automatically "fix" any erroneous settings and then use that -- e.g. uncheck the continuous values box, as is done in #484. (I think this would be difficult to implement smoothly for barplots, since there are more ways these can cause errors and messing with the UI automatically here might get confusing/annoying for users...)
I think the first option would be best, and shouldn't be too difficult to implement.
—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub, or unsubscribe.

I agree that that'd be ideal. There are some complications in practice due to how the code is structured, though: with the example of layouts and barplots, in order for us to re-draw the tree in a new layout, we need to also re-draw the barplots (since we can't use the same barplot coordinates for the circular and rectangular layouts). And in order to re-draw the barplots, we need to look at the current barplot state: and where things start to get messy is that adjusting the UI of the barplot layers (e.g. adding a new layer, changing a dropdown, etc) adjusts the state of the corresponding BarplotPanel / BarplotLayer objects. So the state of the barplot objects can and will get out of sync from what is actually shown in the display.
One way around this (and, I guess, option number 3 of solving this issue) is adjusting the barplot stuff so that the state is cached when Update is pressed (so that intermediate changes to the barplot UI don't take effect)... but I'm not sure how easy that'd be.
(Option number 4 would be just ditching the barplot update button entirely, but since drawing barplots for massive trees can take a while I'd prefer to avoid that for the time being...)


removed unused code

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

7 of 7 (100.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.01%) to 98.961%

Totals

Change from base Build<PHONE_NUMBER>:
0.01%

Covered Lines:
16385

Relevant Lines:
16557

💛  - Coveralls


(PUP-9726) Refactor symbolic_modes test

This PR refactors the symbolic_modes acceptance test to reduce the number of discrete beaker system calls to perform its task.
Prior to this change, this test took 50.20 seconds to execute.  With this change, the test time is reduced to 24.30 seconds.

CLA signed by all contributors.


Adjusting Date/Time after booting into Windows breaks rendering

This may be a hyper edge case, this may be the thread that unravels a thousand other problems, who knows?
But it's probably an edge case.
Basically, I run on a dual-boot system, running Windows 10 primarily, with the ability to boot into an Arch Linux build set up on another disk drive.
After booting into Windows from spending time in Linux, the date/time is incorrect (it is set to UTC, because for some unknown reason Windows assumes the system time is local time, and linux correctly sets the system time to UTC, so Windows will display UTC as the date/time after booting back from Linux).
If the 117HD Plugin is enabled in RuneLite and you sync the Date/Time, the plugin breaks and displays a mostly black (or mostly white) screen with shadows of game objects moving around.
See below:

This issue is only remedied by restarting RuneLite.
TURNING 117HD PLUGIN OFF AND ON DOES NOT RESOLVE ISSUE
Reproduce steps:

Boot system into Linux.
Do stuff.
Restart system, this time booting into Windows.
Notice datet/time in system is set to UTC.
Right click date/time in taskbar, click 'Adjust date/time', click 'Sync Now'
117HD Plugin appears to crash/have trouble properly rendering anything

Fix: Restart runelite, notice issue no longer persists.
RuneLite Version: 1.8.2
Oldschool Revision: Rev201
Launcher version: 2.1.3

Hey, FYI you can fix this by forcing windows to use UTC, check this section of the arch wiki
https://wiki.archlinux.org/title/System_time#UTC_in_Microsoft_Windows


Add basic contribution documentation

cc @chef/lob

:+1: pending a little cleanup per the inline comments.

:+1: post cleanup


[entropy_src] Interrupt behavior when conf.entropy_data_reg_enable == 0

When conf.entropy_data_reg_enable == 0, how should the interrupts behave?  Should they fire constantly once the FIFO is loaded?
Reads should return 0, but should the prim_packer_fifo then be emptied once data is read from it?
In this state,  u_prim_packer_fifo_swread can currently be filled by seeds, but reads to entropy_data return 0 and nothing is ever removed from the FIFO.   This means that this interrupt cannot be cleared until the DUT is disabled.
Given that this is meant to be a restricted (non-useful) use case, this does not seem like a serious problem.  However it is worth asking if this behavior is as intended.

@martin-lueker @mwbranstad
i think if data_reg_enable is disabled (or if the fuse overrides it to disabled), then it's reasonable for software also to mask off that interrupt since it no longer has a purpose.
However, having said that, we usually try to avoid tying "empty" directly to an interrupt if we can.  Ie, we try to tie the event of something going from empty->non-empty instead of just non-empty always. Precisely to avoid the potential interrupt storming.
@eunchan has a good example here

After re-visiting this logic, it seems that the data_reg_enable was intended to simply disable this function (and there is otp enable as well). In this state, I would never expect an interrupt to trigger. The issue that I see is that the fifo can accept entries even when disabled, so that probably puts the fifo in an unexpected state, with the status/intr bit setting when full. This was definitely not the  intent of the operation. I can see adding a change to gate the push logic such that neither of these two cases ever happen.

However, having said that, we usually try to avoid tying "empty" directly to an interrupt if we can. Ie, we try to tie the event of something going from empty->non-empty instead of just non-empty always. Precisely to avoid the potential interrupt storming.
@eunchan has a good example here

This is a useful solution!  It could be nice long term to apply something like this to the Observe FIFO also.
In such cases though I think we would also want to have separate status bits, from the interrupt bits. Right now the interrupt status bit is the only way to determine that there has been data in these FIFO (entropy_data and observe), and this is clunky to say the least.

maybe not. If this fifo is disabled, so should the associated interrupt. the only enhancement is to keep status clean "under the hood".

yeah, it's fine to place it in the programmer's model to say "if feature disabled, also diasble interrupt".
And leave the rest to a future enhancement.
The future enhancement, in my mind, would be disabling the interrupt event altogether if the feature is not turned on, and to change the interrupt event to pulse instead of level.
If you guys are okay making a "fix" based on that, it would probably be the preferred approach.

I was thinking we should add a one gate change and disable the fifo push, which will turn all of the noise off.

that sounds good too! but what happens if you disable it after having enabled it? :)
the fifo might already be non-empty hehe.  I think maybe gating the empty event would still be needed (unless you also use the the disable to clear the FIFO, which would work too).

i like the later idea. keep all things quiet when disabled.

that sounds good too! but what happens if you disable it after having enabled it? :) the fifo might already be non-empty hehe. I think maybe gating the empty event would still be needed (unless you also use the the disable to clear the FIFO, which would work too).

This switch cannot be changed while the device is enabled, and IIRC the queue is automatically purged when the module is disabled (Mark can you confirm?).   So I think this may be a non-issue.

just confirmed, if module enable is on, this bit cannot be changed. when module enable is off, all fifos will reset., so that narrows the number of scenarios.

ah that sounds good. So it gets locked. So maybe preventing push like you said Mark is more than enough.


Add Read the Docs documentation

The title says it all. It will also include benchmarking results produced by Issue #53.

The implementation of this feature has been done in version 5.0.0.


META-INF/library_release.kotlin_module

More than one file was found with OS independent path 'META-INF/library_release.kotlin_module'
Because you use function extension Kotlin auto creates the META-INF/_release.kotlin_module file.  This conflicts with every other project that uses library. If this file is excluded function extensions will not work. See https://blog.jetbrains.com/kotlin/2015/09/kotlin-m13-is-out/
The compileKotlin option doesn't work.  The simplest way to fix it is to rename the library folder (We have had to go through all of our libraries and rename the library directory to fix this issue).

I'm seeing this issue too

@hansenji ah, I see, good point! I will rename it ASAP :)

btw @hansenji I found a way to avoid renaming the project!

@Takhion That fix is great thanks. Made my projects a lot nicer.


Install Packages does not work on Windows

Description
Install fails. You should test your stuff on a normal persons computer, not your dev workstation, to ensure your stuff isn't depending on whatever dev bloatware you've got installed.
Steps to Reproduce

Install atom on windows
Install vim-mode
observe it fails

Expected behavior:
Should install, and activate (or tell me if I have to do something to use it)
Actual behavior:
Installing<EMAIL_ADDRESS>failed.Hide output…
npm ERR! tar.unpack error reading C:\Users\cnd.atom.apm\grim\0.12.0\package.tgz
npm ERR! Windows_NT 6.1.7601
npm ERR! argv "C:\Users\cnd\AppData\Local\atom\app-1.6.0\resources\app\apm\bin\node.exe" "C:\Users\cnd\AppData\Local\atom\app-1.6.0\resources\app\apm\node_modules\npm\bin\npm-cli.js" "--globalconfig" "C:\Users\cnd\.atom\.apm\.apmrc" "--userconfig" "C:\Users\cnd\.atom\.apmrc" "install" "C:\Users\cnd\AppData\Local\Temp\d-116222-1212-1uurtb5\package.tgz" "--target=0.34.5" "--arch=ia32" "--msvs_version=2012"
npm ERR! node v0.10.40
npm ERR! npm  v2.13.3
npm ERR! code EBADF
npm ERR! errno 9
npm ERR! EBADF, fstat
npm ERR!
npm ERR! If you need help, you may report this error at:
npm ERR!     https://github.com/npm/npm/issues
Versions
1.6.0

I can`t install the atom~. When I install AtomSetup.exe , it say : Does not support the 64 bit

the  lastest install package does n;t work on windows 10 x64. I download the package from the website:  http://atom.io。

@gitcnd: Are you getting this error with any other packages or just vim-mode?
@yangDL and @zhangnian The download has been tested on Windows 10 64-bit and I just tried it again without error. Can you take a screenshot of the exact error?

No response. Please re-open if you are still getting this error.