[MESH][v4.4] Node unable to connect to ROOT or AP on low ROOT RSSI (IDFGH-11397)

Answers checklist.

[X] I have read the documentation ESP-IDF Programming Guide and the issue is not addressed there.
[X] I have updated my IDF branch (master or release) to the latest version and checked that the issue is present there.
[X] I have searched the issue tracker for a similar issue and not found a similar issue.

General issue report
Hello @zhangyanjiaoesp .
This is a strange sidecase we found in our systems.
v4.4.6-103-g5daf5610b9
Setup

One hotspot
One device with WIFI and LTE (for now LTE not necessary). This device has a esp_wifi_set_max_tx_power set to 2dB (8)
One device with esp_wifi_set_max_tx_power set to 14dB

I currently have the hotspot put next to the device with 14dB.
The device with 2dB is put at 8 meters from the phone and the other device.
Powering:

Enable hotspot
Enable device with 2dB
Wait for 2dB device to connect to the hotspot. My device sees -63dB

network {
  mesh_layer: 1
  mesh_p_rssi: -63
  mesh_p_mac: 542
  modem_state: MODEM_ON_AT_READY
  modem_rssi: -200
}

Switch on device 14dB next to the hotspot (60cm away)

What i see:

The device starts looping between

W (573814) wifi:Haven't to connect to a suitable AP now!
I (574219) wifi:I (01:09:33.462) mesh_main: <MESH_EVENT_NO_PARENT_FOUND>scan times:60
mode : sta (7c:df:a1:e0:74:40)
W (01:09:33.464) mesh_hand: Perform NO PARENT FIXED ROOT handover 1 1
W (01:09:33.470) mesh_hand: Triggering FIXED ROOT handover
I (574234) wifi:mode : sta (7c:df:a1:e0:74:40) + softAP (7c:df:a1:e0:74:41)
W (574240) wifi:<MESH AP>adjust channel:11, secondary channel offset:2(40D)
I (574249) wifi:Total power save buffer number: 8

I (01:10:08.979) mesh_main: <MESH_EVENT_SCAN_DONE>number:26
W (01:10:08.981) mesh_hand: Triggering DYNAMIC MESH handover
W (609743) wifi:scan number is 0
W (01:10:08.988) mesh_hand: scan_done: found 0, fixed_root 0, has_parent 0
W (01:10:08.992) mesh_main: <MESH_EVENT_ROOT_FIXED>not fixed
W (01:10:08.998) mesh_hand: Triggering DYNAMIC MESH handover
I (623842) wifi:mode : sta (7c:df:a1:e0:74:40)
I (01:10:23.086) mesh_main: <MESH_EVENT_NO_PARENT_FOUND>scan times:60
I (01:10:27.300) mesh_main: <MESH_EVENT_FIND_NETWORK>new channel:11, router BSSID:000000000000

without ever connecting
no_connection.txt
Any help?
Thanks

i think we can forget about the "fixed root handover"
Once the device 14dB is back to dynamic search is not going to manage to find the hotspot, even if next to it, looping with the following logs:

I (112784) wifi:mode : sta (7c:df:a1:e0:74:40)I (01:01:52.028) mesh_main: <MESH_EVENT_NO_PARENT_FOUND>scan times:60, 2

I (01:01:52.067) processor: send status... (1000ms)
W (112824) wifi:Haven't to connect to a suitable AP now!
I (01:01:53.066) processor: send status... (1000ms)
W (113824) wifi:Haven't to connect to a suitable AP now!
I (01:01:54.066) processor: send status... (999ms)
W (114824) wifi:Haven't to connect to a suitable AP now!
W (01:01:55.066) monitor: 3W3P:: rule deactivated
I (116999) wifi:I (01:01:56.242) mesh_main: <MESH_EVENT_FIND_NETWORK>new channel:11, router BSSID:000000000000
mode : sta (7c:df:a1:e0:74:40) + softAP (7c:df:a1:e0:74:41)
W (117005) wifi:<MESH AP>adjust channel:11, secondary channel offset:2(40D)
I (117014) wifi:Total power save buffer number: 8
I (01:02:00.070) offline: object saved to PSRAM, free 522712
W (01:02:01.066) monitor: 3W3P:: rule activated
I (01:02:01.067) processor: send status... (7002ms)
W (121824) wifi:Haven't to connect to a suitable AP now!
W (01:02:02.067) monitor: 3W3P:: rule deactivated
I (01:02:08.066) stats: iteration_time_us=999992 Name=last% IDLE0=98 IDLE1=94 wifi=4 MNWK=1
I (132600) wifi:mode : sta (7c:df:a1:e0:74:40)
I (01:02:11.844) mesh_main: <MESH_EVENT_NO_PARENT_FOUND>scan times:60, 3

Do you mean that the device1 (2dB) can connect to hotspot, rssi is -63, and the device2 (14dB) can't scan any parent?

Do you mean that the device1 (2dB) can connect to hotspot, rssi is -63, and the device2 (14dB) can't scan any parent?

exactly.

I will try to test locally and get back to you.

Do you use ESP32 ?
Can you reproduce this issue based on the mesh example? I have tested using the internal_communication, and set the ESP32 device tx power to 14dB, it still can scan APs and connect to router/parent.

Do you use ESP32 ?

Can you reproduce this issue based on the mesh example? I have tested using the internal_communication, and set the ESP32 device tx power to 14dB, it still can scan APs and connect to router/parent.

i use one esp32s3 devkitC and one of our pcbs (with LTE) because i was investigating another issue.
i will try to use 2 devkitc

i saw there are new pushes on the wifi lib,
Specifically:
769d2384e47517667dbb2b47c89a005415a3dd10
a91050f77b744fca7d2ed5916c6165c5915d14ca
i think i will update and then retry.

ok, waiting for your feedback.

for now the only strange thing that occurred is that both devices joined the access point as root and apparently dont see each other.
After how long a device should check for other parents and see if it has to move to a different layer?

After the non-root node successfully connects to the parent node, it will scan the current channel from time to time, select a better parent node and switch. The interval between each scan is not fixed, but it is at least 4.5 seconds.

Uh, 4.5 seconds it's a very short time.
I'm talking about minutes of parallel ROOT devices.
Is there a way to print more logs about this behavior?
I try to enable verbose logging for this component

I'm talking about minutes of parallel ROOT devices

I'm sorry, I didn't catch your point. Can you explain it in more detail?

yes, i ended up in a state where i had 2 devices, same mesh, connected both as ROOT.
I now enabled verbose logs on the mesh, i-ll try to reproduce.
Sadly with RSSI is always difficult to keep it stable :)

@zhangyanjiaoesp i'm attaching 2 logs
Configuration -> straight line with hotspot / layer2 / layer1
Files

layer2_1 -> the device boots and it's unable to find a parent for 10 minutes.
layer2_2 -> the same device boots and it finds the root immediately

layer2_2.txt
layer2_1.txt
Still trying to prolong those 10 minutes to infinite

@KonssnoK
According to your logs, it seems that your rssi is too low(-90), and the mesh rssi threshold is <-72,-82,-85>:
you can call esp_mesh_set_rssi_threshold() to change the rssi threshold, or let the device closer to the router or other device.

@zhangyanjiaoesp
could you tell me how the settings influence the mesh algorithm?

also, i understand the device had -90dB to the Router, but it had only -78dB to the ROOT.
Why it didnt connect to the root?

also, i understand the device had -90dB to the Router, but it had only -78dB to the ROOT.

According to your logs, the rssi from the device to the ROOT is -84:

And this rssi value is volatile, thus the scan sometimes can find root and sometimes can't:

When the device is doing parent selection, and the parent is root, it will compare the scanned parent's rssi with the select_rssi and backoff_rssi, and decide whether to do rssi backoff.

Since the rssi from the device to the ROOT is about -85, suggest you can call esp_mesh_set_switch_parent_paras() API to set the  select_rssi and backoff_rssi to -85 or  lower.

I was able to see another strange behavior (that i have to try to replicate),
but here everything looks clear (more or less) now.
I will close the ticket.


Behavior macros aren't detected

Hi this is such a neat program! I've been playing around with it and it's super cool. However, I did notice that behavior macros don't seem to work, and in this case, my macro to make combos.
https://github.com/kvietcong/zmk-config/blob/7a8f7e6f2a65bf2aa2ea00ff0f78f1815ab0cc9e/config/the_abyss.keymap#L135-L168
// EXAMPLE
#define COMBO(NAME, BINDINGS, KEYPOS, TIMEOUT, LAYERS) \
            combo_##NAME { \
                timeout-ms = <TIMEOUT>; \
                bindings = <BINDINGS>; \
                key-positions = <KEYPOS>; \
                layers = <LAYERS>; \
                slow-release; \
            };
COMBO(tab, &kp TAB, 13 31, DEFAULT_TIME, DEFAULT_LAYERS)

Wondering if there was any way to support macros? Totally understand if this is out of scope though, macros can get ugly.

Ah should have read the docs more: https://github.com/nickcoutsos/keymap-editor/wiki/Preprocessor-Support#what-are-the-challenges-to-supporting-preprocessor-macros


fix: the bug of workspace update without name

What type of PR is this?

What this PR does / why we need it:
Which issue(s) this PR fixes:

Fixes #
Special notes for your reviewer:
Does this PR introduce a user-facing change?

Additional documentation e.g., design docs, usage docs, etc.:

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

1 of 5 (20.0%)  changed or added relevant lines in 1 file are covered.
No unchanged relevant lines lost coverage.
Overall coverage increased (+0.05%) to 54.906%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

pkg/cmd/workspace/update/options.go
1
5
20.0%

Totals

Change from base Build<PHONE_NUMBER>:
0.05%

Covered Lines:
8830

Relevant Lines:
16082

💛  - Coveralls


if enable yb_jasonmode,T bot and CT bot are often stuck on both sides of a box

Describe the bug
if enable yb_jasonmode 1
bot are often stuck on both sides of a box
Fall into the pit and don't jump out
A bunch of robots blocking the door
Do not move
CT cannot defused C4
There's also the problem of picking up weapons. If weapons fall out of reach, robots will move all the way to the weapon point, but they can't get there
Can we add a delay detection mechanism, when we want to do some action, start timing. According to the distance, if it is not completed within the specified time, it is judged that it can not be completed and give up the action. This can solve some problems caused by the dead cycle
Expected behavior
A clear and concise description of what you expected to happen.
Video
If it's problem with AI behaviour, add video to help explain your problem.
Environment details:

OS: [e.g. windows 10 / linux debian 10.4]
Engine: [e.g. rehlds <IP_ADDRESS>2 / vanilla 8684]
GameDLL: [e.g. regamedll <IP_ADDRESS>9 / vanilla]
Metamod: [e.g. metamod-r / metamod-p / metamod]
Bot Version: [e.g. 4.1.566]
Game mode: [e.g. csdm / public / zombie]

Additionally, please provide list of AMX Mod X plugins: amxx plugins and list of Metamod plugins: meta plugins.
Additional context
Add any other context about the problem here.

You didn't even write the name of the map where this happens. How to check it? This issue has been going on for 2 years now, and there is still no detailed information.

Otherwise, I will close this issue as stale.
You did not specify how to reproduce bugs, and the name of the map.


Add viewName to UI5 Test Recorder Selectors

I am developing a UI5 app and testing it with wdi5 which works pretty well.
However to get the selectors as I want them, I have to debug each view individually. I wish that the Test Recorder would give me the viewName as well. I only get the viewId, which is more vulnerable to changes in the UI in my opinion. That's why I would like to work with the viewName instead.

Please add the viewName as a property to the selector or add a configuration option to either display the viewId or the viewName in the selector.

Hello @ddNils,
Thank you for sharing your enhancement proposal. I've created an internal incident<PHONE_NUMBER>. The status of the issue will be updated here in GitHub.
Regards,
Niya


#2188

@shvmsaini : Thanks for your contribution! The author(s) have been notified to review your proposed change.

Looks good (spelling fix of "implementation");  merging.


Iterating over an empty array causes infinite recursion

Consider this test:
#[test]
fn test_empty_iterator() {
    let arr: [bool; 0] = [];
    let mut i = 0;
    let mut chunks = arr.into_iter().chunks(3);

    while let Some(chunk) = chunks.next() {
        for _ in chunk {}
        i += 1;
    }
    assert_eq!(i, 0);
}

Intuitively, chunks.next() should immediately return None. Instead it returns Some with an empty chunk. This then requires clunky checking of the chunk/checking the array is empty first then skipping. Perhaps the iterator could peek/hold the first value?
Additionally, it's unintuitive to be required to iterate the entire chunk in order to advance to the next chunk. This crate is great as itertools's Chunks isn't Send, so thank you!

Thanks for your suggestion! I'll try to fix it ASAP.

Additionally, it's unintuitive to be required to iterate the entire chunk in order to advance to the next chunk.

I'll check the itertools's behavior.


clone generates smaller JS than deepCopy

GeneratedMessage.clone currently has this deprecation warning:
https://github.com/google/protobuf.dart/blob/be81cf3fe11d66baf1ff1f14b1dbd5f41baa0a56/protobuf/lib/src/protobuf/generated_message.dart#L41-L43
The reason for the size overhead is because the method is overridden in every message class. deepCopy on the other hand has just one definition and is not overridden in generated message classes:
https://github.com/google/protobuf.dart/blob/be81cf3fe11d66baf1ff1f14b1dbd5f41baa0a56/protobuf/lib/src/protobuf/generated_message.dart#L566-L567
However when I try compiling the benchmark program in #724 to native and JS, JS size is actually smaller with clone:

deepCopy
clone
diff

AOT
5,029,168 bytes
5,029,584 bytes
+416 bytes

JS
281,449 bytes
281,057
-392 bytes

To repro: replace deepCopy calls in benchmarks/bin/deep_copy.dart with clone.
To compare, here are the definitions of clone and deepCopy for a message:
A1_A466 clone() => A1_A466()..mergeFromMessage(this);

T deepCopy() => info_.createEmptyInstance!() as T..mergeFromMessage(this);

I'm guessing what happens with JS is that both of these are inlined in the use sites, and bodies of thes functions cannot be simplified/optimized any further in the use sites. Since deepCopy's body is slightly larger, inlining deepCopy causes increase in size compared to inlining clone.
Another reason could be that deepCopy can be inlined in generic use sites (i.e. when the receiver's concrete type is not known) while clone cannot.
In any case, it seems like the deprecation message is not quite right.

I guess the question is how this grows in the number of message-types.
clone() has to be present for every message-type while deepCopy has a constant overhead.
For programs where this matter there is going to be a lot of message-types.

clone() has to be present for every message-type while deepCopy has a constant overhead.

I wonder if deepCopy is really constant overhead. It can be inlined even when the concrete message type is not known, unlike clone.


Catalogs!

Catalogs
Updating README to reflect catalogs
Updating README to be more thorough

A Catalog object contains an array of Magic datapoints (words, card values, etc). Catalog objects are provided by the API as aids for building other Magic software and understanding possible values for a field on Card objects.

Woo!


[Feature] Enable site classification

Implemented the enable site classification option

Something went wrong when cherry picking my changes. Sorry will fix asap

Coverage remained the same at 100.0% when pulling 4ed4f306e04eba20ac7b650e4d47d9266edc3dbb on appieschot:feature/enable-siteclassification into ea0c96ce6d1b7ac219795b3c04f6f41867a9d294 on pnp:dev.

Thats better

@waldekmastykarz should be present now :)

Merged manually. Thank you!


Definition list indented code block parsing inconsistencies

As mentioned in this test case, an indented code block needs eight spaces of indentation however if the indented code block starts on the next line it's parsed after five spaces.
Running cargo run -- -e -D on the following input
bar
:       baz

produces these events:
0..16: Start(DefinitionList)
0..4: Start(DefinitionListTitle)
0..3: Text(Borrowed("bar"))
0..4: End(DefinitionListTitle)
4..16: Start(DefinitionListDefinition)
12..16: Start(CodeBlock(Indented))
12..16: Text(Borrowed("baz\n"))
12..16: End(CodeBlock)
4..16: End(DefinitionListDefinition)
0..16: End(DefinitionList)
EOF

And starting the code block on the next line only needs five spaces to parse an indented code block:
bar
:
     baz

0..15: Start(DefinitionList)
0..4: Start(DefinitionListTitle)
0..3: Text(Borrowed("bar"))
0..4: End(DefinitionListTitle)
4..15: Start(DefinitionListDefinition)
11..15: Start(CodeBlock(Indented))
11..15: Text(Borrowed("baz\n"))
11..15: End(CodeBlock)
4..15: End(DefinitionListDefinition)
0..15: End(DefinitionList)

Trying to start the code block using eight spaces of indentation on the next line results in extra whitespace being added to the indented code block.
bar
:
       baz

0..17: Start(DefinitionList)
0..4: Start(DefinitionListTitle)
0..3: Text(Borrowed("bar"))
0..4: End(DefinitionListTitle)
4..17: Start(DefinitionListDefinition)
11..17: Start(CodeBlock(Indented))
11..17: Text(Borrowed("  baz\n"))
11..17: End(CodeBlock)
4..17: End(DefinitionListDefinition)
0..17: End(DefinitionList)

Here's what pandoc commonmark_x does.
I'll try to change it to match them in this case.


Add examples

While the documentation is being made, an example directory of the different components would be of great help.
If you can, take the sources for the example views and add them to the repo inside of an examples dir

Look at https://github.com/xotahal/react-native-material-ui-demo-app


On-demand file sync

Is there an existing issue for this?

[X] I have searched the existing issues

Is your feature request related to a problem?
Syncing all files is often slow and quickly fills up local disk space.
Drupal has http://drupal.org/project/stage_file_proxy to solve this, but it's a drupal module, so you have to set up config split and similar solutions to handle that.
Describe your solution
Add something that can automatically fetch missing files from an origin server as they are accessed.
I'm well aware that this isn't trivial, especially also with Drupal image styles where 404 responses are from the PHP application and I have no idea how feasible this is. But I've been thinking that this would be useful a few times and thought it doesn't hurt to create a feature request to discuss it.
Describe alternatives
No response
Additional context
No response

Hmm, you didn't provide ddev debug test so I don't have any idea what OS or docker provider you're using. However, you're @Berdir so you know everything!
DDEV by default bind-mounts the directories named by upload_dirs so any project that specifies those (or has them by default, like the drupal* project types doesn't have the problem you're talking about.
But say more please!

Hi @rfay! Maybe I'm nissing something but I think that's not related to what I mean.
I'm talking about sync from my production environment as files are accessed by web requests. Have a look at what stage file proxy does.

I know stage file proxy well. I don't think it's part of DDEV's job to do that  but have you looked at ddev pull already?

I don't think it's part of DDEV's job to do that

That's fair, if you think that's not something that ddev should cover then feel free to close this.

have you looked at ddev pull already?

Sure, but if you have projects with dozens or hundreds of GB of files, then ddev pull is not feasible for multiple reasons. I almost always use --skip-files and live with the broken files, but sometimes they're useful/needed for certain tasks.

I don't think it's likely that DDEV itself could handle the gazillions of ways that people might access upstream files. stage_file_proxy adjusts the URL for files, which DDEV could never know how to do for all the things it works with.

It's possible that files pull could be extended to use sync where possible, but I doubt you'd be happy with performance of that. Stage file proxy is so great because it changes application behavior, not because it syncs
Closing this for now, happy to continue the conversation.


Propogate non-serailizable error to encoder, and make error more clear

See #14

Tagging internal issue:
https://git.liquidcrystalstudios.com/outside/outside/-/issues/174

looks fine for me :)


Dlcl 839/feat/smart tooltip

https://opentechdev.atlassian.net/browse/DLCL-839
Thank you for your contribution to the repo. Before submitting this PR, please make sure:

[ ] Your code builds clean without any errors or warnings
[ ] You are using approved terminology
[ ] You have added unit tests
[ ] You have updated documentation
[ ] You have tested your changes

Please provide a description of the changes proposed in the pull request and reference any related issues in the repository.
Please indicate if this PR contains:

[ ] A bug fix
[ ] A feature request
[ ] Breaking changes
[ ] An enhancement

Closing this PR for now after today's discussion ( 13/04/2023 ) this component needs re validation and redesign


Monorepo support to import types in another package

I have a project where a Meteor app is in a monorepo using Turborepo. In this monorepo I factored schemas into a package.
I would like to know how can I include/use zodern:types in these packages.
It seems at first glance that the @types/meteor package was more intuitive and simple that the usage of Meteor packages for something like type definitions. Maybe any of you have any insight on why this solution was prefered ?
The structure of the repo is the following :
[Non exhaustive, obfuscated project structure]

apps/
  - myMeteorApp/
    - .meteor/
    - client/
    - server/
    - imports/
    - node_modules/   # Non-hoisted with package.json option workspace.nohoist: ["**"]
    - package.json
    - tsconfig.json
  - myNodeService1/
    - src/
    - package.json
    - tsconfig.json
  - myNodeService2/
    - src/
    - package.json
    - tsconfig.json
packages/
  - types/
    - src/
    - package.json
    - tsconfig.json
  - schemas/   # Use to have @meteor/types dependency
    - src/
    - package.json
    - tsconfig.json
  - utils/
    - src/
    - package.json
    - tsconfig.json
package.json
yarn.lock

The node_modules in the Meteor app are there because Meteor doesn't understand the links & path changes that Turborepo uses  to have a unified node_modules directory. See https://github.com/arggh/meteor-yarn-workspaces?tab=readme-ov-file#the-relevant-steps-to-make-it-work

Currently zodern:types only works to provide types for apps. Providing types for Meteor or npm packages hasn't been solved yet.
If someone wants to work on it, that would be appreciated. I haven't considered types for npm packages, and I'm not sure how that would work - the meteor lint command we currently use wouldn't be available. I had been planning to create a REST api that allows checking for and downloading types from Meteor packages. Maybe we could create an npm package that uses the api to provide the types.

It seems at first glance that the @types/meteor package was more intuitive and simple that the usage of Meteor packages for something like type definitions. Maybe any of you have any insight on why this solution was prefered ?

I had expected zodern:types to mostly be used for third party packages. Maintaining the types with the core packages could make things easier, but it currently is lacking the tests the @types/meteor package has and is occasionally broken. I haven't checked recently, but I thought @types/meteor was still maintained.

Most types could be used only by the app except for a few use cases.
For example :

use of Mongo.someType in a helper package or a type package like Mongo.Modifier<T>
use of Meteor.User types
use of Mongo types in a schema package using autovalue()

Were these use cases handled differently, zodern:types could stay the way it is (+ Windows bug fix on #16)
To expand on @types/meteor, the official README.md present in the DefinitlyTyped repo says the types are valid up to Meteor 2.6, and to use zodern:types for the rest.
It is entirely possible that this documentation is not up to date and that it handles Meteor 2.14, but there now definite way to know. DefinitelyTypes versioning is mysterious on that.
The best course of action would be to have zodern:types generate the types (no symlinks), copy them into the repo, and let the developper move them around. Either keep the generated files where they were generated or move them to a package (or even a directory of your Meteor app if you prefer).
This way zodern:types would behave like a CLI code generator (which it already does) and wouldn't confuse the developer into thinking that it is a built library of ready-to-import types (as I was. Meteor official docs and 2.8 changelog are ambiguous on that).
Another way of using this "CLI-like behavior" would be to simply use zodern:types to keep @types/meteor up to date.

To expand on @types/meteor, the official README.md present in the DefinitelyTyped repo says the types are valid up to Meteor 2.6, and to use zodern:types for the rest.
It is entirely possible that this documentation is not up to date and that it handles Meteor 2.14, but there's no definite way to know. DefinitelyTyped versioning is mysterious on that.

This got me thinking. some of the API changes documented in the CHANGELOG are :

2.15 : Types updated for Accounts.createUserVerifyingEmail => NOT FOUND in DefinitelyTyped@master as of 12/02/2024
2.14 : Added Accounts.createUserAsync into the client, present in DefinitelyTyped@master as of 12/02/2024, last change on 14/02/2023
2.8 : Added the async API. Meteor.callAsync present in DefinitelyTyped@master as of 12/02/2024, was added on 31/10/2022

It is most likely that the documentation that states that types are up to date up to Meteor 2.6 are either :

Not up to date
Kept at v2.6 because all type definitions aren't yet up to date in DefinitlyTyped and 2.6 is the oldest common denominator of compatibility.

The last two changes to the README.md are :

14/04/2023 => Depecation note, as of 2.8.1 we should use zodern:types instead of @types/meteor
22/02/2022 => Compatibility updated from v2.0 to v2.6

It seems that types were updated more often that the README.md. It is more than likely that we @types/meteor is more up to date than we think (for most files, seems like 2.14).
What we should do is generate the most type files as possible with zodern:types, compare those to the definitions found in DefinitelyTyped, update them if necessary and update the README.md
One could argue that this is out of scope of this repository.


Remove paragraphs without text except if there's an image inside

I'm trying to remove all ps without text content, except when there's an img tag inside or in any of its children.
Currently I have this:
         exclusiveFilter: function(frame) {

               var contentTags = ['p'];

                       //disallow empty anchors, divs or paragraphs
                if (contentTags.indexOf(frame.tag) !== -1 && !frame.text.trim())
                {
                    return true;
                }

                return false;
            }

Unfortunately I can't seem to get the inner HTML of the frame, like frame.html (or better yet a parsed object for easier searching), to check if there is an image inside.
Is this correct? Is there any way to achieve my goal?

This kind of thing might be better suited to the cheerio module.
On Sat, Jul 4, 2015 at 10:19 AM, tommedema<EMAIL_ADDRESS>wrote:

I'm trying to remove all ps without text content, except when there's an
img tag inside or in any of its children.
Currently I have this:
                exclusiveFilter: function(frame) {

           var contentTags = ['p'];

                   //disallow empty anchors, divs or paragraphs
            if (contentTags.indexOf(frame.tag) !== -1 && !frame.text.trim())
            {
                return true;
            }

            return false;
        }

Unfortunately I can't seem to get the inner HTML of the frame, like
frame.html (or better yet a parsed object for easier searching), to check
if there is an image inside.
Is this correct? Is there any way to achieve my goal?
—
Reply to this email directly or view it on GitHub
https://github.com/punkave/sanitize-html/issues/58.

--
*THOMAS BOUTELL, *DEV & OPS
P'UNK AVENUE |<PHONE_NUMBER>  |  punkave.com

Hi @tommedema @boutell, is there any solution for this?
I have similar kind of requirement, need to sanitize or not allow  inside of
eg:

in this either  should be removed or  tag should not be allowed.
Thanks in Advance

For more complex manipulations like this you should use the cheerio module which is designed to let you do whatever jQuery can do in terms of finding things quickly with selectors and mopping them up. This module is for simple sanitization tasks.


improved energy saving by omitting p2p connections

Hello @bropat,
with an energy saving device (esd) (in my case a T8170), I ran in the issue, that the device lost 10 to 20 percent of battery per day. Also for the esd, a p2p connection will be built up each 10 minutes. I did some investigation and have found the problem here. The getStorageInfo will build up a p2p connection, even if the device is not connected (like this is in the case of esd).
Because for the esd it is not necessary, I have changed the function, so that for these devices the p2p connection is omitted for a given value. If we use the standard value for pollingIntervalMinutes (10 minutes) and for (the new) refreshP2PEnergySavingOmits (2), the number of p2p connections will decrease from 6 to 2 per hour. The battery lost 2 to 6 percent per day.
Also I have implemented it in the way, if the esd is connected an this function is called, the counter is reset (the data has been updated, so the omits counter can start at 1). Anyway, by setting refreshP2PEnergySavingOmits to 0, the omits are disabled.
If you have any concerns or questions, please contact me.
Best, Philipp

I have corrected the implementation of the refresh via P2P. It is now carried out every 12 hours, as is already the case for other devices, unless a connection has already been established, in which case a refresh is carried out immediately and the 12-hour timer is reinitialised.
So if someone executes a P2P command, a P2P connection is established and all P2P data is immediately updated and the timer is reset.
Basically the previous getStorageInfo pull was corrected (#293). Its "refresh" implementation did not correspond to the correct refresh policy of the project.

@PhilippEngler
Please try this implementation and let me know if it runs correctly (current data vs battery consumption).

Thank you, @bropat.
One issue I had right at the beginning. For two of my devices (T8416 and T8170), the storage data is retrieved at second run of the refreshP2PData function (For testing, I have reduced the interval to 2 minutes). During the first run after startup, the value for the property StationSdStatus is undefined (and so the station.getStorageInfoEx() will not executed).
After inserting station.getStorageInfoEx(); to the addStation-function, the values are available after first run (but I'm not sure if this is a good workaround and if this would have implications to your ioBroker project).
Now I let it run for a day and then we will see...

@PhilippEngler

During the first run after startup, the value for the property StationSdStatus is undefined (and so the station.getStorageInfoEx() will not executed).

Fixed.

Thank you, @bropat.
I have no explanation why this does not work for me, but I had already removed the undefinied-check there and it did not work in my case. The T8170 (the only standalone energy saving device I have) got 0GB for total and used storage. So I have added the getStorageInfoEx() command to the addStation-function and it works in my case.
I apologize for the inconvenience.

@PhilippEngler
Can you send me a debug log of T8170?

@bropat: send by email.
For now it seems ok, maybe it was a timing issue. I will keep an eye on.

@bropat: The storage info issue occurred today, you should have already received an email with the logs attached.
Thank you.

@PhilippEngler
I have checked the logs and the problem seems to be an incorrect response at the beginning. Same command a bit later gives the correct result:
Wrong Response:
2024-09-18 15:35:50.852 DEBUG [p2p]   Handle DATA DATA - Received data {
  stationSN: 'T8170TXXXXXXXX4D',
  seqNo: 2,
  commandIdName: 'CMD_SDINFO_EX',
  commandId: 1144,
  resultCodeName: 'ERROR_PPCS_SUCCESSFUL',
  resultCode: 0,
  resultData: '0000000000000000',                                 <==== Look here!!!
  data: '000000000000000000000000',
  seqNumber: 5,
  p2pDataSeqNumber: 3,
  offsetDataSeqNumber: 1
}
2024-09-18 15:35:50.853 DEBUG [p2p]   Handle DATA DATA - Result data for command received {
  stationSN: 'T8170TXXXXXXXX4D',
  message: {
    sequence: 4,
    commandType: 1144,
    nestedCommandType: undefined,
    channel: 255,
    acknowledged: true,
    retries: 0,
    returnCode: 0,
    data: <Buffer d1 00 00 04 58 5a 59 48 78 04 88 00 00 00 01 00 ff 00 00 00 00 00 00 00 00 00 00 00 63 62 30 37 62 30 65 65 32 63 62 64 64 34 63 34 63 32 30 32 36 37 ... 106 more bytes>,
    customData: undefined
  },
  resultCodeName: 'ERROR_PPCS_SUCCESSFUL',
  resultCode: 0
}
2024-09-18 15:35:50.853 DEBUG [http]  Station got p2p command response {
  station: 'T8170TXXXXXXXX4D',
  commandType: 1144,
  channel: 255,
  returnCodeName: 'ERROR_PPCS_SUCCESSFUL',
  returnCode: 0,
  customData: undefined
}
2024-09-18 15:35:50.854 DEBUG [addon] Event "PropertyChanged": station: T8170TXXXXXXXX4D | name: sdStatus | value: 0
2024-09-18 15:35:50.854 DEBUG [addon] Event "PropertyChanged": station: T8170TXXXXXXXX4D | name: sdCapacity | value: 0
2024-09-18 15:35:50.855 DEBUG [addon] Event "PropertyChanged": station: T8170TXXXXXXXX4D | name: sdCapacityAvailable | value: 0

Correct response:
2024-09-18 15:40:38.067 DEBUG [p2p]   Handle DATA DATA - Received data {
  stationSN: 'T8170TXXXXXXXX4D',
  seqNo: 3,
  commandIdName: 'CMD_SDINFO_EX',
  commandId: 1144,
  resultCodeName: 'ERROR_PPCS_SUCCESSFUL',
  resultCode: 0,
  resultData: 'e41b0000c81b0000',                                     <==== Look here!!!
  data: '00000000e41b0000c81b0000',
  seqNumber: 6,
  p2pDataSeqNumber: 4,
  offsetDataSeqNumber: 0
}
2024-09-18 15:40:38.067 DEBUG [p2p]   Handle DATA DATA - Result data for command received {
  stationSN: 'T8170TXXXXXXXX4D',
  message: {
    sequence: 5,
    commandType: 1144,
    nestedCommandType: undefined,
    channel: 255,
    acknowledged: false,
    retries: 0,
    returnCode: 0,
    data: <Buffer d1 00 00 05 58 5a 59 48 78 04 88 00 00 00 01 00 ff 00 00 00 00 00 00 00 00 00 00 00 63 62 30 37 62 30 65 65 32 63 62 64 64 34 63 34 63 32 30 32 36 37 ... 106 more bytes>,
    customData: undefined
  },
  resultCodeName: 'ERROR_PPCS_SUCCESSFUL',
  resultCode: 0
}
2024-09-18 15:40:38.068 DEBUG [http]  Station got p2p command response {
  station: 'T8170TXXXXXXXX4D',
  commandType: 1144,
  channel: 255,
  returnCodeName: 'ERROR_PPCS_SUCCESSFUL',
  returnCode: 0,
  customData: undefined
}
2024-09-18 15:40:38.069 DEBUG [addon] Event "PropertyChanged": station: T8170TXXXXXXXX4D | name: sdCapacity | value: 7140
2024-09-18 15:40:38.069 DEBUG [addon] Event "PropertyChanged": station: T8170TXXXXXXXX4D | name: sdCapacityAvailable | value: 7112

No idea why :(

Thank you, @bropat. I had some issues with the PKCS1 decryption. Since I have solved it, the problem did not occurred again. I have tied it the last fife day - no problem so far...
Your implementation runs correctly regarding current data and battery consumption. Thank you.


Concurrent Pull Request POSTs with the same workItemRefs only keeps one reference

I have a Logic App that creates multiple Pull Requests through API calls concurrently, but when I include:
...
"workItemRefs": [
    { "id": 123 }
],
...

it only shows the Work Item relationship on one of the pull requests.  This prevents the other pull request(s) from passing the Work Item Requirement policy and auto-completing.
If I remove the concurrency from the API calls it keeps the Work Item relationship as expected.

As a work around I am able to make a PATCH call on the Work Item to add the links to the pull requests (while maintaining concurrency).
[
  {
    "op": "add",
    "path": "/relations/-",
    "value": {
      "rel": "ArtifactLink",
      "url": "vstfs:///Git/PullRequestId/...",
      "attributes": {
        "comment": "Auto PR",
        "name": "Pull Request"
      }
    }
  }
]

It would still be nice to not need this additional step though.

Just kidding..now I (sometimes) get a 409 response:
TF26071: This work item has been changed by someone else since you opened it.  You will need to refresh it and discard your changes.


Error parsing IPv6 gossip address

Describe the bug
When a valid IPv6 address is used for gossip, a warning is displayed during startup stating that too many colons are contained in the address. Other "bindAddress" fields do not seem to be effected.
To Reproduce
Steps to reproduce the behavior:

Go to /var/lib/hornet/config.json
Set network.gossip.bindaddress to any valid IPv6 eg. [::]:15600
Start the hornet node

Expected behavior

Normal start of node
Gossip working

Environment information:

OS: [Ubuntu 20.04]
RAM: [4 GB]
Cores: [e.g. 4 Cores]
Type: [Raspberry Pi 4B]
HORNET version [0.4.0]

Additional context
Warning I received with network.gossip.bindadress: [::1]:15600

Fixed with #530


Run npm install as part of the container build for pub-sub

Description
Run npm install as part of the container build for pub-sub (rather than doing it at container start).
Checklist
Please make sure you've completed the relevant tasks for this PR, out of the following list:

[ ] The quickstart code compiles correctly
[ ] You've tested new builds of the quickstart if you changed quickstart code
[ ] You've updated the quickstart's README if necessary

Note on this: the docker container that fixes the problem doesn't get pushed until we merge to master. Which is a fine catch-22...


no export button?

I just built a stacked ensemble but there doesn't seem to be an export button?

What version do you have? Exporting has been possible since 0.3.7

ah ok updated and seems ok now


[Feature] English

Hello 👋
I've setup the application with docker compose, but after logging in I have no idea where to start, because well... I don't know Chinese 😅
Is there any chance to have the documentation and application in English (with language toggle or something similar) so other (international) users can try out this tool as well? I understand that it might take a while, but it would be very much appreciated 🙂

Thanks for your feedback! We don’t have an English version at the moment, but it’s something we’re considering. We’ll keep you updated once there’s any progress! Appreciate your patience 😊

One suggestion is that we're about to start Hacktoberfest, so something you could do is open an issue with the tag hacktoberfest to translate into English.
It would be great if you already enabled multiple languages, so I could contribute to both English and Brazilian Portuguese.

歪果仁，不会中文找谷歌翻译~

@alvarofpp
Thank you for your suggestion, I’ll give it a try.


Split PlanetShine into core and default config

Preparatory work for other mods that tweak the PlanetShine config - Astronomer's Pack is one of them.

#rebuild

Could you provide the pull requests for those splitting jobs as two separate PRs? Then, Jenkins would have a chance to show that the Config part is working, and after merging that, we could re-build the other part...

Well, the issue is, this mod pair can't be automatically checked because it has a circular dependency. Those are apparently common in NetKAN, and they're useful: the config depends on the mod, the mod depends on the config... It means that the config cannot be independently installed without the mod and the other way around. Doesn't that mean that Jenkins will always fail the automated test? If yes, the only way for Jenkins to succeed would be to check the installation of both the mod and its config at the same time with something like
ckan install -c built/PlanetShine-<IP_ADDRESS>.ckan built/PlanetShine-Config-Default-<IP_ADDRESS>.ckan

I get your point about using two separate PRs, but if I start by submitting the Config first, it will pass dependency checks but will fail when installing because it contains files that are part of the not-yet-changed PlanetShine mod in the repository...

Yes, I get you... So, if you are confident with this PR, gimme a ping and I'll merge it. Any errors can be repaired in upcoming PRs :smiling_imp:

Then ping @hakan42, because I have tested this with the newly-changed, multiple-files -c option. My only ugly feeling is with the existing installations of the mod - do the clients get a heads-up and the possibility to update the mod when the NetKAN/CKAN data changed, but the mod version itself didn't?

wink wink

You guys are good XD

Ah, one issue pops up: since the mod name is generated by NetKAN, they have different IDs (PlanetShine vs PlanetShine-Config-Default) but the same display name in the CKAN GUI (PlanetShine). Whoops, didn't think of that.

Yes, just update the "name"  attribute in the netkans. I had the same issue with the BoxSat addon, and seldomly using the GUI, did not discover it until after people started complaining in the forums :blush:


Welling/soft assay types start

@jpuerto-psc can you update the commit reference to the latest IVT again? The current one 18653712c50317641c5231e6b8827fc4848e0f78 is Joel's branch has a failed CI check. IVT also has 3 new commits.

@yuanzhou - I have updated this.


Fixes to the TensorFlow conversion tool

This PR contains a small fix to the script which converts TensorFlow weights to PyTorch weights. The related issues are #50, #306, etc.
Thanks for all of the open source code you've been putting out in this domain, it has been incredibly helpful to me and my team.

Yes! Thanks @marpaia!


Circle packer fixes (read more)

I'm running low on energy.

Less overlapping names
Better packing

Looks nice, I'll test it tomorrow

Why are there such old commits here? Weren't they already merged?

Why are there such old commits here? Weren't they already merged?

They're still part of circle packer thought

Why are there such old commits here? Weren't they already merged?

They're still part of circle packer though

Yes but why are you recommitting them?

Why are there such old commits here? Weren't they already merged?

They're still part of circle packer though

Yes but why are you recommitting them?

There werent any changes prior

LGTM!


Create a contact info block

Add links to social networks (LinkedIn, Facebook, Instagram), phone number, email, Telegram username, etc.

Linkedlin: https://www.linkedin.com/in/anderson-zambrano-68b811168/
Instagram: https://www.instagram.com/anderson_zb1/
Phone: +593 978 991 035
email<EMAIL_ADDRESS>Telegram Username: https://t.me/Aczambrano3


Laravel 6 support please!

Laravel 6 support has been added in v2.0.0. https://github.com/stefanzweifel/laravel-stats/releases/tag/v2.0.0
Please update your constraints in composer.json or post your error message here.


⭐FEAT: Better looking light/dark  Toggle

TODO :

The current toggle looks like this :

Create a better looking toggle

something like this:

https://letsbuildui.dev/articles/building-a-dark-mode-theme-toggle

keep in mind the theme of the project

Sure thing, assigned to you.

@ArslanYM If its not completed I would like to work on this issue, could you assign it to me please?

https://github.com/ArslanYM/StarterHive/assets/143197207/991bd51e-c948-4053-9a34-d06118479dfe

i've implemented the theme toggle across all pages and fully functional with suitable design and better UX.....

@Bgmi10  Can you raise a PR?

Hi ArslanYM,
I hope this message finds you well.
I recently contributed to your  project by addressing the dark theme and light theme issues across all pages. I’ve enjoyed working on this and appreciate the opportunity to contribute to such a valuable project.
Given the time and effort involved in this contribution, I wanted to inquire if there is any possibility of compensation for this work. I understand that many open-source projects operate with limited funding, and I am happy to continue contributing regardless of the outcome. However, any form of support would be greatly appreciated .
Thank you for considering my request. I look forward to your response.
Best regards,
R Subash Chandra Bose

Hi ArslanYM,
I hope this message finds you well.
I recently contributed to your project by addressing the dark theme and light theme issues across all pages. I’ve enjoyed working on this and appreciate the opportunity to contribute to such a valuable project.
Given the time and effort involved in this contribution, I wanted to inquire if there is any possibility of compensation for this work. I understand that many open-source projects operate with limited funding, and I am happy to continue contributing regardless of the outcome. However, any form of support would be greatly appreciated .
Thank you for considering my request. I look forward to your response.
Best regards, R Subash Chandra Bose

There's actually no compensation, this project is free and open source and it's sole purpose is to help newcomers learn the ways of opensource and learn to contribute.

i've  raised the PR check it out ..


Add support for a bitcoind rpcssl configuration

Add support for bitcoind RPC calls over SSL (via the rpcssl configuration option)

This works and should be committed.

rpcssl has been dropped from bitcoin-cli.

As you noted "rpcssl has been dropped from bitcoind" - thanks in any case for the PR


not managing ~20 sec time on a P100 with 16GB memory

First of all thank you for the great tool.
I've been playing around with your software and at most I'm able to segment in ~50 sec per subject with 95 frames.  My gpu info is below.  But I think I should be getting more close to your ~20 sec.  Any idea why I'm not faster? I'm using cuda8.0 and matlab 2017a on a rhel server.
Regards,
Egill Fridgeirsson
gpu info:
                 Name: 'Tesla P100-PCIE-16GB'
                 Index: 2
     ComputeCapability: '6.0'
        SupportsDouble: 1
         DriverVersion: 8
        ToolkitVersion: 8
    MaxThreadsPerBlock: 1024
      MaxShmemPerBlock: 49152
    MaxThreadBlockSize: [1024 1024 64]
           MaxGridSize: [2.1475e+09 65535 65535]
             SIMDWidth: 32
           TotalMemory: 1.7067e+10
       AvailableMemory: 1.6678e+10
   MultiprocessorCount: 56
          ClockRateKHz: 1328500
           ComputeMode: 'Default'
  GPUOverlapsTransfers: 1
KernelExecutionTimeout: 0
      CanMapHostMemory: 1
       DeviceSupported: 1
        DeviceSelected: 1

Hi Egill,
Thanks for the comment. I also observed this variability in runtime across different settings. I think the main bottleneck is the CPU-GPU handshaking. As all the three networks (Coronal, Axial and Sagittal) are pretty huge, we cannot accommodate all of them in the GPU at the same time. So, the networks are continuously moved between GPU and CPU, which can be abit slow depending on the PCI.
In my workstation, I am using Titan Xp with Ubuntu 16.04 (no Server), where I get around 20 secs.
In case, you want to speed up more in your current setting, you may use only Coronal Network (the best among the 3), reducing computation by three times. The performance would be reduced by 1-2% Dice score though, which might be acceptable.
Let me know if you want me to create another version of RunFile using only coronal axis.
Best
Abhijit

Hi Abhijit,
Thanks for the suggestion.  Using only the coronal net I reach about 15 secs. I was also very happy with the 50secs using all three nets.  Just curious what could be the reason why I wasn't closer to your performance. I'll also be eagerly waiting for the python implementation!
Thanks,
Egill


OML 3.0 -> main

FROM REWORK_RERANKING BRANCH
(+819 -1108)
Changelog (all the functions and classes on the right side are modality agnostic):

EmbeddingPairsDataset, ImagePairsDataset -> PairDataset
pairwise_inference_on_images,  pairwise_inference_on_embeddings -> pairwise_inference
IDistancesPostprocessor ->  (mostly renamed) -> IRetrievalPostprocessor
PairwisePostprocessor, PairwiseEmbeddingsPostprocessor, PairwiseImagesPostprocessor ->  PairwiseReranker
inference_on_images -> inference
inference_on_dataframe -> inference_cached

Also:

EmbeddingMetrics takes optional dataset argument in order to perform postprocessing.
Made postprocessing tests a bit more informative via making dummy models a bit less trivial (added bias to their outputs)

Examples changed:

train + val and prediction for postprocessor
retrieval usage

added global_paths parameter to download_mock_dataset so it looks nicer

OUTDATED DRAFT


Usbc source

Adds Power Delivery Source Support to the USB-C Stack. See Issue 38371 for details

Hey @sambhurst, do you think it would make sense to regroup the commints in smaller PRs? Looks like there's a mix of refactoring/preparation, board specific changes, bug fixes and then the main feature. Thinking having more small PRs may make it easier to review and hopefully get it merged faster, and also make it easier to maintain the stack through the reviews.

Hey @sambhurst, do you think it would make sense to regroup the commints in smaller PRs? Looks like there's a mix of refactoring/preparation, board specific changes, bug fixes and then the main feature. Thinking having more small PRs may make it easier to review and hopefully get it merged faster, and also make it easier to maintain the stack through the reviews.

@fabiobaltieri I agree and have currently split out the refactoring to a separate PR53071. I'll split out the others until there's just the Source PD stuff in this PR

I've split out 9 files into 3 separate PRs
1: usb-c: Refactor USB-C Subsystem Sink #53071
2: usbc boards #53073
3: usbc tcpc stm32 #53077

You could probably also split VCONN support and the GoodCRC timer into separate PRs. Those seem pretty orthogonal to sourcing.
Hypothetically, if you did that, would it just be the last 4 commits in this PR that still need to be reviewed?

Hi @sambhurst, do you need to merge this PR or any other PRs to finish https://github.com/zephyrproject-rtos/zephyr/issues/38371 for the release? Asking because feature freeze is next week on Friday

Hi @sambhurst, do you need to merge this PR or any other PRs to finish #38371 for the release? Asking because feature freeze is next week on Friday

Hello @laurenmurphyx64, yes there are quite a few PRs that need to merge before #38371 is finished and unfortunately, it won't happen before next Friday.

@sambhurst please rebase
@galak suggested thinking about splitting this up into smaller PRs for review

For example the commit - ' boards: arm: stm32g081b_eval: Add ADC1 Channel9 ' could get pulled out and probably merged.

@alevkoy @keith-zephyr please review when you have time.


Add a column for speed

Add a column for speed.
We can run all models on UCloud for a fair comparison.
This would essentially be a new (mini) benchmark. The result should also be save in cache. I believe the relevant metadata:
Speed ms
system
python version
seb version
This should be done on some sample dataset (potentially of small and increasing larger documents).

Isn't import time going to be a problem with some things?
Since Fasttext is not a dependency by default for example, the model needs to download the first time encode() is called.

Alrighty I will do that. Wouldn't that break things though if we're running on a computer that does not have fasttext installed, or would it just hit cache instantly and not initialize the object?

The encoder is not initialized as long as cache is hit (due to the seb.EmbeddingModel previously called SebModel)
The naming is a bit weird here, feel free to suggest a different naming scheme for differentiating the model with the dynamic loading + metadata from the encoder interface.

@KennethEnevoldsen is this still an issue, or can we close it?

No we can close it


Socratic Seminar 36 (December 2024)

A proposal for non-custodial ecash
https://gist.github.com/lukechilds/307341239beac72c9d8cfe3198f9bfff

CTV, APO, CAT activity on signet
https://delvingbitcoin.org/t/ctv-apo-cat-activity-on-signet/1257

Mitigating Replacement Cycling Attacks with some magic
https://world.hey.com/mpch/mitigating-replacement-cycling-attacks-with-some-magic-part-i-4a76ad45

Un-FE’d Covenants:
https://rubin.io/public/pdfs/unfedcovenants.pdf

bitsacco:
https://blog.bitsacco.com/the-bitsacco-template/

Softfork initiative for CTV announced by CobraBitcoin
https://x.com/CobraBitcoin/status/1863006822048669961

Covenants support list
https://en.bitcoin.it/wiki/Covenants_support

Prisms:
https://www.roygbiv.guide/v4v/
Diagram

Round Robin Cashu Mint Auditor
https://audit.8333.space/

Boost Your Bitcoin Node Sync With UTXO Snapshots
https://blog.lopp.net/bitcoin-node-sync-with-utxo-snapshots/


[Urgent] Will critical mobile login issues on  ~0.15.5 ever be fixed ?

The following are some major bugs that have not been addressed since the past year:

Can't login with 100% success rate on Facebook while using mobile browsers.

Either it redirects to login page or
the popup never closes

This however works perfectly fine on desktop browser.

Can't login with Facebook when using the Facebook in-app browser.

This should work and shouldn't be a problem.
But it is because Satellizer relies on popups.

I tried to alleviate the problem by setting the polling to 0 in line 587 of satellizer.js but the problem still happens occasionally.

Hi @aligajani ,
I guess the first point you have mentioned is not an issue with satellizer itself rather than an issue with its angular implementation. We were having a similar problem and in turned out that our angular app wasn't handling the redirectUri with the ui.router.
If you go back to satellizer's documentation you can notice this note,

To avoid potential 404 errors, create server routes for each redirectUri URL that return 200 OK. Or alternatively, you may render a custom template with a loading spinner. For the moment, a popup will not stay long enough to see that custom template, due to 20ms interval polling, but in the future I may add support for overriding this polling interval value.

So why it was working fine on desktop browsers, while fails sometimes in mobile browsers ?
I guess this is due to the latency or poor connectivity problems that exists more in mobility, so you can notice such behaviour easily there. For further illustration to the problem, open the satellizer.js file, then pay close attention to the this code.
Popup.prototype.polling = function (redirectUri) {
            var _this = this;
            return this.$q(function (resolve, reject) {
                var redirectUriParser = document.createElement('a');
                redirectUriParser.href = redirectUri;
                var redirectUriPath = getFullUrlPath(redirectUriParser);
                var polling = _this.$interval(function () {
                    if (!_this.popup || _this.popup.closed || _this.popup.closed === undefined) {
                        _this.$interval.cancel(polling);
                        reject(new Error('The popup window was closed'));
                    }
                    try {
                        var popupWindowPath = getFullUrlPath(_this.popup.location);
                        if (popupWindowPath === redirectUriPath) {
                            if (_this.popup.location.search || _this.popup.location.hash) {
                                var query = parseQueryString(_this.popup.location.search.substring(1).replace(/\/$/, ''));
                                var hash = parseQueryString(_this.popup.location.hash.substring(1).replace(/[\/$]/, ''));
                                var params = angular.extend({}, query, hash);
                                if (params.error) {
                                    reject(new Error(params.error));
                                }
                                else {
                                    resolve(params);
                                }
                            }
                            else {
                                reject(new Error('OAuth redirect has occurred but no query or hash parameters were found. ' +
                                    'They were either not set during the redirect, or were removed—typically by a ' +
                                    'routing library—before Satellizer could read it.'));
                            }
                            console.log("Polling");
                            _this.$interval.cancel(polling);
                            _this.popup.close();
                        }
                    }
                    catch (error) {
                    }
                }, 500);
            });
        };

You can notice that this function is responsible for watching the Popup window path, check if the Popup window url is equal to the redirectUri and then checks for the returned code and other meta data. If angular catched the url, didin't recognise it, and then redirected it to another state (Which sometimes could be the same login url you are using or '/' if you didin't assign one), it will go infinitly inside this loop
var popupWindowPath = getFullUrlPath(_this.popup.location);
                        if (popupWindowPath === redirectUriPath) {
                            if (_this.popup.location.search || _this.popup.location.hash) {
                                var query = parseQueryString(_this.popup.location.search.substring(1).replace(/\/$/, ''));
                                var hash = parseQueryString(_this.popup.location.hash.substring(1).replace(/[\/$]/, ''));
                                var params = angular.extend({}, query, hash);
                                if (params.error) {
                                    reject(new Error(params.error));
                                }
                                else {
                                    resolve(params);
                                }
                            }

This will cause the exact behaviour you were describing.

I changed the interval to 0.
Reduced the problem.
On Wed, Jan 18, 2017 at 11:59 AM Mohamed Luay<EMAIL_ADDRESS>wrote:

Hi @aligajani https://github.com/aligajani ,
I guess the first point you have mentioned is not an issue with satellizer
itself rather than an issue with its angular implementation. We were having
a similar problem and in turned out that our angular app wasn't handling
the redirectUri with the ui.router.
If you go back to satellizer's documentation you can notice this note,
To avoid potential 404 errors, create server routes for each redirectUri
URL that return 200 OK. Or alternatively, you may render a custom template
with a loading spinner. For the moment, a popup will not stay long enough
to see that custom template, due to 20ms interval polling, but in the
future I may add support for overriding this polling interval value.
So why it was working fine on desktop browsers, while fails sometimes in
mobile browsers ?
I guess this is due to the latency or poor connectivity problems that
exists more in mobility, so you can notice such behaviour easily there. For
further illustration to the problem, open the satellizer.js file, then pay
close attention to the this code.
Popup.prototype.polling = function (redirectUri) {
        var _this = this;

        return this.$q(function (resolve, reject) {

            var redirectUriParser = document.createElement('a');

            redirectUriParser.href = redirectUri;

            var redirectUriPath = getFullUrlPath(redirectUriParser);

            var polling = _this.$interval(function () {

                if (!_this.popup || _this.popup.closed || _this.popup.closed === undefined) {

                    _this.$interval.cancel(polling);

                    reject(new Error('The popup window was closed'));

                }

                try {

                    var popupWindowPath = getFullUrlPath(_this.popup.location);

                    if (popupWindowPath === redirectUriPath) {

                        if (_this.popup.location.search || _this.popup.location.hash) {

                            var query = parseQueryString(_this.popup.location.search.substring(1).replace(/\/$/, ''));

                            var hash = parseQueryString(_this.popup.location.hash.substring(1).replace(/[\/$]/, ''));

                            var params = angular.extend({}, query, hash);

                            if (params.error) {

                                reject(new Error(params.error));

                            }

                            else {

                                resolve(params);

                            }

                        }

                        else {

                            reject(new Error('OAuth redirect has occurred but no query or hash parameters were found. ' +

                                'They were either not set during the redirect, or were removed—typically by a ' +

                                'routing library—before Satellizer could read it.'));

                        }

                        console.log("Polling");

                        _this.$interval.cancel(polling);

                        _this.popup.close();

                    }

                }

                catch (error) {

                }

            }, 500);

        });

    };

You can notice that this function is responsible for watching the Popup
window path, check if the Popup window url is equal to the redirectUri and
then checks for the returned code and other meta data. If angular catched
the url, didin't recognise it, and then redirected it to another state
(Which sometimes could be the same login url you are using or '/' if you
didin't assign one), it will go infinitly inside this loop
var popupWindowPath = getFullUrlPath(_this.popup.location);
                    if (popupWindowPath === redirectUriPath) {

                        if (_this.popup.location.search || _this.popup.location.hash) {

                            var query = parseQueryString(_this.popup.location.search.substring(1).replace(/\/$/, ''));

                            var hash = parseQueryString(_this.popup.location.hash.substring(1).replace(/[\/$]/, ''));

                            var params = angular.extend({}, query, hash);

                            if (params.error) {

                                reject(new Error(params.error));

                            }

                            else {

                                resolve(params);

                            }

                        }

This will cause the exact behaviour you were describing.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/sahat/satellizer/issues/1021#issuecomment-273457545,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABpo2jjrq3dxbNVvFW6IGMJ18IUsT-iKks5rTf6MgaJpZM4K8xP7
.

handle the redirectUri and you will eliminate it.

Okay. Lots of people did that before.
Didn't work for them, so I thought its not that. Will try. Thank you.
On Wed, Jan 18, 2017 at 4:09 PM, Mohamed Luay<EMAIL_ADDRESS>wrote:

handle the redirectUri and you will eliminate it.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/sahat/satellizer/issues/1021#issuecomment-273518762,
or mute the thread
https://github.com/notifications/unsubscribe-auth/ABpo2nIrPIeohPC_UvOgbbsEP2KjSZt_ks5rTjkjgaJpZM4K8xP7
.

--
Ali Gajani
Founder at Mr. Geek
www.mrgeek.me
www.aligajani.com


ORC-274: Remove columnNames field from Reader.Options

What changes were proposed in this pull request?

Remove the columnNames field from Reader.Options
Add searchArgument(SearchArgument sarg) as default method for SARG construction
Deprecate searchArgument(SearchArgument sarg, String[] columnNames)

Why are the changes needed?
Codebase cleaning and simplification with API consistency
How was this patch tested?
Extended existing tests

@dongjoon-hyun can you please take a look?

Hey @dongjoon-hyun -- sure  API backward compatibility is definitely something we should keep an eye on -- I was personally trying to upgrade to 1.6 on HIVErecently and bumped into too many API incompatibilities.
However, we could also use schema/schemaEvolution and SARGS to derive columnNames (without keeping the extra field).
Would something like the above make sense?

Ya. Sure, but my suggestion is we can do that after we finish Hive/Spark migration on 1.6 first~ Let's not increase the API compatibility gap any more.

Ya. Sure, but my suggestion is we can do that after we finish Hive/Spark migration on 1.6 first~ Let's not increase the API compatibility gap any more.

Sure, sounds like a plan :)

I'll convert this PR as Draft status to prevent any accidental merge for a while.

Sorry for the delay here, @pgaref . I switch to from Draft to Normal. If this PR passes all three project CIs (Hive/Iceberg/Spark), we are good to go~

Sorry for the delay here, @pgaref . I switch to from Draft to Normal. If this PR passes all three project CIs (Hive/Iceberg/Spark), we are good to go~

Sorry for the delay here, @pgaref . I switch to from Draft to Normal. If this PR passes all three project CIs (Hive/Iceberg/Spark), we are good to go~

Thanks @dongjoon-hyun  for reviving this !
Just updated the PR to address the getColumnNames incompatibility -- if we wanted to use schema instead of predicate leaves we would have to move the method to the ReaderImpl class thus kept it simple here.

Sorry for the delay here, @pgaref . I switch to from Draft to Normal. If this PR passes all three project CIs (Hive/Iceberg/Spark), we are good to go~

Thanks @dongjoon-hyun  for reviving this !
Just updated the PR to address the getColumnNames incompatibility -- if we wanted to use schema instead of predicate leaves we would have to move the method to the ReaderImpl class thus kept it simple here.


InvalidArgumentError (see above for traceback): Input to reshape is a tensor with 401408 values, but the requested shape has 802816

10-20 12:02:08 - x - INFO: - Input to reshape is a tensor with 401408 values, but the requested shape has 802816
[[node BatchGather/Reshape_2 (defined at /home/zxy/3dtest/3D-Face-GCNs/utils.py:832) ]]
[[node render_1/strided_slice_34 (defined at /home/zxy/anaconda3/envs/tensorglue/lib/python3.6/site-packages/rasterize_triangles.py:121) ]]

Caused by op 'BatchGather/Reshape_2', defined at:
File "main.py", line 142, in
main()
File "main.py", line 95, in main
model = NormalModel(args, sess, graph, refer_mesh, image_paths, img_file)
File "/home/zxy/3dtest/3D-Face-GCNs/model_normal.py", line 16, in init
super(Model, self).init(*args, **kwargs)
File "/home/zxy/3dtest/3D-Face-GCNs/base_model.py", line 115, in init
self.build_graph()
File "/home/zxy/3dtest/3D-Face-GCNs/base_model.py", line 200, in build_graph
pred_results = self.inference(self.train_rgbas, self.coeff, self.image_emb)
File "/home/zxy/3dtest/3D-Face-GCNs/base_model.py", line 354, in inference
proj_color = self.project_color(proj_vert, eros_image)
File "/home/zxy/3dtest/3D-Face-GCNs/base_model.py", line 1029, in project_color
proj_color = utils.batch_gather(flatten_image, coords)
File "/home/zxy/3dtest/3D-Face-GCNs/utils.py", line 718, in batch_gather
return _batch_gather(params, indices, batch_dims=indices.shape.ndims - 1)
File "/home/zxy/3dtest/3D-Face-GCNs/utils.py", line 832, in _batch_gather
flat_params = tf.reshape(params, tf.concat([[flat_inner_shape], outer_shape], axis=0))
File "/home/zxy/anaconda3/envs/tensorglue/lib/python3.6/site-packages/tensorflow/python/ops/gen_array_ops.py", line 7179, in reshape
"Reshape", tensor=tensor, shape=shape, name=name)
File "/home/zxy/anaconda3/envs/tensorglue/lib/python3.6/site-packages/tensorflow/python/framework/op_def_library.py", line 788, in _apply_op_helper
op_def=op_def)
File "/home/zxy/anaconda3/envs/tensorglue/lib/python3.6/site-packages/tensorflow/python/util/deprecation.py", line 507, in new_func
return func(*args, **kwargs)
File "/home/zxy/anaconda3/envs/tensorglue/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 3300, in create_op
op_def=op_def)
File "/home/zxy/anaconda3/envs/tensorglue/lib/python3.6/site-packages/tensorflow/python/framework/ops.py", line 1801, in init
self._traceback = tf_stack.extract_stack()

InvalidArgumentError (see above for traceback): Input to reshape is a tensor with 401408 values, but the requested shape has 802816
[[node BatchGather/Reshape_2 (defined at /home/zxy/3dtest/3D-Face-GCNs/utils.py:832) ]]
[[node render_1/strided_slice_34 (defined at /home/zxy/anaconda3/envs/tensorglue/lib/python3.6/site-packages/rasterize_triangles.py:121) ]]

Several tests proved that the input tensor and requested tensor always have a 401408 difference (no matter how big or small the batch is). Need help......

It seems that if change the batch to 2, the problem will be solved...... But why?


error: ‘class tf::TransformListener’ has no member named ‘getTF2BufferPtr’

In file included from /home/wmx/myWorkSpace/ros_ws/src/rviz/src/rviz/frame_manager.cpp:30:0:
/home/wmx/myWorkSpace/ros_ws/src/rviz/src/rviz/frame_manager.h: In member function ‘const std::shared_ptr<tf2_ros::Buffer> rviz::FrameManager::getTF2BufferPtr()’:
/home/wmx/myWorkSpace/ros_ws/src/rviz/src/rviz/frame_manager.h:243:74: error: ‘class tf::TransformListener’ has no member named ‘getTF2BufferPtr’
const std::shared_ptr<tf2_ros::Buffer> getTF2BufferPtr() { return tf_->getTF2BufferPtr(); }

Please take more time to properly format your questions and add more details, like how you produced this error.
Also please ask questions on answers.ros.org, see: https://wiki.ros.org/Support

You need to make sure you're using the right version of ROS with rviz. The melodic-devel branch needs a newer version of tf than you are using.

You need to make sure you're using the right version of ROS with rviz.

True, but currently release version 1.13.1 does not compile with fresh ros-kinetic. I did upgrade Ubuntu packages today and then attempt to recompile rviz, but got the same error as in the subject message.
Pretty formatted error:
[  1%] Building CXX object src/rviz/CMakeFiles/rviz.dir/bit_allocator.cpp.o
[  1%] Building CXX object src/rviz/CMakeFiles/rviz.dir/config.cpp.o
[  1%] Building CXX object src/rviz/CMakeFiles/rviz.dir/display.cpp.o
[  2%] Building CXX object src/rviz/CMakeFiles/rviz.dir/display_factory.cpp.o
[  2%] Building CXX object src/rviz/CMakeFiles/rviz.dir/display_group.cpp.o
[  2%] Building CXX object src/rviz/CMakeFiles/rviz.dir/displays_panel.cpp.o
[  3%] Building CXX object src/rviz/CMakeFiles/rviz.dir/failed_display.cpp.o
[  3%] Building CXX object src/rviz/CMakeFiles/rviz.dir/failed_panel.cpp.o
[  5%] Building CXX object src/rviz/CMakeFiles/rviz.dir/failed_tool.cpp.o
[  5%] Building CXX object src/rviz/CMakeFiles/rviz.dir/failed_view_controller.cpp.o
[  5%] Building CXX object src/rviz/CMakeFiles/rviz.dir/frame_manager.cpp.o
In file included from /home/t4g/repos/cnord/opt/rviz/src/rviz/frame_manager.cpp:30:0:
/home/t4g/repos/cnord/opt/rviz/src/rviz/frame_manager.h: In member function ‘const std::shared_ptr<tf2_ros::Buffer> rviz::FrameManager::getTF2BufferPtr()’:
/home/t4g/repos/cnord/opt/rviz/src/rviz/frame_manager.h:243:74: error: ‘class tf::TransformListener’ has no member named ‘getTF2BufferPtr’
   const std::shared_ptr<tf2_ros::Buffer> getTF2BufferPtr() { return tf_->getTF2BufferPtr(); }

The 1.13.x release series is targeting Melodic. If you want to build the melodic-devel branch on Kinetic, you will also need to update tf2 to melodic-devel and build it together with rviz.


FR: Allow other password storage methods

The default password storage method relies on the system keychain, which for some reason does not work well on headless systems. Are there other ways that the password could be stored, or is there a way to ensure that the keychain will work with a headless system?
Error received:
$ system-mqtt set-password
Password: <entered interactively>
Fatal error: Keyring Error: Secret Service Error: Dbus error: "The name org.freedesktop.secrets was not provided by any .service files"
If you have not yet set the password run `system-mqtt set-password`.

I have a requirement that passwords not be stored in plain-text form, so I try to pass it off to OS utilities and hope they can pull in a TPM or some other encrypted storage method. This was just a method recommended by a guy in the Rust Discord.
If you can think of a secure way to store a password that works well in your environment, I'm willing to listen.

Totally agreed on not storing in plaintext. I'll think about it and see if I can come up with any secure alternative methods.

hi! have you found any solution for this? thx for your work!

Thanks for the update, I'll update my fork and test when I have some time!


Improve profile picture layout

At the moment, the profile pictures at the top, overflow when the screen is too narrow, or there's too many pictures!
This issue will need you to go through the CSS and make sure the website is responsive!

I can take a stab at this.


How to train on my own dataset?

Hi,
Your work is really great. But how to train on my own dataset? My dataset likes DUTS， which masks are binary. I noticed that it is the validation set because it is only validated on DAVIS. Can you tell me where I can modify the color palette for semantic segmentation?

If I don't change the label palette, the console output is mostly 0 for loss and iou

Or maybe there is an error somewhere else? I would appreciate any help you can provide!

Hi, sorry for the late reply.
TMO uses DAVIS and DUTS during network training. As you said, they have different formats so we have to deal with them differently. As can be seen at the data-loading files, DAVIS masks are generated based on "palette" manner while DUTS masks are generated based on a simple quantization manner, i.e., 0 or 1.
If you want to use semantic segmentation datasets during training, you should select a single target class and convert the ground truth masks to binary format (1 for the target class and 0 for others).

Hi, sorry for the late reply.
TMO uses DAVIS and DUTS during network training. As you said, they have different formats so we have to deal with them differently. As can be seen at the data-loading files, DAVIS masks are generated based on "palette" manner while DUTS masks are generated based on a simple quantization manner, i.e., 0 or 1.
If you want to use semantic segmentation datasets during training, you should select a single target class and convert the ground truth masks to binary format (1 for the target class and 0 for others).

Thank you very much! I'll look into this section more closely.


Issue implementing Swashbuckle OpenApi on BlazorHosted App

I'm trying to implement Swagger OpenApi Documentation on my app which is created using blazorhosted template on core 3.0 preview.
When I compile the code there is no issue.
But when I try to navigate to http://localhost:5000/swagger I see the below error in console window. Any help to fix it will be much appreciated.
WASM: System.InvalidOperationException: 'Router' cannot find any component with a route for '/swagger', and no fallback is defined.
Startup.cs code:
`
public void ConfigureServices(IServiceCollection services)
{
services.AddMvc().AddNewtonsoftJson();
        services.AddResponseCompression(opts =>
        {
            opts.MimeTypes = ResponseCompressionDefaults.MimeTypes.Concat(
                new[] { "application/octet-stream" });
        });

        // Register the Swagger generator, defining 1 or more Swagger documents
        services.AddSwaggerGen(c =>
        {
            c.SwaggerDoc("v1", new OpenApiInfo { Title = "My API", Version = "v1" });
        });
    }

    // This method gets called by the runtime. Use this method to configure the HTTP request pipeline.
    public void Configure(IApplicationBuilder app, IWebHostEnvironment env)
    {
        app.UseResponseCompression();

        if (env.IsDevelopment())
        {
            app.UseDeveloperExceptionPage();
            app.UseBlazorDebugging();
        }

        app.UseRouting();

        app.UseEndpoints(endpoints =>
        {
            endpoints.MapDefaultControllerRoute();
        });

        app.UseBlazor<Client.Startup>();

        // Enable middleware to serve generated Swagger as a JSON endpoint.
        app.UseSwagger();

        // Enable middleware to serve swagger-ui (HTML, JS, CSS, etc.),
        // specifying the Swagger JSON endpoint.
        app.UseSwaggerUI(c =>
        {
            c.SwaggerEndpoint("/swagger/v1/swagger.json", "My API V1");
            c.RoutePrefix = string.Empty;
        });
    }

`

Not sure if this will help you or not but I would try moving app.UseBlazor<Client.Startup>(); to the end of the pipeline. I am wondering if app.UseBlazor<Client.Startup>(); terminates the flow and the Swagger stuff does not even get a chance to execute.... just a theory.

Thanks for your help rxelizondo... But unfortunately it did not work.

Sorry, I was able to fix the issue myself. I had missed to add [FromBody] for a Post method hoping it will be implicitly taken care as [FromQuery]. But that seem to have fixed the issue.


[CMake] Test existence of python entries

Split from #15166
@mrry Friendly ping,

Can one of the admins verify this patch?

@mrry Friendly ping.

Jenkins, test this please.

@Androbin could you pull rebase and push again?

Nearly forgot about the other change set. Should be fine now.

Jenkins, test this please.

file_block_cache_test is flaky, ignoring.

@drpngx Seems like the "Sanity Checks" and the "Windows CMake Tests" are stuck.

Jenkins, test this please.
Yeah, it looks like there is some problem with Windows cmake. @yifeif might
know something about it
On Fri, Dec 29, 2017, 4:20 AM Robin Richtsfeld<EMAIL_ADDRESS>wrote:

@drpngx https://github.com/drpngx Seems like the "Sanity Checks" and
the "Windows CMake Tests" are stuck.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/tensorflow/tensorflow/pull/15602#issuecomment-354439130,
or mute the thread
https://github.com/notifications/unsubscribe-auth/AT_SbUWoFu3jhwmUqeMecNkgoLoqXx3kks5tFNkngaJpZM4RLq2d
.

Jenkins, test this please.

Jenkins, test this please.

All tests pass (including sanity), ignoring ci.tensorflow.org status.


scikits.talkbox install failed with python 3.6 on windows

I installed scikits.talkbox on python 2 and it's installed normally .The problem that i have to use python 3 because tensorflow is compatible only with python 3 on windows .Here some comments on the command prompt when i try to install scikits.talkbox .
For example:
*Running setup.py bdist_wheel for scikits.talkbox ... error
*No module named 'numpy.distutils._msvccompiler' in numpy.distutils; trying from distutils
*LINK : error LNK2001: unresolved external symbol PyInit__lpc
*build\temp.win-amd64-3.6\Release\scikits\talkbox\linpred\src_lpc.cp36-win_amd64.lib : fatal error LNK1120: 1 unresolved externals
*\scikits\talkbox\linpred_lpc.cp36-win_amd64.pyd /IMPLIB:build\temp.win-amd64-3.6\Release\scikits\talkbox\linpred\src_lpc.cp36-win_amd64.lib" failed with exit status 1120
*Failed building wheel for scikits.talkbox
*failed with error code 1 in C:\Users\DALIKA~1\AppData\Local\Temp\pip-build-sq6cbxni\scikits.talkbox
how can i resolve this problems please . Kinds regards

Had the same, shame there is no stable LPC implementation in python


Two minor fixes

Remove duplicated translation

Point banner link to correct page for draft job applications (should be review page, not application view page)

https://teaching-vacancies-review-pr-3151.london.cloudapps.digital/


Deprecate auth parameter and add new channel parameter

Summary
Deprecate existing auth parameter to IBMRuntimeService and introduce new channel parameter to better accommodate the different channels that may be available in the future.
channel="ibm_quantum"
channel="ibm_cloud"
Details and comments
Fixes #217
TODO

[x] Add channel parameter and replace auth everywhere with channel to make channel work (auth gets broken at the end of this step)
[x] Deprecate auth parameter and fix code now to make auth also to work alongside channel

[x] Save account (save_account)
[x] Delete account (delete_account)
[x] List saved accounts (saved_accounts)
[x] Enable account (__init__)

[x] Add new environments ibm-quantum-production, ibm-quantum-staging, ibm-cloud-production and ibm-cloud-staging.
[ ] Duplicate some channel tests and make them work using auth flow

auth parameter and the tests related to it will be removed in a later release as per Qiskit deprecation policy.

Pull Request Test Coverage Report for Build<PHONE_NUMBER>

-33 of 129 (74.42%)  changed or added relevant lines in 11 files are covered.
2 unchanged lines in 1 file lost coverage.
Overall coverage decreased (-0.2%) to 68.88%

Changes Missing Coverage
Covered Lines
Changed/Added Lines
%

qiskit_ibm_runtime/api/auth.py
2
3
66.67%

qiskit_ibm_runtime/api/clients/auth.py
1
2
50.0%

qiskit_ibm_runtime/accounts/account.py
17
19
89.47%

qiskit_ibm_runtime/accounts/management.py
24
26
92.31%

qiskit_ibm_runtime/accounts/storage.py
8
11
72.73%

qiskit_ibm_runtime/ibm_runtime_service.py
25
49
51.02%

Files with Coverage Reduction
New Missed Lines
%

qiskit_ibm_runtime/ibm_runtime_service.py
2
75.57%

Totals

Change from base Build<PHONE_NUMBER>:
-0.2%

Covered Lines:
2085

Relevant Lines:
3027

💛  - Coveralls


Inconsistency in has_content error reporting

When testing has_content against that which has been transformed using css 'text-transform' property, the error message displays the transformed text, but the check is made against the original text.
Seems that the test and the error message are using different strings.
For exmaple:
# stylesheet
.textblock { text-transform: uppercase; }

# html

some text

# spec
page.should have_content("SOME TEXT")

# error message
expected there to be content "SOME TEXT" in "SOME TEXT" (RSpec::Expectations::ExpectationNotMetError)

but this test passes:
page.should have_content("some text")

Using 1.0.1 and cucumber 1.0.2

This should now be fixed by the has_text? matcher which uses the same method for both. has_content? is now simply an alias for has_text?

Hi Jonas,
This still occurs on capybara 1.1.2

@suweller: yes it does, this change is only on master.

cool, i needed this, thanks.


Question about Sparse Density Map Marching Cube

Hi,
I have a question about the marching cube step when using sparse density map. In the code here
            // We want to find edges that cross the iso-surface,
            // therefore we can choose to either skip all points above or below the threshold.
            //
            // In most scenes, the sparse density map should contain more entries above than
            // below the threshold, as it contains the whole fluid interior, whereas areas completely
            // devoid of fluid are not part of the density map.
            //
            // Skip points with densities above the threshold to improve efficiency
            if point_value > iso_surface_threshold {
                return;
            }

So it skips all the points with larger values. For points with lower values, it finds the neighbor, and check if it cross the threshold.
But for edged like this
0----------value larger than threshold
So, one side of the edge has value 0. The check will be skipped, because it's not in the density map.  On the other side has large enough value, and it will be skipped as well.
In the end, this triangle vertex will be skipped, though it should be a vertex here
I think this is a rare case, but with very small threshold, this can happen

Hi, thanks for the message. I think in my implementation of the surface reconstruction pipeline, this case should not happen, as I evaluate the particle kernels with a radius that is basically cellsize * ceil(support_radius/cellsize) (see here). Thus, there should always be a density = 0 ring around the fluid. I guess the comments and documentation of the marching cubes function should be updated to highlight that this is expected.

yes. it does have a density=0 ring. But the grid with density=0 may not explicitly inside the density_map.
For example, if I have only 1 particle at the position (0.5, 0, 0 ), and i want the grid which is all axes are integers. so, cellsize = 1 in this case. If we take support_radius equals to 1 as well.  then the actual evaluated radius  cellsize * ceil(support_radius/cellsize) is 1 as well.
I will use F(x,y,z) means the value at grid point(x,y,z). So obviously F(0,0,0) has a non zero value.  For the point (-1, 0,0),  at this line,  r_squared < self.kernel_evaluation_radius_sq will returns false. so
*sparse_densities
 .entry(flat_point_index)
.or_insert(R::zero()) += density_contribution;

this part will be skipped  for point(-1,0,0)
In the end, sparse_densities contains value at F(0,0,0), but not F(-1,0,0), which is implicitly  0.
If the threshold value is between F(0,0,0) and 0. It won't create a vertex between (-1,0,0) and (0,0,0), but it should. Because when looping over the sparse_densities, F(0,0,0) is skipped by if point_value > iso_surface_threshold , and F(-1,0,0) is not added into sparse_densities

Right, I see your point. Even though the self.kernel_evaluation_radius_sq contains a small epsilon, this small epsilon might not be enough to insert an explicit 0 value into the density map in all cases which can trigger a bug of missing isosurface vertices in your scenario. I think there are two ways to fix this:

Reverse the if point_value > iso_surface_threshold { return; } check that you posted in your original message (and adapt the rest of the function accordingly). This way, we could handle cases where edges have a value greater than the threshold on one side and no value at all on the other side. However, this would mean that we would always enter the inner loop of the isosurface vertex creation for all vertices that are inside of the volume of the fluid until we find out that there is no neighbor that is below the threshold. This could be more expensive for scenes with a large interior volume.
Ensure that an explicit 0 ring is always added to the density map. This could be done by adjusting the kernel_evaluation_radius to kernel_evaluation_radius =      cube_size * (half_supported_cells_real * (R::one() + R::default_epsilon().sqrt()) + R::one()) i.e. adding a 1 x cube_size ring where the kernel is evaluated. This should be the maximum required radius offset to always write an explicit zero if I'm not mistaken? So this will add quite some amount of entries to the density map, proportional to the surface area of the fluid. In terms of performance this will also increase the number of evaluations of the density field for all particles, even in the interior of the fluid.

I'm not entirely sure which approach is preferable in general... Usually I would assume that there are more points of the marching cubes grid than particles to get a nice mesh. But it will also change for scenes with a lot of separated/isolated particles vs. a cube of fluid.
In any case, we should add some tests for this.

For now I decided to use the first approach: https://github.com/InteractiveComputerGraphics/splashsurf/commit/919d3dcc1859ed9727e6f64b54fa9f8631dcac5e
Note that the parallel reconstruction using domain decomposition was never affected by this problem, only the "global" reconstruction.


Add Full Support for Comms Console

Add support for calling other factions, to give gifts or request aid/a caravan, such that this can be re-enabled.

Has anyone looked into this yet and why it wasn't implemented before?

We are still in the proces of getting used to the project. Most of US (me included) joined the Team today. We Already create issues for what we think would be a reasonable target for the next Release, but first we should get a bettet foundation and start figuring out how the mod works etc.

they are reasonable targets I agree, We may need to look at commenting the code up better and changing some variables around its very messy.

I can check that somewhere around weekend

Idea: check zetriths github for the comms console code he may have had it in there at one point whether it was working or semi working and go from there @6opoDuJIo


Gitsigns does not automatically attach

Description
With Neo-tree and Gitsigns installed, when I open neovim with nvim ., when opening any buffer Gitsigns does not automatically attach and does not work until I run :Gitsigns attach manually.
Neovim version
v0.9.2
Operating system and version
Mac OS Ventura 13.5 (22G74)
Expected behavior
No response
Actual behavior
See description.
Minimal config
for name, url in pairs{
  gitsigns = 'https://github.com/lewis6991/gitsigns.nvim',
  plenary = 'https://github.com/nvim-lua/plenary.nvim',
  nui = 'https://github.com/MunifTanjim/nui.nvim',
  neotree = 'https://github.com/nvim-neo-tree/neo-tree.nvim'
} do
  local install_path = vim.fn.fnamemodify('gitsigns_issue/'..name, ':p')
  if vim.fn.isdirectory(install_path) == 0 then
    vim.fn.system { 'git', 'clone', '--depth=1', url, install_path }
  end
  vim.opt.runtimepath:append(install_path)
end

require('gitsigns').setup{
  debug_mode = true, -- You must add this to enable debug messages
}

require('neo-tree').setup({
  source_selector = {
    winbar = true
  },
  filesystem = {
    filtered_items = {
      hide_dotfiles = false,
      hide_gitignored = false
    },
    follow_current_file = {
      enabled = true,
      leave_dirs_open = true
    }
  }
})

Steps to reproduce

nvim --clean -u minimal.lua
nvim .  # inside a .git folder
open a buffer for any version controlled file

Gitsigns debug messages
No response

Sorry I am not able to reproduce. Can you make sure the steps provided are as precise as possible.

Ok, I can give it another go:
My config in ~/.config/nvim has inside only an init.lua with inside the minimal config posted above.
Then i open a shell and run these commands:
$ cd ~
$ mkdir test
$ cd test
$ git init
$ touch test_file.md
$ nvim .

Neovim opens up with Neo-Tree, from the tree I navigate to test_file.md and open it.
Inside this file, if I start typing and editing the content, gitsigns symbols do not appear in the gutter:

If I run :Gitsigns attach now it starts working propertly:

I have this same experience using neo-tree and gitsigns, doesn't work until I manually attach

I have this same experience using neo-tree and gitsigns, doesn't work until I manually attach

Please refrain from "me too" messages.
What is helpful is minimal reproduction steps.

I noticed this as well, when i changed my file explorer from nvim-tree to neo-tree

Reproduction steps
for name, url in pairs({
    gitsigns = "https://github.com/lewis6991/gitsigns.nvim",
    -- ADD OTHER PLUGINS _NECESSARY_ TO REPRODUCE THE ISSUE

    neotree = "https://github.com/nvim-neo-tree/neo-tree.nvim",
    -- neo tree deps
    plenary = "https://github.com/nvim-lua/plenary.nvim",
    nui = "https://github.com/MunifTanjim/nui.nvim",
}) do
    local install_path = vim.fn.fnamemodify("gitsigns_issue/" .. name, ":p")
    if vim.fn.isdirectory(install_path) == 0 then
        vim.fn.system({ "git", "clone", "--depth=1", url, install_path })
    end
    vim.opt.runtimepath:append(install_path)
end

require("neo-tree").setup({})

require("gitsigns").setup({
    debug_mode = true, -- You must add this to enable debug messages
    -- ADD GITSIGNS CONFIG THAT IS _NECESSARY_ FOR REPRODUCING THE ISSUE
})

-- ADD INIT.LUA SETTINGS THAT IS _NECESSARY_ FOR REPRODUCING THE ISSUE

nvim --clean -u minimal.lua path/to/dir

result: neo-tree window is open listing files in dir. when selecting some file from dir with changes, gitsigns does not show them. how ever, when opening the file directly via
nvim --clean -u minimal.lua path/to/file

then gitsigns shows changes

here is also a temp fix i found
-- init.lua
vim.cmd("source path/to/gitsigns_config.lua")

I reverted back to last tagged version: v0.6 of this plugin for now. Everything works as expected there.