Cycle Start from Settings Page

I've found that pressing cycle start with a tool path loaded while the settings page is open leads to nothing happening until you click off the settings page. I'm not sure if this is a bug but it does feel a little opaque and I did nearly have an accident with it. Here's a video with this behaviour. https://www.youtube.com/shorts/1zC--DzN6R4
using ioSender.2.0.43

What I have seen is that when the controller gets a CYCLE start via either real-time command (0x81) or from the pin it is essentially buffered and will be reported on the next real-time report (?)
With IOSender this means that you can get a situation where the sender has stopped sending its periodic ? command and so its processing of the 0x81 is delayed beyond what the user is expecting.
Just my own impression of what is going on.  I have not looked at this with autoreporting enabled as that might make the behaviour more intuitive?

Hmmm, agree that isn't a good thing. What do other Grbls do? What happens with other GCode Senders?
This is an unexpected behavior and should be disallowed/prevented. Even though it is unlikely to happen, it is not improbable.

I've found that pressing cycle start with a tool path loaded

I assume this is a cycle start button that is connected to the controller.

With IOSender this means that you can get a situation where the sender has stopped sending its periodic ? command and so its processing of the 0x81 is delayed beyond what the user is expecting.

Correct. Note that the controller itself will handle the cycle start when streaming from the SD card, either when in feed hold state or when waiting for it in the tool change workflow.

I have not looked at this with autoreporting enabled as that might make the behaviour more intuitive?

ioSender disables auto reporting when in control so the behaviour should be the same.

What do other Grbls do?

When cycle start is pressed it is added to the real-time report in the Pn: element just as grblHAL does. IIRC a difference is that grblHAL will report it even if the key is not pressed when the report is prepared. With Grbl it is a hit/miss - if the button is quickly pressed it might not be included.

What happens with other GCode Senders?

I do not know, my guess is that most ignores it since not many users connect buttons to the feed hold/cycle start inputs?
ioSender obviously acts upon receiving the cycle start and IMO should continue to do so - but not when tabs are shown that cannot be used to start a loaded program. I'll try to fix this somehow - likely by telling the protocol parser to ignore cycle start in the first message received after leaving such tabs.

Hopefully it isn't a hard fix.  Part of Grbl growing pains.

New edge versions uploaded that hopefully fixes this, or at least minimizes the risk. Please report back if anybody is able to replicate the issue - and then with exact details on how to do so,

New edge versions uploaded that hopefully fixes this, or at least minimizes the risk. Please report back if anybody is able to replicate the issue - and then with exact details on how to do so,

Thanks! I'll give it a check tomorrow

This is what we found working on the SLB with IOSender 2.0.42:
While a job is running:

Halt a job using the macro buttons
grbl.enqueue_realtime_command(CMD_RESET)
Cycle start using the macro buttons
grbl.enqueue_realtime_command(CMD_CYCLE_START)
Unlock the machine in iosender
The file will restart running and eventually come to a stop

I believe that Sienci plans to handle this in gSender.  I am sure we can get you an SLB if you feel it is helpful.

While a job is running:
1. Halt a job using the macro buttons
grbl.enqueue_realtime_command(CMD_RESET)
2. Cycle start using the macro buttons
grbl.enqueue_realtime_command(CMD_CYCLE_START)
3. Unlock the machine in iosender
4. The file will restart running and eventually come to a stop

The latest edge build woks as it should, I'll try to prepare a release during the next few days.
I have also looked into changing the logic behind this on controller side but decided not to since it would, IMO, make it ambiguous.

I am sure we can get you an SLB if you feel it is helpful.

Yes, I think it would be.

Not sure if my issue is related to this or not but my iosender is frequently going in to cycle start without me clicking the button. I cannot leave the GUI up for even 5 minutes if a file is loaded because it will just kick it off and start breaking stuff. I already ruined one touch probe and broke more than one carbide end mill from this issue.  I suspected that this was only happening while using the probe tab but that was wrong it happens on the main grbl screen too. Then I suspected it was my touch screen monitor so I unplugged the USB for it and it is still happening. I have since turned the system off and am searching for a replacement as I cannot use it in its current state, I updated to the latest version this evening and the issue is still present maybe happening even more than before.

Does the code initialize all of the pins to a pull-up state or are they floating when not connected?

For the ESP32 that depends on the pin since not all has an internal pullup. Anyway the internal pullup shuld not be relied upon as it is usually about 50 KOhm which is a rather high value. A properly designed CNC breakout should have an additional pullup with either a RC network or an optocoupler in front of it to minimize the risk of EMI triggering the input. An the swich current should be large enough to provide contact wetting.

How does the GUI respond when the CS pin is activated on the uc?

By starting a loaded program or a probing sequence depending on which tab is open.

Can the CS pin be disabled through configuration?

Not yet, short the CS pin to VCC or ground for now. And the feed hold pin as well if not used.

In response to your statement, I am not using any break out boards because the commercialy available ones I looked into initially where designed with integrated stepper drives which where fairly low powered and appeared to be targeted towards DIY 3d printers, I am retrofitting VMCs and other 10,000+ pound machines. Maybe there is more reasonable BOBs available now that I should look into. Ive just been using screw terminal boards and building everything else out with standard panel controls on DIN rail.

So why does G38.2 not move the machine to 0.4?

Step/mm resolution is too low?

Maybe there is more reasonable BOBs available now that I should look into.

There are, a number of boards made for CNC use has proper output and input protection and signal conditioning.

Does G01 and G38.2 interpret tge stepp/mm resolution different from oneanother? I had just assummed that the resolution would be the same between G01 and G38.2

I am going to open a seperate thread to continue this.


Installing on a shared hosting ?

Hi,
I copied by FTP the TaskBoard files in a folder on my server, I gave the write access to api folder, but when I go in a web browser and use the admin-admin login/password, I can't do nothing in Board or Settings... What is the problem, please ?
Thank you for your great work, best regards

You probably need the vendor files for the back end if you didn't do that before uploading.
You can get a (somewhat outdated) copy here: https://dl.dropboxusercontent.com/u/75313861/vendor.tar.gz

Hi Ratatoskk,
You need to download the dependencies via composer by running this command in terminal (first you have to navigate to the build folder using cd command then execute)  $ php composer.phar install   this will download the dependencies and creates a new folder "vendor" in build "/vendor/" copy the vendor folder to the parent folder. Try to open in the browser it should be working.

Closing due to lack of input from OP. If you still need help, let me know.

same issue here, I don't have shell access to run the install.
it would be nice to have a PHP install that I could run form the browser.


Keyboard show/hide doesn't trigger map resize

I'm submitting a ...  (check one with "x")

[ ] question
[ x] any problem or bug report
[ ] feature request

If you choose 'problem or bug report', please select OS:  (check one with "x")

[x ] Android
[ ] iOS

cordova information:  (run $> cordova plugin list)
insert the output from the command here

If you use @ionic-native/google-maps, please tell the package.json (only @ionic-native/core and @ionic-native/google-maps are fine mostly)
Current behavior:

For maps whose heights are set by percentage,
And when Keyboard pops up, the map HTML div resizes, but size of the Native one remains.
Expected behavior:

This plugin should trigger plugin_touch event as soon as viewport sizechanges.
Plus, Ionic Nativec does not support refreshLayout
Screen capture or video record:

Related code, data or error log (please format your code or data):
The person who share your project files on Github (or other git repository) is in faster lane than other people.
Please share your project files on Github or others(Bitbucket, Gitlabs...etc).
If you don't want to share your project files, please create a demo project, then share it.

Screen captures, and/or native logs(such as Logcat, xcode logs) are appreciate.

Giving much information, you are waiting time is less.
Thank you for your cooperation.

This problem is likely to happen on iOS too

I'm using Ionic 3, Angular v4
Very dirty workaround:
Initially, I had to access window object by creating a provider:
ref: https://juristr.com/blog/2016/09/ng2-get-window-ref/

import {  HostListener } from '@angular/core';
import { WindowRef } from './WindowRef';

  @HostListener('window:resize', ['$event']) onResize(event) {
    this.updateMapSize();
  }

  updateMapSize() {
    console.log('updateMapSize')
    let self = this;
    setTimeout(function() {
      console.log(window)
      self.windowRef.nativeWindow.cordova.fireDocumentEvent("plugin_touch", {
        force: true //must have "force"
      });

    }, 100) //must have reasonable amount of delay
  }

Now, it can be simplified to:

import {  HostListener } from '@angular/core';

  @HostListener('window:resize', ['$event']) onResize(event) {
    this.updateMapSize();
  }

  updateMapSize() {
    console.log('updateMapSize')
    setTimeout(function() {
      cordova.fireDocumentEvent("plugin_touch", {
        force: true //must have "force"
      });

    }, 100) //must have reasonable amount of delay
  }

I'm not sure why cordova.fireDocumentEvent('plugin_touch', {}); didn't work earlier
https://github.com/mapsplugin/cordova-plugin-googlemaps-doc/blob/master/v2.0.0/whats-new-v2/README.md
The below is even worse, eventName is not defined and plugin_touch being taken as invalid event type.
var event = document.createEvent('plugin_touch');
event.initEvent(eventName, false, false);
document.dispatchEvent(event);

Please share your project files on GitHub.

@wf9a5m75
Unfortunately, I'll need to remove private codes to share the project and currently do not have time for that.
However, the problem is pretty clear.
I have also included screenshots to demonstrate the problem.
Map resize is not triggered when keyboard show or hide.
I think in general, the map will not resize if the window resizes. (especially if map css height is percentage)

WIthout any sharing code, I don't help you. If you can't solve the problem, please share your project files on github. I don't matter in public or private. Otherwise, please debug the problem by yourself.


Rescue Postmark::InactiveRecipientError and tag with support

Closes #1382

I originally spent time adding a test case for this. See 5027037 (#1447), but I got it passing in a way that failed when manually testing. I was trying to use a simple begin/rescue block, but it wasn't working because the error was originating from the job scheduled to send the mail. The way to rescue from errors with ActionMailer is to use its rescue_from method, which is extensively tested at the rails level.
It still would be nice to test our implementation, but I could not find anywhere how to trigger an error that is rescued in this rescue_from method in the mailers. There are some examples when using rescue_from in a controller, but in our case this is not helpful.


bspwm module on multiple monitors

I am using the bspwm module on a triple monitor setup. The second Monitor renders unclickable labels for the third monitor. Let me demonstrate this on a simple example:
Configuring bars for each monitor, only displaying a single bspwm module:
[settings]
[bar/left]
monitor = DP-0
modules-left = bspwm

[bar/middle]
monitor = DP-2
modules-left = bspwm

[bar/right]
monitor = DP-4
modules-left = bspwm

[module/bspwm]
type = internal/bspwm
label-active = %name%
label-occupied = %name%
label-urgent = %name%
label-empty = %name%

bspwm monitors are:
bspc monitor DP-0 -d A B
bspc monitor DP-2 -d C D
bspc monitor DP-4 -d E F

running all bars:
lemonbuddy_wrapper left &
lemonbuddy_wrapper middle &
lemonbuddy_wrapper right &

DP-0 (left) shows ABCD when DP-4 has focus, AB when DP-0 has focus
DP-2 (middle) shows CDEF no matter which monitor has the focus
DP-4 (right) shows EF no matter which monitor has the focus
On DP-2 both B and C are clickable, D and E are not doing anything, but they update whenever D or E is clicked on DP-4.
Do you have any idea why it is behaving like that? I assume its a bug in the bspwm module, but i haven't looked into the source yet.
Would be great if we could solve this together!

The bug is located in src/modules/bspwm.cpp:
  // Cut out the relevant section for the current monitor
  if ((n = data.find(prefix + needle_active)) != std::string::npos) {
    if ((m = data.find(":m")) != std::string::npos) data = data.substr(n, m);
  } else if ((n = data.find(prefix + needle_inactive)) != std::string::npos) {
    if ((m = data.find(":M")) != std::string::npos) data = data.substr(n, m);
  } else if ((n = data.find(needle_active)) != std::string::npos) {
    data.erase(0, n);
  } else if ((n = data.find(needle_inactive)) != std::string::npos) {
    data.erase(0, n);
  }

I would much rather cut off the prefix W and grab the relevant data with a regex. I'll do that later or tomorrow and propose a pull request.

I used regex to extract relevant data. This works great on my system.
Please check if it's acceptable code, since i don't have much c++ experience.


remove all controllers except  quota and security

I thought the plan was to remove apiserver team owned controllers and leave the devex owned controllers here..   where are these going?


Parallel Execution of 32 cycles during authentication/ encryption: ~4.5x speed up 🌟

Previously

When initializing state of cipher, 32 consecutive cycles were executed in parallel
But during encrypting/ decrypting and authenticating associated data or plain text, 8 consecutive cycles were executed in parallel

Now

When ever possible 32 consecutive cycles are executed in parallel, generating 32 key stream bits, used for authentication & encryption/ decryption.
It should boost execution speed by ~3.5x ✅
When executing 32 consecutive cycles in parallel, both 128 -bit NFSR and LFSR are interpreted as uint32_t[4] for ease of bit/ byte indexing.
On x86_64 platform, if __BMI2__ CPU featue is available then efficient _pext_u32 intrinsic is used for extracting out even/ odd bits from uint32_t.
Indices which can possibly be computed in compile time are done such way.

With this, I'm seeing these improvements.

Latest benchmark results on ARM CPU systems, seeing performance improvement due to more efficient even, odd bit deinterleaving routine.


Feature Thai (small numbers only)

Small numbers translated into Thai - large numbers remain in English

Coverage decreased (-31.8%) to 68.097% when pulling 6710ee3db6969250c249d0875504b8312d18b08e on brajo083:patch-1 into c6daf100021b7c4bd8687c7a829fdb05f3e02575 on kslazarev:master.

Hello @brajo083! could you also add the following two files:
spec/numbers_and_words/integer/fixture_examples/th.yml
spec/numbers_and_words/array/fixture_examples/th.yml

@brajo083 want to finish this?


2 Updates for M46 post and also updating associated docs about manifest

@jpmedley sorry for two posts in one, originally it was one post but I want to isolate them out.
In the same set of commits I have also update some of the articles as well around the manifest.

Reviewing now.

@PaulKinlan Just a few things.

@jpmedley cool, will sort.  and next time will do it on a local branch :)


lookupAs confusion on my part

Hopefully this is another one of my mis-understanderings™ - and as I'm about to leave for a week of glamping it's not urgent.
I'm trying to encode  https://vega.github.io/vega-lite/examples/airport_connections.html which includes the following transforms
      "transform": [
        {"filter": {"selection": "single"}},
        {
          "lookup": "origin",
          "from": {
            "data": {"url": "data/airports.csv"},
            "key": "iata",
            "fields": ["latitude", "longitude"]
          }
        },
        {
          "lookup": "destination",
          "from": {
            "data": {"url": "data/airports.csv"},
            "key": "iata",
            "fields": ["latitude", "longitude"]
          },
          "as": ["lat2", "lon2"]
        }
      ],

The first one maps to lookup, but I can't get the second one to map to lookupAs

No, not your misunderstanding, just inadequate documentation on my part.
lookupAs allows you to rename the top-level field name. When multiple fields are returned by the lookup, they need to be prefixed with the name you provided using dot notation. So to encode the example above you could do the following:
trans =
    transform
        << filter (fiSelection "mySelection")
        << lookupAs "origin"
            (dataFromUrl "data/airports.csv" [])
            "iata"
            "o"
        << lookupAs "destination"
            (dataFromUrl "data/airports.csv" [])
            "iata"
            "d"

enc =
    encoding
        << position Longitude [ pName "o.longitude", pMType Quantitative ]
        << position Latitude [ pName "o.latitude", pMType Quantitative ]
        << position Longitude2 [ pName "d.longitude" ]
        << position Latitude2 [ pName "d.latitude" ]

It would be possible to make a breaking change to the API allowing a list of aliases as the fourth parameter rather than a single alias as present. I am not sure this would currently be worth it given dot notation can always be used, but happy to hear opinion on this. I also note that Vega-Lite 4 beta introduces a default option for failed lookups, which might require a breaking change anyway, so that might be an opportunity to make this change if it is desired.

I've restructured lookup to accommodate the new (VL4) default option and to make naming 'as' more flexible. lookupAs is now deprecated. This will be a breaking change in the forthcoming release as it redefines the type signature of lookup, but should provide greater flexibility.
The example above is now specified as
trans =
    transform
        << filter (fiSelection "mySelection")
        << lookup "origin"
            (dataFromUrl "data/airports.csv" [])
            "iata"
            (luAs "o")
        << lookup "destination"
            (dataFromUrl "data/airports.csv" [])
            "iata"
            (luAs "d")

You can also replicate the original JSON spec with the following (although I'd argue the spec above is semantically more consistent):
trans =
    transform
        << filter (fiSelection "mySelection")
        << lookup "origin"
            (dataFromUrl "data/airports.csv" [])
            "iata"
            (luFields ["latitude", "longitude"])
        << lookup "destination"
            (dataFromUrl "data/airports.csv" [])
            "iata"
            (luFieldsAs [("latitude", "lat2"), ("longitude","lon2")])


Watch not updated anymore

My Watch has some issues updating for a couple of weeks now. I'm running the latest beta, rc9, which i installed manually. I already removed and readded/reconfigured iCloud3, removed the iWatch from my account and re-add to my apple account. This last action made the iWatch working again for about 2 weeks. But, after updating HASS and iCloud3 using HACS (got an update notification about rc9 couple of days ago) it fails again to update the watch. iPhones work flawlessly. Lot's of logs like this:
2023-12-31 13:00:20 [icloud3_main:1264]  ICLOUD > frans_iwatch > Zone > Unknown, GPS-(0.00000, 0.00000)
2023-12-31 13:00:20 [icloud3_main:0755]  ICLOUD > frans_iwatch > ────▼─▽─▼──── ▷▷ ICLOUD ◁◁ FRANS_IWATCH, CURRZONE-NOT_SET, INITIAL FAMSHR LOCATE@13:00:20 ────▼─▽─▼────
2023-12-31 13:00:20 [determine_in:0747]  ICLOUD > frans_iwatch > No Location Data #14, RetryAt-13:05:20 (5 mins)
2023-12-31 13:00:20 [determine_in:0748]  ICLOUD > frans_iwatch Old Location/Other Error-No Location Data #14, RetryAt-13:05:20 (5 mins)
2023-12-31 13:00:20 [icloud3_main:0901]  ICLOUD > frans_iwatch > ────▲─△─▲──── ▷▷ FAMSHR/FAMSHR ◁◁ FRANS_IWATCH, CURRZONE-NOT_SET, GEN UPDATE ────▲─△─▲────
2023-12-31 13:00:25 [icloud_data_:0414]  LOCDATA > laura_iphone > Located > FamShr-13:00:16 (9 secs ago), iOSApp-00:00:00
2023-12-31 13:00:25 [icloud_data_:0414]  LOCDATA > laura_iphone > Located > FamShr-13:00:16 (9 secs ago), iOSApp-00:00:00
2023-12-31 13:00:25 [icloud3_main:0495]  ICLOUD > laura_iphone > Trigger > Next Update Time Reached
I'm out of options..

Check the Event Log Stages 4 & 5 and review all of the devices iCloud returned to iCloud3 when it started.
Verify that there are not other fran_iwatch watches with a suffix like (2).
verify the correct one is selected on the Configure Settings > Update Devices screen.
Did you get a new watch with the same name. If so, you are probably still tracking the old one.
Delete and readd the watch to iCloud3

Stage 4 of iCloud3 startup shows what devices were returned from iCloud. Check that and review the name.
Configure Settings > Update Devices screen shows the famshr devices that are available. Check that.
The gps-(0.0000, 0.0000) indicates there is no location info.
Did you get a new watch? You might be still trying to track the old one. Delete the watch on Configure Settings > iCloud3 Devices screen and readd it.

The watch is tracked. I just posted these screenshots for another person with a Watch problem.
Have you resolved your issue?

Hi, sorry i didn't respond earlier, having water overflow in our basement last couple of days..
How can i get stages of logging? Also i don't have  an "update devices" screen ?

OK i rebooted both iphone and iwatch and now the iWatch is updated. Sorry, will check icloud.com first next time!


Removed a few unnecessary heap allocations

This is just a minor update to remove a few unnecessary heap allocations.

i like the allocations fix but not sure about the types fix

@karpathy I’ve moved the types update to a separate PR (#188), so you can evaluate it in isolation.

@karpathy I just fixed the merge conflicts. Is there anything holding this PR back?


Android Auto stops working after a phone call - 2020 Mazda CX-5

Hello @nisargjhaveri, thank you for all the hard work putting this project together. Very much appreciated 👍
I'm currently using a Raspberry Pi Zero 2 W using version 0.4.1.
The reliability has greatly improved from version 0.4.0 in my experience with my current infotainment system. AA now connects on the first try and is stable. The only issue that I still get and I'm not able to resolve by changing settings in AA developer settings, etc is the AA disconnect from the infotainment system after making a call.
Once I hang up, I can see the call is done via AA, then the disconnection happens, the infotainment screen shows a mobile error, and AA no longer connects until I power cycle the Raspberry Pi Zero 2 W.
Any advice on any possible troubleshooting will be greatly appreciated. Thank you and have a good day!

Ditto for me.
Doesnt happen all the time, but does require a power cycle of the Zero 2 W to recover.
My setup is MG4 EV, Zero 2 W, Build version 0.41. Al version 12.5.643054

Any chance you can pull out the logs once it disconnects? I'd like to know what fails and kills the connection.
But yes, this is strange. Can't think of a reason why it would fail after the call is complete.

@nisargjhaveri I was able to copy the following from the messages file

Jan  1 00:01:47 buildroot daemon.info hostapd: wlan0: STA f6:08:5f:6f:2a:8f IEEE 802.11: disassociated

Is this when the connection dropped? Or did you manually disconnect wifi after the connection dropped? This is the only sign, and it simply says wifi connection dropped for some reason.
What is also puzzling is that why did the recovery mechanism did not detect TCP failure and try to recover.

That is also one of the questions I had, why did the pi not try to reconnect after the disconnect occurred?
I'll test again and recapture logs to see if they show anything else that can point to the root cause. It is just a weird behavior for the connection to stop after the call is done.

Hi @nisargjhaveri here is the log I captured today. Same behavior, connection drops when hanging up from a call.

The log seems to be partial. Does not contain the actual connection part.

Hi @nisargjhaveri sorry for the confusion. Seems like the copy/paste cannot handle the entire log. Tried to use SCP to copy the messages file to my Documents folder, but no luck.
If you could please advise on the proper procedure for copying the messages file, it will be greatly appreciated.

scp should've worked! :) If not, if you copy/paste the longest you can but from the end, that might also help.

Same issue here with MIB3 Audi A1 and rpi 2W. After a call starts it only can stay connected for a few seconds, then it gets disconnected.
My configuration is not really standard... To shut down completely AA after switch off the car im getting power directly from 12V and not from the infotainment system that is only connected on a data cable to the dongle. Btw everything else works fine.
Doesn't AA require bluetooth for phone calls (and only for that)? My S21 FE it's not connected to the dongle after the initial connection, but it's still connected to the car's inbuilt infotainment system via bluetooth.
Thank you :)

Doesn't AA require bluetooth for phone calls (and only for that)? My S21 FE it's not connected to the dongle after the initial connection, but it's still connected to the car's inbuilt infotainment system via bluetooth.

Right. The phone should be connected to the car for phone calls via bluetooth.
Not really sure on why it drops the connection after a phone call for you.

Does disconnection after on phone call also happens with 5GHz wifi (RPi 3A+ or RPi 4)?
It might be possible that BT and 2.4GHz Wifi might be interfering with each other causing the disconnect?

Doesn't AA require bluetooth for phone calls (and only for that)? My S21 FE it's not connected to the dongle after the initial connection, but it's still connected to the car's inbuilt infotainment system via bluetooth.

Right. The phone should be connected to the car for phone calls via bluetooth.
Not really sure on why it drops the connection after a phone call for you.

I plugged in my chinese dongle. It seems that the bluetooth connection is stable with the smartphone. I guess to make phone calls possible.
There's no what to keep the bluetooth connection active by modifying some parameters, or maybe an older version of your project?
Thanks

Only BT connection to phone is required, connection with dongle is not used anyway in cas eof phones.
Yu can try out the dongle mode by changing the config file as well. It may have other improvements also which might help phone audio reliability.

@nisargjhaveri  sorry for the delay in any reply or input. But, recently I updated my device to a Pixel 9 pro XL and changed my cable to a USB A/MicroUSB (previously had a on the go dongle and adapter to USB C)
So far the connection has been stable and AA no longer disconnects after making a call.
If I notice any other bug, I'll post it. But, as of now, the issue on this post is no longer occurring.
Thank you!


Search & Filtering [feature request]

Hi, thanks for sharing this!
I'm new to Apollo and Graphcool and wonder if it would be possible to include a good example of implementing some complex search and filtering:

Search posts (in title and description) + search results page.
Filter posts by multiple criteria, e.g. get all posts where:
"createdAt" is between Date_A and Date_B and
have "tags" in [ tag1, tagt2, tagt3... ]  and
made by  "users" [ user1, user2...] etc.

This tutorial shows how to do a basic search
Still not sure how to do Search AND filtering based on arbitrary number of filters.

Hey @dalerka, Thanks for your idea! This one is little bit tricky so That's why it will take time to finish but of course, All contributions are also welcome 😄


Unable to create an instance of a parent layout with parameters

Hello,
I am struggling while trying to make some tests with Mokito and Karibu.
I have a class with the annotation @Route, and a layout parameter :
@Route(value = ConstantesRoutes.MyRoute, layout = MainLayout.class)
and I have a public constructor with two parameters autowired
@Autowired     public MainView(final ManageSessionComponent userSession, final HttpSession httpSession) {         this.userSession = userSession;         this.httpSession = httpSession; ...     }
But when I try to test a click on a button, I encounter this error :
java.lang.IllegalArgumentException: Unable to create an instance of 'santeclair.valinor.vaadin.view.MainView'. Make sure the class has a public no-arg constructor.
Any idea how can I instanciate this parent layout ? Thank you :)

Hi, I'm guessing that you're using Spring in your project. It looks like you're not using Spring Instantiator together with Karibu-Testing, but you're using the default instantiator which doesn't support injection. Please take a look at https://github.com/mvysny/vaadin-spring-karibu-testing/blob/main/src/test/java/com/example/application/AbstractAppTest.java

I am using your template, in a simplified way
`package com.project;
import org.junit.jupiter.api.BeforeEach;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.annotation.DirtiesContext;
import com.github.mvysny.kaributesting.v10.MockVaadin;
import com.github.mvysny.kaributesting.v10.Routes;
import com.vaadin.flow.component.UI;
import kotlin.jvm.functions.Function0;
//@Import(AbstractAppTest.MyTestConfiguration.class)
@SpringBootTest
@DirtiesContext
public abstract class AbstractAppTest {
private static final Routes routes = new Routes().autoDiscoverViews("com.project");

@BeforeEach
public void setup() {
    final Function0<UI> uiFactory = UI::new;
    // final SpringServlet servlet = new MockSpringServlet(routes, ctx, uiFactory);
    MockVaadin.setup(routes, uiFactory);
}

}
`
But i'm still getting error. I don't why it is trying to instanciate  MainView without its parameters.
This is my test class :
`
public class AgeFrequentationViewTest extends AbstractAppTest {
@Mock
private EtudeOptiqueCompleteWebClient etudeOptiqueCompleteWebClient;

@Mock
private EtudeOptiqueResultatWebClient etudeOptiqueResultatWebClient;

@Mock
private VaadinSession vaadinSession;

@Mock
private BeforeEvent beforeEvent;

@BeforeEach
public void setUp() {
    MockitoAnnotations.openMocks(this);
}

private void execInMock(final Runnable test) {
    try (MockedStatic<VaadinSession> utilities = Mockito.mockStatic(VaadinSession.class)) {
        utilities.when(VaadinSession::getCurrent).thenReturn(vaadinSession);

        Mockito.when(vaadinSession.getAttribute(ConstantesVaadin.SESSION_USER_LOGGED)).thenReturn(CompteDto.builder().id(1)
                        .role(RoleEnum.USER)
                        .build());
        Mockito.when(vaadinSession.getAttribute(ConstantesVaadin.SESSION_USER_ORGANISATION)).thenReturn(OrganisationDto.builder().id(1).build());
        test.run();
    }
}

@Test
void testSendResult() {
    execInMock(() -> {
        Mockito.when(etudeOptiqueCompleteWebClient.getEtudeByCompteByOrganisationAndEtude(1, 1, 1)).thenReturn(Optional.of(EtudeOptiqueCompleteDto.builder()
                        .idCompte(1)
                        .idOrganisation(1)
                        .build()));
        UI.getCurrent().navigate(ConstantesRoutes.ETUDE_IMPACT_OPTIQUE_AGE_FREQUENTATION + "/" + 1);

        _click(_get(Button.class, spec -> spec.withId(ConstanteEtudeDImpactOptiqueID.ETUDEIMPACT_AGEFREQ_BUTTON_SUIVANT)));
    });
}

}`

Could it be that @Mock private VaadinSession vaadinSession; interferes with Karibu-Testing: it causes Vaadin to look up instantiator from the default VaadinSession as opposed to the VaadinSession object configured by Karibu-Testing? Try commenting out the mocking code and try again please.

Yeah, it was a part of the problem :)
I deleted it.
Also, I added @ActiveProfiles("tests") to my AbstractAppTest (I work with profile to test with H2 database).
I also change two or three things about Mockito, but the main problem was resolved by you response.
Thank you :)

No problem 👍 the issue sounds to be resolved, I'll therefore close the ticket. But feel free to reopen if there's anything.


[Feature request] Add an embed using the provided link

I've just discovered this package and I'm experimenting with it a bit. I've noticed that if the post content contains a link, it's automatically resolved and an embed is created. However, I don't see a way to simply add an embed without putting the link in the post content (this requires duplicating the functionality of getting the properties of the page behind the link, uploading a thumbnail, etc.). A good solution would be to add a "withLink" method (or something similar) to BlueskyPost, which would use the existing functionality of creating embeds.

If I understand correctly, you're looking for BlueskyPost#embed? You can add an instance of External here

Yes, but if I'm not mistaken, in such a case I have to provide the website title, its description, and, above all, handle the upload of the thumbnail to Bluesky servers. However, if I insert a link into the content of the post, it happens automatically. That's why I suggest that it be possible to use the automatic mechanism for creating embeds that you have prepared without having to insert the link directly into the content of the post.

Ah, right
I'd accept a PR for that 👍

I feel like I'm not experienced enough, but of course I'll try.

It would be a learning experience then. Happy to review PRs :)


Add HIV devices to Production

Why should we do this?
This supports our goals of expanding SR to support HIV. These particular devices are used by our pilot CBOs in LAC, so adding these devices will enable them to use the single entry workflow to report HIV tests to LAC.
Action Requested
Add these 2 devices to start:

INSTI HIV-1/HIV-2 Rapid Antibody Test

LOINC: 80387-4
LOINC description: HIV 1+2 Ab [Presence] in Serum, Plasma or Blood by Rapid immunoassay

OraQuick In-Home HIV Test (use same LOINC info as Oraquick ADVANCE Rapid HIV 1/2 Antibody Test, but specimen type should only be oral swab)

LOINC: 35439-9
LOINC description: HIV 1 Ab [Presence] in Saliva (oral fluid) by Immunoblot

The test ordered and test performed LOINCs for these devices will be the same, since they are not multiplex.
HIV is already a supported disease type.
LIVD sync is not part of this ticket.
Acceptance criteria

User can add an HIV device to their facility
User can select HIV device on the test card
❗ HIV devices have test performed LOINC long name and test ordered LOINC long names populated ❗

5/21/24 got confirmation of LOINCs to use from Mike Janson at LAC

Here are the LOINCs we are using specifically for SimpleReport. Note that there is a larger list for rapid HIV that we agreed to use with CDPH.
Insti HIV-1/HIV-2 Antibody Test - 80387-4       HIV 1+2 Ab [Presence] in Serum, Plasma or Blood by Rapid
OraQuick In-Home HIV Test - 35439-9       HIV 1 Ab [Presence] in Saliva (oral fluid) by Immunoblot
Best,
Mike

Both devices have been added to prod with all required data other than their loinc long names. This filed can only be updated via our updateDevice endpoint and for some reason whenever I hit the endpoint I'm getting a 401. Given that the ticket is time sensitive @DanielSass is going to handle updating the loinc long names so we can hand this off to RS before eow.


What would it take to support Teensy 3 & 4?

What would it take to support the Teensy series of chips - especially the newer 3.x and 4.x families based on Cortex M families?

Teensy 4.0 and 4.1: "an ARM Cortex-M7 processor at 600 MHz, with a NXP iMXRT1062 chip, the fastest microcontroller available today"
Teensy 3.6: "a 32 bit 180 MHz ARM Cortex-M4 processor with floating point unit"
Teensy 3.5: "a 32 bit 120 MHz ARM Cortex-M4 processor with floating point unit"
(Teensy 3.1 and 3.2: "a 32 bit ARM processor")
(Teensy 2.0: AVR)

Some possibly-relevant work e.g.

teensy 4
teensy 3.5, 3.6 ?
teensy 3.1, 3.2 "This crate is meant to be consumed by a binary for a PJRC Teensy 3.1 or 3.2. Support for Teensy 3.0, 3.5, and 3.6 boards is planned, but not implemented."

The newer Teensy chips provide a fun amount of compute power not commonly seen in other boards, I'd love to see better Rust support for these boards ❤

I believe the older models of the Teensy don't have an on-board debugger but the newer ones do? The ones that do have one should already work with probe-run.
In general, boards that have no on-board debugger have some bootloader mode. It is certainly possible to write a Cargo runner that loads programs using the bootloader and then sets up a defmt transport but that usually requires quite a bit of device, or even board, specific code. What would it take to support those boards? I'm afraid that I cannot answer as I'm not familiar with this particular hardware (board or chip).

I don't believe any of these boards have debugger access, and all have an external bootloader device.
We would instead need to implement defmt-over-usb support for these, or someone could implement a specific defmt sink for this.

FWIW, there are some hardware mods that can make JTAG/SWD work on Teensy.
See: https://forum.pjrc.com/threads/69748-Simple-WORKING-JTAG-UART-for-Teensy-4-1
My understanding from perusing the forums a while back is that the ARM chips on Teensy have a fuse burnt during production that selects for JTAG interface (as, IIUC, the MKLO2 on the Teensy uses JTAG to control the processor during power on, and probably in some other cases I'm unaware of), and not SWD -- but it would seem that you can do one of two things if you want/need SWD:

Use JTAG to poke the register that selects between JTAG and SWD, and/or
Very early in your code, configure that register as desired -- now you'll have SWD shortly after power-on (at least until you flash another program without that bit of configuration code).

I have a couple Teensies and I hope to make such a modification to them so I can develop and test/debug some Rust code on them, in which case maybe I'll report back when I do :slightly_smiling_face:.

Please share if you suceed, but also if you find any blockers @cstrahan!


Facebook: bug with begin/end dialog flow ?

Hi,
It seems I have a bug only with Facebook (not with the emulator) with the followinf flow:

session.send(Message 1)
session.beginDialog A
=>user write something X
session.endDialog A
session.beginDialog A
session.send(Message 2)
=>user write something Y

On Facebook the user Y text is scoped outside the dialogA. it's like if endDialogA is executed after the 2nd beginDialog A
Any ideas ?
Is there a way to flush the order ?
Thanks

I had a clue because

I create a bessage
I begin dialog
I send the message

I thought it could messup the behavior of Facebook.
At last I write my own "prompt" without dialogs

@JpEncausse is it working as expected for you now?

Well Instead of using Dialogs, I set a flag on a conversation and a callback function. It's not stateless but it works well.
Navigating throught dialogs is really hard for users, so we put all sentences under root dialog and use prompt to ask simple questions

Can you share a simplified version of your code and I can potentially provide a little feedback on structure

My Workaround ? Very simple:
I store a callback for a given conversation, then later, on dialog / I call it back
let convId = inMsg.address.conversation.id;
PROMPT_CALLBACK[convId] = callback;

I know it's not stateless but my usecase is to make it work in Node-RED and it works very well :-)

ok... so long as you realize your going to have to make sure the same process gets called back that seems reasonable.


Can we use a UI for configuration?

For those new to the process, configuring settings directly through json can be quite complex and may require referring to documentation. Perhaps a more user-friendly approach would be to offer a visual configuration method similar to that of vscode.
对于新手来说，直接通过json配置比较复杂，需要参考文档，也许我们可以提供类似vscode那样的可视化方式配置。

Thank you for your advice. I will discuss with other developers how to implement a user-friendly GUI configuration editor.

I am a front-end engineer and a fan of yours at zhihu. If you need any help with the development of this feature, I can contribute some code


Generalizing description of SG and adding links to Monarch and SciCrunch

I attempted to make the description more general - SG is more than an ontology server
I would like to link to documentation on the monarch-specific instance but haven't had time, for now I just link to the main website
Added a link to SciCrunch. @aguptasd @jgrethe any more?

+1

+1


Made IKestrelServerInformation.ThreadCount nullable

Noticed this when looking at #378. I think this looks better than if (information.ThreadCount > 0) :smile:

Hi @khellang, I'm your friendly neighborhood .NET Foundation Pull Request Bot (You can call me DNFBOT). Thanks for your contribution!
You've already signed the contribution license agreement. Thanks!
The agreement was validated by .NET Foundation and real humans are currently evaluating your PR.
TTYL, DNFBOT;

When I think about it, why even bother doing all of the above if information.ThreadCount.HasValue? It's just being overridden anyway? // @benaadams

Replaced by #417.


Request: Please add support for TamperMonkey

https://chrome.google.com/webstore/detail/tampermonkey/dhdgffkkebhmkfjojejmpbldmpobfkfo
Would be nice to just use a single CSS format extension

Just get an error when trying to create a new userscript :(

Use Stylus

installation

Please use Stylus instead. I haven't studied about JS yet.

if you HAVE to use this in tampermonkey, which is 1000% not the best way to do it you could add this code first then put adashimaatube inside:
// ==UserScript==
// @name         adashimaatube
// @version      2.1.3
// @description tube
// @author       you
// @match        *://*.youtube.com/*
// @license      MIT
// ==/UserScript==

function addStyle(styleString) {
  const style = document.createElement('style');
  style.textContent = styleString;
  document.head.append(style);
}
addStyle(`

//INSERT CODE HERE

`)

with this method, you will not get automatic updates, not be able to easily change the settings and some things may not apply correctly
the reason why theres 2 big extensions for it is because tampermonkey is meant for JS and stylus is only for CSS


ImportError: undefined symbol: deflateInit2_

Using python3.10 and got importError
Traceback (most recent call last):
  File "/home/midstream/git/peduncle/test.py", line 1, in <module>
    from extractnet import Extractor
  File "/home/midstream/.local/lib/python3.10/site-packages/extractnet/__init__.py", line 1, in <module>
    from extractnet.pipeline import Extractor
  File "/home/midstream/.local/lib/python3.10/site-packages/extractnet/pipeline.py", line 10, in <module>
    from .nn_models import NewsNet
  File "/home/midstream/.local/lib/python3.10/site-packages/extractnet/nn_models.py", line 7, in <module>
    from .blocks import TagCountReadabilityBlockifier
ImportError: /home/midstream/.local/lib/python3.10/site-packages/extractnet/blocks.cpython-310-x86_64-linux-gnu.so: undefined symbol: deflateInit2_

Same using python3.8:
In [1]: import extractnet
---------------------------------------------------------------------------
ImportError                               Traceback (most recent call last)
Cell In[1], line 1
----> 1 import extractnet

File ~/work/X/venv38/lib/python3.8/site-packages/extractnet/__init__.py:1
----> 1 from extractnet.pipeline import Extractor
      3 __version__ = '2.0.7'
      6 _LOADED_MODELS = {}

File ~/work/X/venv38/lib/python3.8/site-packages/extractnet/pipeline.py:10
      8 from .compat import unicode_
      9 from .util import priority_merge, get_module_res, remove_empty_keys, attribute_sanity_check
---> 10 from .nn_models import NewsNet
     11 from .name_crf import AuthorExtraction
     12 from .nn_models import NewsNet

File ~/work/X/venv38/lib/python3.8/site-packages/extractnet/nn_models.py:7
      5 from .compat import str_cast
      6 from .util import get_and_union_features, get_module_res, fix_encoding
----> 7 from .blocks import TagCountReadabilityBlockifier
      9 EMPTY_HTML = "

content

blocked

404

"
     11 class NewsNet():

ImportError: /home/vgavro/work/X/venv38/lib/python3.8/site-packages/extractnet/blocks.cpython-38-x86_64-linux-gnu.so: undefined symbol: deflateInit2_

UPD: looks like pre-compiled libraries published on pypi and used from pypi install are not working on all linux systems because builded with shared libraries, you need to build package yourself, but build system was also broken.
see #18 merge request, until merged use command below to install:
./venv/bin/pip install --upgrade 'git+https://github.com/vgavro/extractnet@fix/pip_build'

UPD: looks like pre-compiled libraries published on pypi and used from pypi install are not working on all linux systems because builded with shared libraries, you need to build package yourself, but build system was also broken. see #18 merge request, until merged use command below to install:
./venv/bin/pip install --upgrade 'git+https://github.com/vgavro/extractnet@fix/pip_build'

this works for me, thanks! Also I installed  g++ libxml2-dev git to make the build.

in your fork, when using python 3, I found some issues.

in extractnet/blocks.pyx the '''from compat import ..''' , needs to be changed to an absolute import of '''from extractnet.compat import .. '''
in extractnet/setup.py , the line "print diff " needs to be changed to " print(diff) " .

Only after these changes was I able to use your forked repo and run
'''
python setup.py build_ext --inplace
pip install -e .
'''
for extractnet to run properly.


unable to download https://www.youtube.com/watch?v=Q48tagwurUw

[debug] System config: []
[debug] User config: []
[debug] Command-line args: ['--verbose', 'https://www.youtube.com/watch?v=Q48tagwurUw']
[debug] Encodings: locale UTF-8, fs UTF-8, out UTF-8, pref UTF-8
[debug] youtube-dl version 2015.02.16
[debug] Python version 2.7.9 - Linux-3.18.5-x86_64-AMD_A6-5400K_APU_with_Radeon-tm-_HD_Graphics-with-gentoo-2.2
[debug] exe versions: ffmpeg 2.5.4, ffprobe 2.5.4, rtmpdump 2.4
[debug] Proxy map: {}
[youtube] Q48tagwurUw: Downloading webpage
[youtube] Q48tagwurUw: Extracting video information
[youtube] {22} signature length 40.41, html5 player en_US-vflKjOTVq
[youtube] Q48tagwurUw: Downloading js player en_US-vflKjOTVq
ERROR: Signature extraction failed: Traceback (most recent call last):
File "/usr/lib64/python2.7/site-packages/youtube_dl/extractor/youtube.py", line 635, in _decrypt_signature
video_id, player_url, s
File "/usr/lib64/python2.7/site-packages/youtube_dl/extractor/youtube.py", line 549, in _extract_signature_function
res = self._parse_sig_js(code)
File "/usr/lib64/python2.7/site-packages/youtube_dl/extractor/youtube.py", line 613, in _parse_sig_js
initial_function = jsi.extract_function(funcname)
File "/usr/lib64/python2.7/site-packages/youtube_dl/jsinterp.py", line 244, in extract_function
raise ExtractorError('Could not find JS function %r' % funcname)
ExtractorError: Could not find JS function u'OF'; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
(caused by ExtractorError(u"Could not find JS function u'OF'; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.",)); please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
Traceback (most recent call last):
File "/usr/lib64/python2.7/site-packages/youtube_dl/extractor/youtube.py", line 635, in _decrypt_signature
video_id, player_url, s
File "/usr/lib64/python2.7/site-packages/youtube_dl/extractor/youtube.py", line 549, in _extract_signature_function
res = self._parse_sig_js(code)
File "/usr/lib64/python2.7/site-packages/youtube_dl/extractor/youtube.py", line 613, in _parse_sig_js
initial_function = jsi.extract_function(funcname)
File "/usr/lib64/python2.7/site-packages/youtube_dl/jsinterp.py", line 244, in extract_function
raise ExtractorError('Could not find JS function %r' % funcname)
ExtractorError: Could not find JS function u'OF'; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
Traceback (most recent call last):
File "/usr/lib64/python2.7/site-packages/youtube_dl/YoutubeDL.py", line 633, in extract_info
ie_result = ie.extract(url)
File "/usr/lib64/python2.7/site-packages/youtube_dl/extractor/common.py", line 270, in extract
return self._real_extract(url)
File "/usr/lib64/python2.7/site-packages/youtube_dl/extractor/youtube.py", line 1066, in _real_extract
encrypted_sig, video_id, player_url, age_gate)
File "/usr/lib64/python2.7/site-packages/youtube_dl/extractor/youtube.py", line 645, in _decrypt_signature
'Signature extraction failed: ' + tb, cause=e)
ExtractorError: Signature extraction failed: Traceback (most recent call last):
File "/usr/lib64/python2.7/site-packages/youtube_dl/extractor/youtube.py", line 635, in _decrypt_signature
video_id, player_url, s
File "/usr/lib64/python2.7/site-packages/youtube_dl/extractor/youtube.py", line 549, in _extract_signature_function
res = self._parse_sig_js(code)
File "/usr/lib64/python2.7/site-packages/youtube_dl/extractor/youtube.py", line 613, in _parse_sig_js
initial_function = jsi.extract_function(funcname)
File "/usr/lib64/python2.7/site-packages/youtube_dl/jsinterp.py", line 244, in extract_function
raise ExtractorError('Could not find JS function %r' % funcname)
ExtractorError: Could not find JS function u'OF'; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.
(caused by ExtractorError(u"Could not find JS function u'OF'; please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.",)); please report this issue on https://yt-dl.org/bug . Make sure you are using the latest version; see  https://yt-dl.org/update  on how to update. Be sure to call youtube-dl with the --verbose flag and include its complete output.

Running into this same issue running from a pip install on debian and windows. Appears to be same issue as #4976.

Thank you for the report. I believe this issue to be fixed in youtube-dl version 2<IP_ADDRESS> and newer. See our FAQ if you have trouble updating.


Create Producer and Consumer for Nasa Visualisation - API GTW & MSVC Python Nasa

Fixed with 96a3b78553e289fb033d7094b75a8a07efdd6497

Fixed with cf7e26d1d5bc0e49355ab2d4e97e19a8555636fd

Fixed with b21cbb137e90ccb4282d6336b58144a1bdd7de87

Fixed with 93ee1790a28f4220aa5137de39ac03f32bd390f7

Fixed with a0d0048c1da2a442e9ce376cedd498848fd3be8f


Btm 601 test invoice email attachment

1.separated createInvoiceInS3 function from createInvoiceWithGivenData in invoice/helper and updated billing-and-transaction-view-tests accordingly.
2.Modified e2e-test use to email instead of directly uploading to s3
3.Updated email-storage-tests to use newly created function called getEmailAddresses() in emailHelper file to get the emailAddresses and renamed sendEmail function to sendEmailWithoutAttachments
4. moved checkForRawInvoice and waitForRawInvoice functions to invoice/helper.ts file to reuse in other test files
5. Added toEmailId in E2ETestConfig interface
6. Added sendRawEmail function to intSupport function HelperDict
7. Added new file called emailHelper which has functions related to emails
8.Added new function called  makeMockInvoiceCSV and modified existing makeMockInvoiceCSV to use newly created makeMockInvoiceCSV
9. Added new helper function called sendRawEmail to send email with attachment the existing function sendEmail not supporting email with attachments
NOTE: Tested these changes on build and staging environment but didn't test end to end via IntTestSupportLambda due to the VPC bug that need to be fixed as part of BTM-598.

Works on dev and staging when running via IntTestSupport Function now


Rename some files to avoid conflicting .obj files on Windows

Additionally add tests to verify this.
Focus review on:

build.yaml - the renames are called out here
tools/run_tests/sanity/check_sources_and_headers.py - our verification tooling

Fixes #7814.


Add package items report

⚠ This is still a work in progress
This adds a new "package item" report, which helps answer questions like:

What files exist in a package?
How big are files in a package? (Note this uses zip archive's uncompressed size which may be incorrect)
How often are files repeated across packages?

Open questions

What do you think of the name "package item?
Would you like to see additional data added to this report?
This seems to run without throwing exceptions, but I'm not sure how to inspect the CSV output to verify the output. How can I do that?

@joelverhagen how do you export the CSV out from table storage?

how do you export the CSV out from table storage?

There are three flows that match what you are asking:

Export CSV in Azure Storage Explorer. This can be used to edit several entities (e.g. reset counters) but is manual and I've only used it when I've wanted to fix up a bit of data from a bug and not have to regenerate the data.

Set OverwriteTestData to true when you have added a new integration test and want to check in the generated CSVs to that future assertions compare against that first checked in file. The test data gets written to the artifacts/.../bin/.../TestData and can be copied into the test/ tree for check-in. https://github.com/joelverhagen/ExplorePackages/blob/8a81f7025a8ea7406decc916a6f62b1a916aa727/test/ExplorePackages.Logic.Test/TestSupport/BaseLogicIntegrationTest.cs#L31

AppendResultStorageService is how the CSVs are written to blob storage at runtime. It takes intermediate results from temporary Table Storage tables, combines it with the existing CSV blob in memory, and dumps it back to Blob Storage: https://github.com/joelverhagen/ExplorePackages/blob/8a81f7025a8ea7406decc916a6f62b1a916aa727/src/ExplorePackages.Worker.Logic/AppendResults/AppendResultStorageService.cs#L189

TODO: Add sequence number in package file to detect duplicates.

@joelverhagen This is ready for review now!


Add support for truncating the tag stack

Codecov Report

Merging #5417 into master will increase coverage by <.01%.
The diff coverage is 100%.

@@            Coverage Diff             @@
##           master    #5417      +/-   ##
==========================================
+ Coverage   82.69%   82.69%   +<.01%
==========================================
  Files         134      134
  Lines      147652   147661       +9
==========================================
+ Hits       122099   122111      +12
+ Misses      25553    25550       -3

Impacted Files
Coverage Δ

src/evalfunc.c
91.87% <100%> (ø)
:arrow_up:

src/tag.c
79.38% <100%> (+0.09%)
:arrow_up:

src/channel.c
84.22% <0%> (-0.08%)
:arrow_down:

src/message.c
86.38% <0%> (-0.05%)
:arrow_down:

src/window.c
88.3% <0%> (-0.04%)
:arrow_down:

src/gui.c
63.63% <0%> (+0.05%)
:arrow_up:

src/gui_gtk_x11.c
58.06% <0%> (+0.09%)
:arrow_up:

src/if_xcmdsrv.c
86.35% <0%> (+0.71%)
:arrow_up:

Continue to review full report at Codecov.

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

Yegappan wrote:

Add support for truncating the tagstack

It looks like the "curidx" is set after truncating the stack.  I would
find it more logical to first set the current index and then truncate
and append the new items.  The test actually uses two calls to
settagstack(), I would think that's an indication that this is the
desired behavior.
--
CRONE:  Who sent you?
ARTHUR: The Knights Who Say Ni!
CRONE:  Aaaagh!  (she looks around in rear) No!  We have no shrubberies here.
"Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
/// Bram Moolenaar --<EMAIL_ADDRESS>-- http://www.Moolenaar.net   \
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \
\\  an exciting new programming language -- http://www.Zimbu.org        ///
\\            help me help AIDS victims -- http://ICCF-Holland.org    ///

Hi Bram,
Happy new year.
On Tue, Dec 31, 2019 at 11:56 PM Bram Moolenaar<EMAIL_ADDRESS>wrote:

Yegappan wrote:

Add support for truncating the tagstack

It looks like the "curidx" is set after truncating the stack. I would
find it more logical to first set the current index and then truncate
and append the new items. The test actually uses two calls to
settagstack(), I would think that's an indication that this is the
desired behavior.

I have updated the PR with this change.
Regards,
Yegappan

Yegappan wrote:

Add support for truncating the tagstack

It looks like the "curidx" is set after truncating the stack. I would
find it more logical to first set the current index and then truncate
and append the new items. The test actually uses two calls to
settagstack(), I would think that's an indication that this is the
desired behavior.

I have updated the PR with this change.

Thanks.  I think this help is now outdated:

  The current index is set to one after the length of the tag

  stack. This can be changed by using 'curidx' in {dict}.

It is normal that after adding entries to the stack the index is set to
the end.  So now the index is set before truncating.  Please describe
this, it's not that easy to understand.
--
TALL KNIGHT: We are now no longer the Knights Who Say Ni!
ONE KNIGHT:  Ni!
OTHERS:      Sh!
ONE KNIGHT:  (whispers) Sorry.
"Monty Python and the Holy Grail" PYTHON (MONTY) PICTURES LTD
/// Bram Moolenaar --<EMAIL_ADDRESS>-- http://www.Moolenaar.net   \
///        sponsor Vim, vote for features -- http://www.Vim.org/sponsor/ \
\\  an exciting new programming language -- http://www.Zimbu.org        ///
\\            help me help AIDS victims -- http://ICCF-Holland.org    ///


Projections.constructor cannot be nested when using r2dbc-querydsl associated queries

r2dbc can't map nested class data when doing associative queries, but it can in jpa mode. Here's my code
<dependency>
    <groupId>io.asyncer</groupId>
    <artifactId>r2dbc-mysql</artifactId>
    <version>0.9.3</version>
</dependency>

<dependency>
    <groupId>com.mysql</groupId>
    <artifactId>mysql-connector-j</artifactId>
    <scope>runtime</scope>
</dependency>

<dependency>
    <groupId>com.infobip</groupId>
    <artifactId>infobip-spring-data-r2dbc-querydsl-boot-starter</artifactId>
    <version>7.2.4</version>
</dependency>

pojo
@Getter
@Setter
public class SysUserDTO {

    private Long id;

    private String username;

    private String name;

    private Long deptId;

    private SysDeptDTO sysDeptDTO;

    public SysUserDTO(Long id, String username, String name, Long deptId) {
        this.id = id;
        this.username = username;
        this.name = name;
        this.deptId = deptId;
    }

    public SysUserDTO(Long id, String username, String name, Long deptId, SysDeptDTO sysDeptDTO) {
        this.id = id;
        this.username = username;
        this.name = name;
        this.deptId = deptId;
        this.sysDeptDTO = sysDeptDTO;
    }

    public SysUserDTO() {
    }
}

@Getter
@Setter
public class SysDeptDTO {

    private String deptName;

    public SysDeptDTO(String deptName) {
        this.deptName = deptName;
    }

    public SysDeptDTO() {
    }

}

repository
public interface UserRepository extends QuerydslR2dbcRepository<SysUser, Long> {

    Mono<SysUser> findByUsername(String username);

}

service
import com.example.webflux.model.SysDeptDTO;
import com.example.webflux.model.SysUser;
import com.example.webflux.model.SysUserDTO;
import com.example.webflux.repository.UserRepository;
import com.querydsl.core.types.Projections;
import lombok.RequiredArgsConstructor;
import org.springframework.stereotype.Service;
import org.springframework.transaction.annotation.Propagation;
import org.springframework.transaction.annotation.Transactional;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;

import static com.example.webflux.model.QSysDept.sysDept;
import static com.example.webflux.model.QSysUser.sysUser;

@Service
@RequiredArgsConstructor
public class UserService {

    private final UserRepository userRepository;

    @Transactional(readOnly = true)
    public Flux<SysUserDTO> findByName(String name) {
        return userRepository.query(query -> query
                .select(
                        Projections.constructor(SysUserDTO.class,
                                sysUser.id,
                                sysUser.name,
                                sysUser.username,
                                sysUser.deptId.as("deptId"),
                                Projections.constructor(SysDeptDTO.class, sysDept.name)
                        )
                )
                .from(sysUser)
                .innerJoin(sysDept)
                .on(sysUser.deptId.eq(sysDept.id))
                .where(sysUser.name.like("%" + name + "%"))
        ).all();
    }

}

controller
@RestController
@RequestMapping("/users")
@RequiredArgsConstructor
public class WebFluxController {

    private final UserService userService;

    @GetMapping("/name/{name}")
    public Flux<SysUserDTO> getName(@PathVariable String name) {
        return this.userService.findByName(name);
    }

}

Request response result, sysDeptDTO is null
[{"id":1,"username":"admin","name":"zhangsan","deptId":1,"sysDeptDTO":null}]

I wrote the same code using jpa mode, but sysDeptDTO successfully assigns the value
[{"id":1,"username":"admin","name":"zhangsan","deptId":1,"sysDeptDTO":{"deptName":"it"}}]

Can you please try with latest version of infobip-spring-data-querydsl?

您可以尝试使用最新版本的 infobip-spring-data-querydsl 吗？

Do I have to upgrade springboot3 if using the latest version?

Can you please try with latest version of infobip-spring-data-querydsl?

Do I have to upgrade springboot3 if using the latest version?

Yes, since 8.0.0 SB3 is mandatory.

Yes, since 8.0.0 SB3 is mandatory.

But our project will be very troublesome to upgrade, so the problems before springboot3.0 will not be maintained?

It will  be until End of Support for SB2 in November - https://spring.io/projects/spring-boot#support.
I'll take a detailed look into the issue when I get some time.

Can you try putting @PersistenceCreator on second constructor that has sysDeptDTO property?

Thanks, we tried @PersistenceCreator and still have the same issues

Can you try putting @PersistenceCreator on second constructor that has sysDeptDTO property?

Thanks, we tried @PersistenceCreator and still have the same issues

Can you share sql used to create the tables for those entities?

I assume from the code that SysUserDTO is Embeddable.
https://github.com/spring-projects/spring-data-r2dbc/issues/288
Spring Data R2DBC doesn't support embeddable yet.

If this is not an embeddable case feel free to reopen the issue.


Consider refactoring out all new statements that prevent unit testing. Practice dependency inversion.

http://misko.hevery.com/2008/07/24/how-to-write-3v1l-untestable-code/
http://misko.hevery.com/2008/07/08/how-to-think-about-the-new-operator/

Dependency inversion is difficult and tedious. Will be moving to this v2.0 as we cannot complete this in time for v1.4.


Weather conditions slide should not freeze for Sweden (and maybe more countries)

A client just called me about this issue. When starting a new Sweden scenario and going to the "Weather conditions slide" the model crashes: the slide freezes and you cannot click on anything anymore.
Maybe this has to do with the FLH sliders for Sweden? The flh for inland wind are 4189.6761 and this is higher than the max value for that slider 3500

A code fix is on the way to staging and will be sent to production shortly.
Ultimately, the cause is that the FLH for inland wind turbines has the following:
- max_value = 3500.0
- min_value_gql = present:V(energy_power_wind_turbine_inland, full_load_hours)

The maximum value is set to a maximum of 3500. However, in Sweden, the min value (the present value for inland turbine FLH) returns 4189.6761.
The code change will fix the page locking up, but the slider will be disabled so long as min > max.
@marliekeverweij Can you decide what you'd like to do about the slider values? Of course, reassign this as you see fit.

We have two options for fixing this:

Increasing slider max to 4500
Changing inland wind flh for Sweden (All other countries have flh lower than 3000 for inland wind)

We used the same approach for calculating the flh for all EU datasets based on hourly profiles of Renewables Ninja. I prefer not to change this approach for one country. So I prefer to change the slider max. What do you think? Notifying @DorinevanderVlies as she calculated these flh. But everybody else is welcome to give their opinion! @quintel/core

I am ok with option 1

Hmmm, Renewables.ninja shows a capacity factor of ~25% for onshore wind. That would mean ~2200 flh.
Let's see if I can track where the 4500 comes from

Thanks @DorinevanderVlies !

When I run the script I get inland flh of 2223 en offshore flh of 4189

It seems to me that the flh of onshore wind is currently incorrect in The Swedish dataset. It should be 2223.

@DorinevanderVlies that seems more realistic. I would not want to live in a country with onshore FLH of > 4500. :-)

Thanks for the answer to this issue! I checked alll countries and found that also in the UK the flh are different:

old - 2223.3584 for all wind turbines (this is the new SE value, so I think we mixed them up in the migration)
new - 3174 for offshore/coastal and 2482 for inland

IF we fix this, it may affect the Guidehouse scenarios for NSPWH.


Chore/integrate dependency track

Description
Push generated bom files to our instance of Dependency-track for vulnerability

:tada: This PR is included in version 1.0.9 :tada:
The release is available on GitHub release
Your semantic-release bot :package::rocket:


[Commit hash] make log format compatible with older Git

%as is added in Git 2.25.0, and unfortunately I'm stuck on older Git versions on some machines, this PR makes fzf.fish compatible with them.
Or if you reject the change, you should also add minimal Git version requirement to README.

%as is added in Git 2.25.0, and unfortunately I'm stuck on older Git versions on some machines

I'm sorry to hear that. At work, I was stuck on 2.12 until a few months ago so I feel your pain. I will merge this once I confirm there's no functional changes.


feat: add max rank to inspection API capabilities

This PR

adds support for querying the maximum number of supported dimensions (i.e., the maximum array rank).
requires that conforming array libraries supporting an infinite number of dimensions specify the max rank as None (i.e., there is not maximum array rank), and, for those unable to support infinite dimensions, those libraries must specify a finite integer value.
closes: https://github.com/data-apis/array-api/issues/694

New APIs shouldn't be backported. Only things like typo fixes and clarifications that don't affect implementations should be backported to previous versions.

As this PR has received 2 approvals and no objections, I'll go ahead and merge. Any further changes can be addressed in follow-up PRs. Thanks all!

Since this isn't yet in a released version of the standard, I would like to propose that we rename "max rank" to something like "max dimensions". The term "rank" is ambiguous when referring to an array, since it can also refer to the linear algebra definition of rank (or even the tensor definition, which is yet another thing). I know we also use the term "rank" throughout the standard, but I would also propose that we replace this with something like "dimensionality".

I think that's a fair comment. "max ndim" would be another option if name length matters.

Briefly discussed today: seemed fine to everyone to change name - @asmeurer will open a new PR.

#809


ESP32C3 SDSPI  (IDFGH-5379)

I am trying to interface ESP32C3 module with the MicroSD Card module (operating at 3.3V).
The code which I am executing is from the Master Branch, sdspi. (ESP32 Example code for 'SD Card Example (SDSPI)).
Initially it gave me an error:
I (231) cpu_start: ESP-IDF:          v4.4-dev-1404-gc13afea63-dirty
I (239) heap_init: Initializing. RAM available for dynamic allocation:
I (246) heap_init: At 3FC8D810 len 000327F0 (201 KiB): DRAM
I (252) heap_init: At 3FCC0000 len 0001F060 (124 KiB): STACK/DRAM
I (259) heap_init: At 50000010 len 00001FF0 (7 KiB): RTCRAM
I (265) spi_flash: detected chip: generic
I (270) spi_flash: flash io: dio
I (274) sleep: Configure to isolate all GPIO pins in sleep state
I (280) sleep: Enable automatic switching of GPIO sleep configuration
I (288) cpu_start: Starting scheduler.
I (292) example: Initializing SD card
I (292) example: Using SPI peripheral
E (292) spi: spi_bus_initialize(634): invalid dma channel, chip only support spi dma channel auto-alloc
E (302) example: Failed to initialize bus.

After that I changed the define statement in the code to:
#define SPI_DMA_CHAN SPI_DMA_CH_AUTO

But I am getting the following error:
ESP-ROM:esp32c3-api1-20210207
Build:Feb  7 2021
rst:0x1 (POWERON),boot:0xc (SPI_FAST_FLASH_BOOT)
SPIWP:0xee
mode:DIO, clock div:1
load:0x3fcd6100,len:0x1658
load:0x403ce000,len:0x8c0
load:0x403d0000,len:0x2928
SHA-256 comparison failed:
Calculated: 7a664bd4e7efa15fbbd256bcd27f435e0ab3e9cb5e691b1cf65fdd4ce1555e33
Expected: ff1d8365de40ca83c5da51eaa736d3d543a613d4efac975fa518a8d9d9cb1e52
Attempting to boot anyway...
entry 0x403ce000
I (48) boot: ESP-IDF v4.4-dev-1404-gc13afea63-dirty 2nd stage bootloader
I (49) boot: compile time 19:58:42
I (49) boot: chip revision: 3
I (52) boot.esp32c3: SPI Speed      : 80MHz
I (57) boot.esp32c3: SPI Mode       : DIO
I (62) boot.esp32c3: SPI Flash Size : 4MB
I (67) boot: Enabling RNG early entropy source...
I (72) boot: Partition Table:
I (76) boot: ## Label            Usage          Type ST Offset   Length
I (83) boot:  0 nvs              WiFi data        01 02 00009000 00006000
I (90) boot:  1 phy_init         RF data          01 01 0000f000 00001000
I (98) boot:  2 factory          factory app      00 00 00010000 00100000
I (105) boot: End of partition table
I (109) esp_image: segment 0: paddr=00010020 vaddr=3c030020 size=09e90h ( 40592) map
I (124) esp_image: segment 1: paddr=00019eb8 vaddr=3fc8b400 size=01550h (  5456) load
I (127) esp_image: segment 2: paddr=0001b410 vaddr=40380000 size=04c08h ( 19464) load
I (138) esp_image: segment 3: paddr=00020020 vaddr=42000020 size=2a398h (172952) map
I (169) esp_image: segment 4: paddr=0004a3c0 vaddr=40384c08 size=066fch ( 26364) load
I (174) esp_image: segment 5: paddr=00050ac4 vaddr=50000000 size=00010h (    16) load
I (178) boot: Loaded app from partition at offset 0x10000
I (181) boot: Disabling RNG early entropy source...
I (198) cpu_start: Pro cpu up.
I (207) cpu_start: Pro cpu start user code
I (207) cpu_start: cpu freq: 160000000
I (207) cpu_start: Application information:
I (210) cpu_start: Project name:     sd_card
I (215) cpu_start: App version:      1
I (219) cpu_start: Compile time:     Jun  9 2021 19:57:58
I (226) cpu_start: ELF file SHA256:  d96cd9031dd7ae4a...
I (231) cpu_start: ESP-IDF:          v4.4-dev-1404-gc13afea63-dirty
I (239) heap_init: Initializing. RAM available for dynamic allocation:
I (246) heap_init: At 3FC8D810 len 000327F0 (201 KiB): DRAM
I (252) heap_init: At 3FCC0000 len 0001F060 (124 KiB): STACK/DRAM
I (259) heap_init: At 50000010 len 00001FF0 (7 KiB): RTCRAM
I (265) spi_flash: detected chip: generic
I (270) spi_flash: flash io: dio
I (274) sleep: Configure to isolate all GPIO pins in sleep state
I (280) sleep: Enable automatic switching of GPIO sleep configuration
I (288) cpu_start: Starting scheduler.
I (292) example: Initializing SD card
I (292) example: Using SPI peripheral
I (292) gpio: GPIO[19]| InputEn: 0| OutputEn: 1| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
I (342) sdspi_transaction: cmd=5, R1 response: command not supported
E (352) sdmmc_common: sdmmc_init_ocr: send_op_cond (1) returned 0x107
E (352) vfs_fat_sdmmc: sdmmc_card_init failed (0x107).
I (352) gpio: GPIO[19]| InputEn: 1| OutputEn: 0| OpenDrain: 0| Pullup: 0| Pulldown: 0| Intr:0
E (362) example: Failed to initialize the card (ESP_ERR_TIMEOUT). Make sure SD card lines have pull-up resistors in place.

Also I have connected pullup resistors (10K) on SD card pins.
Also I tried to change the frequency by adding the line:
host.max_freq_khz = SDMMC_FREQ_PROBING;

But the code is giving the same error:
E (362) example: Failed to initialize the card (ESP_ERR_TIMEOUT). Make sure SD card lines have pull-up resistors in place.

I request you to please guide.
Thank you.

https://esp32.com/viewtopic.php?f=13&p=75316#p75316

There was some connection/wiring problem in the circuit. Now it is working fine.
Thank you.


Edit List Command

Fix issue #53
List command can now reflect the number of contacts in list and alert user the list is empty

LGTM!


.NET Core has been deprecated - need update to code for Function App

Function App code meant to work in .NET Core runtime. That is no longer available.

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

ID: 1a5bd255-3da7-da79-f9fc-6b49164e410a
Version Independent ID: eaa13933-48b4-0df1-99eb-2259c52e2008
Content: Tutorial: Implement IoT spatial analytics
Content Source: articles/azure-maps/tutorial-iot-hub-maps.md
Service: azure-maps
GitHub Login: @anastasia-ms
Microsoft Alias: v-stharr

@gcontrabass, Thanks for the feedback! We are taking a look into this and will get back to you soon.

@gcontrabass Thank you for taking the time to provode feedback.
.Net Core 3.1 is an LTS release and supported until December 2022. More details are here
Rest assured, the tutorial is still relevant and up to date.

The tutorial: https://docs.microsoft.com/en-us/azure/azure-maps/tutorial-iot-hub-maps
says:
Quote

On the Function App creation page, name your function app. Under Resource Group, select ContosoRental from the drop-down list. Select .NET Core as the Runtime Stack. At the bottom of the page, select Next: Hosting

End quote
When you try to  do this, .NET Core is not available.
Here is what I get when I try to select the Runtime Stack:
I tried adding a screen shot...

The choices available are:
.NET
Node.js
Python
Java
PowerShell Core
Custom Handler
If you select .NET the only Version available is 3.1
The code to be used in the tutorial uses at least one .NET Core resource.
Quote

using Microsoft.AspNetCore.Mvc;_

End quote
Azure documentation that I've read said .NET Core would be deprecated.
What am I doing wrong that would not allow me to use .NET Core  in the Function App?
Thank you.

.NET 3.1 is .NET Core. I can update the docs to say ".NET"

#please-close


Add tests to Parser.parseDocuments

Some tests highlight a divergence from Parser.parse which might be undesirable - see comments

Codecov Report
Base: 87.35% // Head: 87.35% // No change to project coverage :thumbsup:

Coverage data is based on head (0c2cfd8) compared to base (d3d0907).
Patch has no changes to coverable lines.

Additional details and impacted files
@@           Coverage Diff           @@
##           master     #342   +/-   ##
=======================================
  Coverage   87.35%   87.35%
=======================================
  Files          14       14
  Lines         253      253
  Branches       18       18
=======================================
  Hits          221      221
  Misses         32       32

Help us with your feedback. Take ten seconds to tell us how you rate us. Have a feature suggestion? Share it here.

:umbrella: View full report at Codecov.
:loudspeaker: Do you have feedback about the report comment? Let us know in this issue.

Could you turn those tests red so that it's obvious what fails?
Than we can work on finding ways to make them green.


Add check option; use RF 4.0

Closes #42

Codecov Report

Merging #44 (4cb89d7) into main (08b0357) will increase coverage by 0.22%.
The diff coverage is 100.00%.

@@            Coverage Diff             @@
##             main      #44      +/-   ##
==========================================
+ Coverage   94.93%   95.16%   +0.22%
==========================================
  Files          12       14       +2
  Lines         415      496      +81
==========================================
+ Hits          394      472      +78
- Misses         21       24       +3

Impacted Files
Coverage Δ

robotidy/app.py
82.22% <100.00%> (+3.84%)
:arrow_up:

robotidy/cli.py
90.98% <100.00%> (+0.38%)
:arrow_up:

robotidy/utils.py
95.45% <100.00%> (ø)

robotidy/__init__.py
100.00% <0.00%> (ø)

Continue to review full report at Codecov.

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


Change APIs from rpc to gRPC

Currently the communications protocol between dart-pad and dart-services is package:rpc, which is heavily deprecated.
Migrating to package:grpc will enable us to put dart-services behind Cloud Endpoints, which gains us a lot of visibility and control over how the API is used.
It is also required prior to moving from GAE Flex to GKE.

We should probably replace this task with a task for expressing the current API in OpenAPI schema, so we can wrap the current dart-services with Cloud Endpoints without requiring gRPC.

This issue is back in play due to the deprecated RPC package causing issues, and the gRPC package now does web browser support.

We went with Protobuf3 JSON over HTTP instead. The first step (adding a new API v2) has been shippped to prod, the next steps are:

Migrate DartPad to API v2: https://github.com/dart-lang/dart-pad/pull/1501
Remove package:rpc depedencies from dart-services: https://github.com/dart-lang/dart-services/pull/488


Support comment

T/O

Coverage decreased (-0.9%) to 96.078% when pulling ea1e475e660e0262ea7691c8eed1a7a1761c5bdb on fieldinrain:support_comment into 4f1ba6e63b9ca8060753b2a852ac2711a811eacd on pinterest:master.

@fieldinrain Is this something you're planning on resubmitting later? Looks like some good stuff in there.

Hi, @jparise
I am using elixir-thrift in my project to define the interface between server(elixir) and client(C#) .
And I extended it to support

unsigned integer (u8/u16/u32/u64)
the client side need some unsigned integer, but it is not the standard feature of Thrift

unix comment(# comment)
Output the comments written in thrift files, and we can write some annotation in comments to generate some special code (I made a source code generator.)

I wonder if it can be used for the general usage, especially unsigned integer. So I close the PR and merged it to my own master branch.
If you think that my PR can be accepted, I will resubmit it later.
Best regards
fieldinrain

Got it, and I'm glad you're finding our library useful!
I think some support for (2) would make sense in the main elixir-thrift package, but (1) probably isn't a good fit because it's non-standard.


TAPO P100 stuck in installation limbo

I've noticed that my TAPO P100 contoller never finishes installing. Re-integrating the device is possible, but update sensor remains the same state(see picture). The buttons are disabled and the update never actually finishes. The device is fully functional and has access to the internet as far as I'm aware. Only inconvinience that the update panel is now permanently populated with the device's update alert.
Home assistant information

#
version

Hardware
rpi4-64

os type
HASS-OS

Core
2024.4.3

Supervisor
2024.04.0

Operating System
12.2

UI
20240404.2

TAPO device info:

#
version

Firmware
1.4.10

Firmware available
1.5.5 Build 20230927 rel.40646

Hardware
1.20.0

Same issue as #747

Not stale at all, as it's still very much happening up to and including the most current version of HASS Core and OS.


Fix disabled links in PagerPanel

Disabled links in the PagerPanel (used on the LuceneSearchPage to page
through search results) were only rendered as "disabled". The links
themselves remained active, which gives strange effects when clicked.
For instance it was possible to move to result pages -1, -2, and so on.
Really disable the links. Add missing CSS rules to have correct styling
as Wicket renders disabled links as spans, not anchors. Include the new
CSS file in BasePage.html. And add the left/right arrows only if not on
the first/last page.

Thanks for the fix.


Update text in tutorial

Update a link text in tutorial to denote that it is in Chinese for extra clarity to the reader before they click on the link.

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


Cannot download the app

As u can see here, i think the link was expired..
Please update it to download the apk.
Thanks for regarding my issue.❤

Fixed now


Break up/refactor geometry.jl as it is currently very long

To start with, we can split the sequential from the parallel code. This will convert file geometry.jl into two new files mesh.jl and p_mesh.jl.

Thanks @fverdugo. That is an excellent; I will soon come back to it, after dealing with some simpler tasks just to warm up.

Thanks @fverdugo. That is an excellent; I will soon come back to it, after dealing with some simpler tasks just to warm up.

To start with, we can split the sequential from the parallel code. This will convert file geometry.jl into two new files mesh.jl and p_mesh.jl. (and remove geometry.jl)

@fverdugo. I have a (naive) conceptual question that came out while addressing #93. This is relation to the way we want to deal with functions that are defined at "module" level or outside its scope. I have an example:
In mesh.jl, we have:
https://github.com/fverdugo/GalerkinToolkit.jl/blob/7a27676a61b94e24a277eb72bce6e5e0674ce1bc/src/mesh.jl#L3371-L3372
Two question arise from it:

The default value of partition_strategy is given by GT.partition_strategy(). However this function is uniquely defined above; here. So, what is the point in using GT. ? This explicitly tells that this function is defined elsewhere. Or Am I missing something ? Note that this is coming from the original geometry.jl

mesh_graph is also called inside p_mesh.jl.  So, in this case, Should I call there GT.mesh_graph(...) since it is only defined outside the module, in mesh.jl ?

Sorry for perhaps being "picky" but I think this is important for code readability. Thanks!

I agree that qualifying function names with GT. is not necessary when working inside the module. NB. In some situations it is necessary if there is local variable that shadows the function name.
I have no strong feelings about if we should use GT. or not when it is redundant.  It is provably better to not use it as you say.

I agree that qualifying function names with GT. is not necessary when working inside the module. NB. In some situations it is necessary if there is a local variable that shadows the function name.
I have no strong feelings about if we should use GT. or not when it is redundant. It is provably better to not use it as you say.

Thanks @fverdugo for clarifying this. I now understand why you use GT.partition_strategy() as right below there is a variable called partition_strategy. Agreed, I will follow your suggestion and keep it simple. Thanks!


Flutter 1.7.8 with catalina Support

Hi guys,
Can you please tell me if Catalina works with flutter 1.7.8? I had issues with 1.9.6 so I had to rollback to 1.7.8. But with catalina I can't build for release. I saw some issues around the same problem, but  it was marked as solved and I don't know if the was pushed back to this version.
Thanks

There is no plan to hotfix Catalina support to 1.7.8.  Closing.
https://github.com/flutter/flutter/wiki/Flutter-build-release-channels#will-a-particular-bug-fix-be-provided-in-a-hotfix-release
Out of curiosity, what 1.9.1 issue were you hitting?


legacy-cli: Allow generating embeddings off openAI when using local LLM

This is a patch while we work out the bugs in the local LLM workflow on the new CLI.
Addresses part of #138

For the new CLI, you just modify memgpt config and  embedding.py, you can separate out the embedding model and main model config. I can do it tomorrow if it's an issue.

Do these changes warrant any updates to the readthedocs?
eg https://memgpt.readthedocs.io/en/latest/endpoints/

No, given that the readthedocs don't contain anything about the legacy cli atm.


Responsiveness

| Pair-to-Pair Code Review |

As you know, in today's world, users expect seamless experiences across various devices, and a responsive design is critical to achieving this. it is an essential aspect of creating a professional and user-friendly project.
[ ] You can kindly consider making your app responsive to all kinds of devices.

Thank you for the feedback!

I will work on making my website responsive, it was one of my goals!


Merge cpptools-related work into CMake Tools

As discussed in https://github.com/vector-of-bool/vscode-cmake-tools/issues/155 , it would be interesting to merge the cpptools-related work into CMake Tools.
This issue is mainly for discussing the potential problems that have to be solved before doing that.
Currently, this extension:

Gets the list of parsed configurations from CMake Tools
Gets the name of the currently selected build target from CMake Tools
Overwrites the content of c_cpp_properties.json with the configuration of the currently selected build target. This is the only way I found so far to force cpptools to use the configuration of the current target:  (source: cpptools documentation)

Problems:

Step 3 has the annoying effect of causing a "null" configuration to be written c_cpp_properties.jsonif no targets are found or if something like "ALL", "clean", etc. is selected... (cf. #1)
The current implementation, uses ServerClientCMakeTools._codeModel in order to get the per-target includes and defines. This requires cmake.experimental.useCMakeServer to be set to true. AFAIK, the non-cmake-server (i.e. "legacy") implementation of CMake Tools doesn't provide such an interface... therefore CMake Tools Helper is currently not capable of supporting projects that don't use CMake Server

Sorry to have vanished for a while.
I have a PR from @dcourtois that will update the c_cpp_properties.json file. I'm wondering if you could take a look at it here and tell me what you think?
I also noted that you have additional functionality such as auto-installing CMake. Would it be helpful to merge such functionality into CMake Tools as well?

Hi,
Sorry for the delay. I have posted an answer at https://github.com/vector-of-bool/vscode-cmake-tools/pull/201#issuecomment-315546446
To recap, his PR does things differently, which is fine. However, for my needs, I still think of keeping my approach of "trying to take care of everything without requiring the user to configure anything"
Concerning the other features of this extension, I will try to clean the code a little bit then submit a few PRs (probably by the end of july/early august... sorry but I will be a little bit busy until then)

Hi there ! Thanks for taking the time to comment on my pull request ! Since the thread is starting to get a bit long there, I wanted to talk a bit more about cpptools related stuff here.
Basically what I would like cmake-tools to do is exactly what you listed (point 1 to 3) Now the problems lie in the problems (ahem :p) you mention:

This is the trickiest one. Basically there is no perfect solution, because solutions not involving the user will inevitable fail for complex project (which is my case, I'm using VSCode at work on rather big / complex projects)

I didn't bother with old versions of CMake (e.g. not using server mode) CMake in non-server mode is really messy to interact with. It's based on scanning things, try to second guessing others, etc. As such, I don't think it's would be wrong to just not support cpptools integration when using an old CMake version with no server mode.

Now the real problem seems to be how to handle problem 1. The way I see it, there are basically 2 approaches

automatically try to handle meta targets by:
a. choosing the first non-meta target available (e.g. which has a list of include paths / defines / compiler flags)
b. merging all the include paths / defines found on all targets.
c. just warn the user that he has to select a non-meta target for the cpptools integration to work
let the user have full control on what to do with meta targets

The first approach might work on simple projects (ones with few targets) but in my case I'm using VSCode in a professional environment. Our project have something like 50+ targets. Most of them are libraries, but there are also many utility tools, executables that are used by other targets as preprocessing steps, etc.
You can see how the only viable option in this case is either 1.c or 2. If the cpptools integration was using 1.a or 1.b approach, it just wouldn't work: 1.a would most likely miss half the needed include paths, 1.b would add my entire hard drive as include paths :D
This is why I think the best approach is 2. This way you can have a setting that lets user choose 1 or more targets to use when a meta target is currently select. This way, what happens when he first open a CMake project is this:

project unconfigured, nothing works but that expected
he configures the project
the addon detects that the code model is available, and try to get the include path and defines from the currently selected target, to update the c_cpp_properties.json file
a. a meta target is selected.
i. the user set the default target(s), use them
ii. the user didn't set the default target, notify him so that he knows why intellisense is not working
b. a valid target is selected, use it

This way the user knows what's happening, and the interaction needed is kept to a minimum: either select a valid target or edit settings. And I think we can even modify step 3.a.ii to add a button which, when clicked, would open the settings.json file and automatically add the correct setting.
What do you think ?

@maddouri Hello and thank you for your great extension!
I just want to fill my feedback as a user.
I've spent a lot of time thinking why "c_cpp_properties.json" contains null configuration.
Thank to debugger I've foud that cmakeToolsWrapper.defaultBuildTarget returns null.
Finally I've changed all target to my real one and a miracle happens. :)
@dcourtois My opinion as a user 2-nd approach is a quite good.
But there is another little problem. After reopening VSCode selected target flips to the all again. It doesn't hard to select proper target on start but it's inconvenient. May be your extension may force select last used target?

@nick-korsakov thanks for the input ! For the reopening problem, it's on the cmake-tools side. I didn't try to investigate why this is happening (it's probably just a matter of storing the last used target) because I'm using my patched version of cmake-tools (it's using the "2-nd approach" previously mentioned, so I'm always working on the all target, and thus do not have your problem when I re-open my workspace)
Try to go check here https://github.com/vector-of-bool/vscode-cmake-tools/issues if this issue already exists, and if not, feel free to add one.

@dcourtois Ok I see. That makes sense indeed! (I mean, option 2 makes perfect sense for meta targets)
As long as, when a non-meta target is selected, (case 3.b) the extension (or your PR) does everything without requiring the user to do anything, then that sounds great to me :)
(btw, I've read https://github.com/vector-of-bool/vscode-cmake-tools/pull/201#issuecomment-316302962 and I do understand your PR more now. Thanks)
@nick-korsakov Thank you for providing feedback.
I do share your frustration with the fact that CMake Tools selects the "all" (or another meta target) by default. Unfortunately, CMake Tools doesn't expose any API for setting the current CMake target. (AFAIK at least. @vector-of-bool I haven't read the updated code of your extension for quite some time now. So please correct me if I'm wrong)
If I had access to such an API, I would:

Select the first non-meta target after the first configuration (resulting in a near-zero-frustration experience for the vast majority of users IMHO)
Keep track of the selected target between different runs of VSCode

@dcourtois as a side note / to elaborate on the motivation behind my requirements for the "cpptools integration": my typical usecases are the following:

Very often: opening a large number of small-to-medium-sized, (1-3 targets) unconfigured, CMake-based projects that require no special configuration (usually, cmake .. && cmake --build . are all that is needed to build them using the CLI): That is why, I want it to "just work" (exactly like in CLion) and spend precisely 0 time configuring
Sometimes: opening a few big/complex, (several dozens of targets/sub-projects) unconfigured, CMake-based projects that require setting some CMake cache variables. In these, relatively rare cases, in which I am destined to devout a LOT of time coding/debugging anyway, I am willing to spend time carefully configuring "stuff" ;)
Almost always: never keep the .vscode (or the .idea folder in the case of CLion) folder after I'm finished with the project (e.g. I don't commit .vscode to version control)

Finally, please allow me to suggest that you have a close look (if you haven't recently) at CLion. I honestly think that you might gain an interesting perspective on how a "productivity-boosting", CMake-based IDE could look like ;)
(disclaimer: I regularly use multiple development environments and build systems and have no special interest in promoting any particular one except perhaps for the potential benefits that it might have on my productivity)

Hi, thanks for the CLion suggestion, but I've already tested it, and unfortunately I really don't like it (all JetBrains IDEs in fact) It's completely irrational and I can't explain why, but I really don't feel at home with it :D Maybe I spent too many years working in the video game industry (basically using Visual Studio) and I'm too old to change too much :p
Anyway, back on topic, in your use cases, case 2 is already taken care of with my "defaultTarget" approach. I understand step 3, so you need something that works out of the box by default.
And here is the thing: the "defaultTarget" approach can be used to solve both step 1 and 3. Currently I'm using it like this: "cmake.defaultTargets": "target1;target2;targetWhatever". But it would be really easy to have something like: "cmake.defaultTargets": "__firstNonMeta" or even "cmake.defaultTargets": "__mergeEverything".
The names are just for clarity. With this approach, you can configure CMake Tools' behaviour in you application's settings, meaning that:

You can configure your VSCode to always try to look for the first valid target, unless otherwise specified in the workspace settings.
I can still configure my VSCode to just keep using all.

What do you think ? That would still require to add 1 global application setting, but at least, when working on all small to medium CMake projects, that would work out of the box.

Different strokes for different folks, right? ;)
Indeed, having e.g. "cmake.defaultTargets": "__firstNonMeta" for people (like myself) who want "something that works out of the box by default" seems good to me.
Of course, you should gather more user feedback, but I can say that I'm Ok with such an approach. :+1:
That issue being solved, how to do you plan to do point 3 of https://github.com/maddouri/vscode-cmake-tools-helper/issues/2#issue-233451332 ? (i.e. making cpptools use the same target as CMake) Last time I've checked (which was a few weeks ago) cpptools doesn't expose any API and the only way to "control" its current target (consistently) is by overwriting the content of c_cpp_properties.json and putting exactly 1 configuration. (i.e. the target's config)

I'm not sure I understand the last part (when you ask how I plan to handle point 3 of #2 comment) ? Could you elaborate on this point, with maybe one concrete example use, explaining what you think is a problem and why ?