Consistent stutter

Hi! I'm noticing a consistent stutter with my strip, but not any other lag.
Video: https://www.youtube.com/watch?v=a1HR7BQzPOY
Note: this is on the official code and pyaudio, not the fork I've been working on

Are you controlling this with an ESP8266?
Can you please upload your config.py as a gist and link it here?

Yup, an esp8266.
https://gist.github.com/icecube45/0874da6c2f94b97ff823799c71104f8a
Only change I've made is the number of leds.
Printing the fps over serial shows no drop in fps.

Hmm this is very strange and I'm not able to reproduce the issue.
Could you try running the latest code in the experimental branch?
The experimental branch processes audio input and updates the LED strips using a different method than the master branch. It also has a brand new GUI and a complete overhaul of the visualizations. I'm curious whether you would still encounter the stuttering issue. If you do encounter the stuttering problem, then you probably have a network issue.
I just changed the settings in the experimental branch to match your particular settings. If you run the experimental branch hopefully you won't have to change any settings.
Important things to know about the experimental branch:

It's not finished yet
Settings are now in config/config.ini instead of in python/config.py
Run the visualization using main.py instead of visualization.py

Some GUI settings are incomplete:

Don't adjust the rise/fall sliders. They don't do anything yet.
Don't change the colormap, your selection will be ignored
Your max frequency range is ignored. Instead, the max frequency is automatically determined by measuring the spectral rolloff.

You may need to install two additional dependencies:
pip install matplotlib
pip install qdarkstyle

When trying to use autocorrelation I get this error

Traceback (most recent call last):
  File "main.py", line 220, in <module>
    audio_visualization(rolling_window)
  File "main.py", line 60, in audio_visualization
    led.pixels = effect_function(audio_frames) * 255
  File "C:\Users\Cole\Desktop\audio-reactive-led-strip-experimental\python\dsp.py", line 126, in wrapper
    filt.update(func(*args, **kwargs))
  File "C:\Users\Cole\Desktop\audio-reactive-led-strip-experimental\python\visualize.py", line 132, in Autocorrelation
    f = peak(f, len(f) // (config.N_PIXELS))
  File "C:\Users\Cole\Desktop\audio-reactive-led-strip-experimental\python\visualize.py", line 28, in peak
    y1 = np.empty((n, 2))
TypeError: 'float' object cannot be interpreted as an integer

I did replace my router just now, and the visualization is as smooth as butter, perhaps I'll try the experimental if the above error is solved.

Are you is using Python 2.7 or 3? So far I have only tested the experimental code on Python 3

It looks like the problem was caused by a simple type conversion error. It's fixed in the latest version of the experimental branch

I'll have a look at the experimental branch tomorrow when I have access to my leds, I was having the stuttering issue occasionally as well.

@scottlawsonbc with the type conversion solved, I'm trying to run the experimental branch again, yet while it appears to be "running", I'm not sure if the effects are working at all: video of visualization

Did you flash the firmware in the experimental branch? I switched the communication protocol for the ESP8266 firmware but I had not made the change on the Python. From your video it looks like a communication protocol mismatch. The new protocol supports more than 256 LEDs.
I just pushed this change https://github.com/scottlawsonbc/audio-reactive-led-strip/commit/08a37a87ffe14fa8c7dbefe9c1e377fb89116fb0 which updates Python to use the new communication protocol as well.
To get it working:

Download the latest experimental branch code which uses the new protocol

Upload the firmware that is included in the experimental branch

After doing that, does it work again?

Yup! that was the issue. Working great now

Great!
By the way, you can tweak the response sensitivity by editing visualize.py
I'm using a custom python decorator to apply a lowpass filter to the output of the visualization function.
You can adjust the filter's time constants to make the visualization more "blinky" or more "relaxed".
For example, with the autocorrelation effect in visualize.py:
@dsp.ApplyExpFilter(fall=0.07, rise=0.001, realtime=True)
def Autocorrelation(audio_frames):

You can make this more relaxed by changed the filter to
@dsp.ApplyExpFilter(fall=0.15, rise=0.001, realtime=True)

You only really need to change the fall time. A fall time range of 0.05 to 0.2 seems to work well. Physical interpretation of the fall time is the amount of time that the LEDs take to decay to 1/e (37%) of their current value in seconds. So fall=0.05 means 50 ms.

I'm seeing stutter with the new experimental branch. It seems to be server side. I think the CPU is a bottleneck (all 8 cores at 100% here).
To get around the 256 LED limit I was seeing with the ESP8266, I did a quick write-up using NeoPixelBus. All out, the ESP8266 can handle 135 FPS with 256 LEDs (I haven't tested more because the python code is doing something weird).
Is this comparable with the I2S for you?

To get around the 256 LED limit I was seeing with the ESP8266, I did a quick write-up using NeoPixelBus. All out, the ESP8266 can handle 135 FPS with 256 LEDs (I haven't tested more because the python code is doing something weird).

In my previous comment I mentioned that I updated the communication protocol and it now supports more than 256 LEDs. So far I have only made this change in the experimental branch.

I'm seeing stutter with the new experimental branch. It seems to be server side. I think the CPU is a bottleneck (all 8 cores at 100% here). I am regularly dropping down to 8-15 fps.

Are those FPS numbers measured from the computer side or the ESP8266 side (via serial)?
It's possible that you are updating the LEDs too frequently. Updating the LEDs hundreds of times per second can overwhelm the ESP8266's ability to receive and process incoming packets. This causes packets to be dropped and results in stuttering.
You also have to be careful between the experimental branch decouples the audio framerate from the LED refresh rate. Your LEDs might be updating at 400 FPS even though you set the FPS to be 60. Setting the FPS only affects the rate at which new audio data is processed. When new audio data is not available, the code will interpolate and continue refreshing the LEDs as fast as possible.
You can work around this by forcing a delay between every refresh. At the bottom of main.py you can change time.sleep(1e-3) to something like time.sleep(5e-3) to limit the LED refresh rate to below 200 FPS.

What is the current status of this issue?

The FPS numbers were measured computer side. I haven't tested tuning the sleep time yet, as I've been trying to get the protocol up and running without stutter on 853 LEDs using multiple outputs. Unfortunately, it doesn't appear to be possible to dump to both strips simultaneously and I'm still encountering a bottleneck. For the purposes here, I'm only testing with 256 LEDs now. I'm still seeing very low framerate serverside (but it seems to be massively improved if I run with gui=False.
Regardless, I'll try increasing the sleep time, as the root cause may be related. But ultimately, I'm seeing low FPS on the computer (9-11 FPS) with GUI. My machine is old (AMD FX-8120 circa 2011), but should still be sufficient for this level of processing.

I think the FadeCandy would be your best option for controlling the 853 pixel LED strip. Each FadeCandy board can control up to 512 pixels through 8 output channels that can drive 64 pixels each. The FadeCandy boards perform temporal dithering, gamma correction, and run at +400 FPS. I have two FadeCandy boards myself and they look great.

Unfortunately there's no way to use more than 64 pixels per channel because of the inherent tradeoff between FPS and number of pixels. You would have to cut your strip every 64 pixels and run the data line all the way back to the FadeCandy board.


[Fixes #5345] Orchard.ContentManagement, StorageFilterBase.cs, fixed sanity check in Versioning() and Versioned() causing possible exceptions

see issue #5345

Following up on the issue, I need a repro to get to the state that a single item is null. I am worried that the code was done this way intentionally and this code would break another scenario.

See issue #5345 for discussion.


Rewrite (S)GPRPosterior for numerical stability.

Fixes: #1959
Our previous GPRPosterior and SGPRPosterior objects computes matrix inverses by solving against an identity matrix. This is not numerically stable.
In this PR I rewrite those posterior objects. My strategy has simply been to take the old (proven) predict_f method, and copy everything that does not depend on Xnew to _precompute and the rest to _conditional_with_precompute. _conditional_fused then just becomes a composition of _precompute and _conditional_with_precompute, which is exactly the same code as the old predict_f.
I've benchmarked the new code using our new benchmarking framework:

The timings are generally on the same order of magnitude.
Often the old code is a bit faster.
Except sometimes the new code is massively faster for GPR on a GPU.

@jesnie just wanted to check, how does this affect the many-predictions use-case, for different numbers of inducing points (SVGP/SGPR) or data points (VGP/GPR)? Which was the initial motivation for creating the Posterior objects in the first place - e.g. if I want to call predict_f() with different Xs many many times inside a loop. There seems to be a definite regression in the benchmarks overview you posted, but I'm also wondering how the gap changes with M/N.

@jesnie just wanted to check, how does this affect the many-predictions use-case, for different numbers of inducing points (SVGP/SGPR) or data points (VGP/GPR)? Which was the initial motivation for creating the Posterior objects in the first place - e.g. if I want to call predict_f() with different Xs many many times inside a loop. There seems to be a definite regression in the benchmarks overview you posted, but I'm also wondering how the gap changes with M/N.

Sorry about the late reply - I've been on vacation, but that is a very fair question and now I have some data for you:

(For the SGPR the number of inducing points is half the number of data points...)

The VGP and SVGP are not affected by this PR.
The new code is no slower than the old code for building the posterior objects.
Generally the new code tends to faster than the old code, when on a GPU and with larger data sizes.
For the GPR the new code is always faster than the old code, when on a GPU - it's slower on a CPU.
For the SGPR the new code is faster than the old code, when you run large datasets on a GPU - it's slower otherwise.

I think, if users care about speed they will be using a GPU, so we can disregard the CPU results.
This means that this is a clear improvement for the GPR, and a mixed bag for the SGPR.


Add Cardano ecosystem interface on DCOne Crypto

Checklist
☑ View cardano ecosystem interface map showing all projects and dapps on the Cardano blockchain (ADA) (click here)
☑ Add a new project at the Add a project menu (click here)
Builder

Name: DCOne Crypto
Description: Explore projects and dApps built on Cardano. From now on, project owners, #Cardano developers, please add projects and update information with us to reach out to the community in a better way.
Link: click here
Tags: ecosystem , cardano ecosystem

I would say this is more of a showcase in my opinion. Check section of showcases with 'Ecosystem' tag. I assume that's what you would like as well.

I would say this is more of a showcase in my opinion. Check section of showcases with 'Ecosystem' tag. I assume that's what you would like as well.
Also please use only existing tags, look through the list and see what fits your project the most. It looks like you didn't build the project on local machine after making the changes, otherwise you would see the conflicts :(

Also @DCOneCrypto please rebase your PR branch upon the current staging branch in the upstream repository... there are some changes that have happened in the meantime (https://github.com/cardano-foundation/developer-portal/pull/897) which are causing a merge conflict & it's proper for you to take care of these on your end if possible.

Also @DCOneCrypto please rebase your PR branch upon the current staging branch in the upstream repository... there are some changes that have happened in the meantime (#897) which are causing a merge conflict & it's proper for you to take care of these on your end if possible (even though, as @fill-the-fill says, you should be modifying the Showcase file instead).

I handled the conflict. Please check again

(p.s. to review) by the same token, the previously submitted logo needs to be removed from the pull request branch (BTW the new logo fits the thumbnail aspect ratio much better).

I appreciate that the submission is now in proper order (and builds the portal ✔ which could & should have been checked by the submitter in the first place) but as with #902 I don't think this tool is complete: e.g. all projects show "Chart: coming soon" whether there is a token or not (as well as a blank Policy ID field).
Like with the other submission I'm not going to shoot it down in case there are improvements on the way but I can't approve it as-is either, especially since even if fixing the current UI/UX problems it still doesn't seem like it offers as complete a view of the Cardano ecosystem than the currently listed ecosystem tools.

Thank you for your review. Policy ID depending on the project may or may not (Minswap, Indigo, Ray Network...)? And I agree with you Chart: "coming soon" but it is a function we add to the projects ourselves.
Currently we have completed providing an overview of the ecosystem and can add projects as I described in the Checklist section above. All websites have a lot of functions and even build tools =). Thank you

@DCOneCrypto warning: since your did this PR from your own fork's staging branch, when I resolved the last merge conflict it has made your own staging different from the upstream staging.  Please keep this in mind if creating any more PRs from your fork!  (This problem usually doesn't happen because PR submitters first create branches off their master branch and do/submit the work from there.)

Just received request from contributor that this be re-reviewed. Indeed it has been filled out since my last review several weeks ago & the features I identified as missing are now working properly in the cases that I checked.
One unique feature of this ecosystem view: I'd be interested to see how the crypto projects' "Comment community" tabs develop... especially in how the administrators might address moderation issues 😁

Currently Comment community it is an open comment for the community to interact without the project owner modifying it or manipulating the results. But don't worry at fund 10 we have developed a community comment voting feature, if it is voted for with a higher rate of disapproval than accepted, it will not be displayed. Can you tell me if our project is approved to show showcase at this stage 😊

It requires 2 more approvals before it can be merged into the web site data... if that happens, it will be included in the next merge of this project's staging branch into the main branch that produces the web site.  So next step is for other editors to review (again).

It requires 2 more approvals before it can be merged into the web site data... if that happens, it will be included in the next merge of this project's staging branch into the main branch that produces the web site. So next step is for other editors to review (again).

Oke. Thanks you very much

@DCOneCrypto you will have to back out or reverse your last commit 4ed39b0 from this PR, which I've approved based on your submission to the Showcase... the unrelated material you've just added effectively disqualifies your request. If you want to add a different tool to Builder Tools you will need a separate PR.

@DCOneCrypto you will have to back out or reverse your last commit 4ed39b0 from this PR, which I've approved based on your submission to the Showcase... the unrelated material you've just added effectively disqualifies your request. If you want to add a different tool to Builder Tools you will need a separate PR.

Thank you for the reminder. I will create another tool in the Tool Builder

Thank you for your contribution and for building on Cardano. This PR has been open for quite a while and was not able to get 3 reviewer approvals. I'm closing it now for not gaining enough "traction".
This is not a judgment on the project and we are glad that you are building on Cardano. Suggestion: you can add your project to https://github.com/input-output-hk/essential-cardano

Thank you for the suggestion. We are already on essentialcardano with tag "ecosystem". We can know why people don't review so we can fix it for reference and maybe modify it. Thanks you!


Editor

I wrote a new plugin. yamleditor.
It lets you manually edit selected fields of a searchresult.
You choose the fields. You do the search.
It opens up a text-editor with the items-itemfields in yaml format.
You edit your fields and save the file.
You can review your changes and save/write them to the lib.
Any suggestions on features/codingstyle ... much appreciated.

This is awesome! This idea was prophesied in an extremely old ticket: #164.
I'm excited to add this. If you'll stomach a slight intrusion of my taste, I tend to like the shortest possible name. How would you feel about just calling this plugin edit?

FYI, @jmwatte, your new commits have appeared here. You can just keep pushing to your branch to update this PR (and comment here when you do).

Sampsyo, what can I do to fix this ? Everytime I build something I get..
Warning, treated as error:
/home/travis/build/sampsyo/beets/docs/plugins/edit.rst:: WARNING: document isn't included in any toctree
ERROR: InvocationError: '/home/travis/build/sampsyo/beets/.tox/docs/bin/sphinx-build -W -q -b html . /home/travis/build/sampsyo/beets/.tox/docs/tmp/html'
grtz

As I mentioned here, you just need to add the documentation page to index.rst.
Other than that, is this ready for another review pass then?

Sorry I missed that one.
Yeah, it's ready for review. I incorporated all the changes you suggested. I even called it browser, that's what people call it. Makes it all friendlier. Feel free to suggest coding suggestions. I got vacation.Yih!!
Like there might be a few place where I could use a map function instead of for-loops, don't know if I should though :))
I am also working on a different way of viewing the objects.
You would be able to group results. Like this

comments:
-"Bad advertising" : 1234 2345 6789 7382
-"stupid remark" : 9898 6767 4545
-"this I like": 5243 1432
So a list of fields with the values and which item uses it. So you could just clear all the bad advertising comments.
grtz
You get my drift. Fields sorted by frequency, I guess.

Looking awesome. I have pulled this into a branch in the main repository so we can collaborate on it here—which means a new pull request in #1706. This way, I can commit to it too; and it sounds like @diego-plan9 is interested in helping out too.


[App request] Meshtastic

If you are familiar with it, an app for meshtastic would be amazing since that is the number 1 useful thing people use lora for. Meshtastic is awesome but it doesn't really have a UI except for on the phone and web apps. Let me know if you'd like more info!

or aprs (on 433 or lora band without ham id) or RNode https://reticulum.network/

It would be a great addition.

agreed! I am currently working on hardware development for the TDeck (better 3D printed case, integrated battery and GPS etc) and I am imagining a version of the ESP32Berry with built in analog UHF Radio, Meshtastic, and more. It could be the ultimate communications device without needing to use any smartphones!

Meshtastic officially supports T-Deck, so I tested it. https://youtu.be/wmGBAGr9dNA?si=y-sQVz3bw5J8tQAY
The IDF version of ESP32Berry is being prepared, but it does not seem easy to apply Meshtastic to it. Perhaps it would be wiser to try a custom UI/UX design (Meshtastic code) for the T-Deck.


Artifacts appear on certain elements (basic modal, loader etc). Firefox only.

Some elements show artifacts in Firefox (latest, updated). These artifacts do not appear in chrome.
See the attached images.

So this was not an issue with Semantic-UI itself. It was a hardware acceleration issue. I will leave this here for anyone else having same issue.
I got this issue fixed by:

Firefox options -> Advanced -> General Tab --- Uncheck "Use hardware acceleration when available"
Restart Firefox

I did update my graphics driver before trying all this but that didn't fix the issue.
I have Intel HD 3000 Family graphics card.


Support zeebe:ExecutionListener

This PR adds support for zeebe:ExecutionListener according to the support table in https://github.com/camunda/camunda-docs/pull/4017
In the implementation, we don't care about element types which are not currently supported in Camunda, e.g.

adhoc subprocesses
transacations
complex gateway
conditional events

Looks good to me!
Just to clarify, we allow end listeners for all Escalation events, because we can not verify if the escalation will be interrupting from the element itself, correct?
cf. https://github.com/camunda/camunda-docs/pull/4017/files#diff-a74161458f7314ea1d7e09cd3e91e96f454af8faf451ca49793dd70ae39fbe9dR65

Correct. And IMO the order in which the events are configured should not affect the EL configuration.
I'd like to hold this PR until the discussion from https://camunda.slack.com/archives/GP70M0J6M/p1720185492298049 is resolved. Can you please have a look too? This PR implements (1) but I'm not so sure about this anymore.

We will enforce the event types, so this PR needs to be merged.


Fix no frame issue when reaching a maximum value of frame ID

Fixed the white flashing issue
When sharing textures, the following order should be ensured.

  Processing (write texture) in the browser
  -> The frame-available callback in the browser
  -> consuming (read texture) in Wolvic
      StartFrame(call UpdateTexImage)
      -> Draw
      -> EndFrame (Call ReleaseTexImage)

Wolvic accesses the last texture every tick(=vsync) even if we don't set the next frame id. Then, it can cause to update/release of texture in Wolvic when the browser is processing the texture on another thread, which can be broken the above sequence. This will cause the empty buffer frame in texture and occur a white flashing issue.
Reset the texture name as zero after finishing the frame to avoid the racing between processing the texture in chromium and consuming it in Wolvic.

Fixed no frame issue when reaching a maximum value of frame ID
Chromium has a maximum value of frame ID of 255(uint8), and when recycling frame id to zero, processing the frame gets stuck.

Reduced the time-out value to 10ms
If the texture conflicts, the callback could not be called in time. We reduce the timer's time so that the next frame is handled shortly.

Is there any way to avoid swapping an empty frame when the frame is not ready?

I think it would be possible to make sure that Wolvic doesn't swap after the frame's cancellation. @svillar , wdyt?


How do I add some permissions? Such as /spawn,/home...

How do I add some permissions? such as /spawn,/home,/sethome...
The server is sponge 1.10.2
I can not find these permission nodes,use"minecraft.command.spawn" or "sponge.command.spawn" invalid.
I am not good in English, hope you can understanding.

These commands are from Essentials and EssentialSpawn. Check out their permission nodes.

I don't ues Essentials or EssentialSpawn.How Check？

You'll need to figure out which plugin/mod is providing those commands. If you're using Sponge, you're probably using the Nucleus plugin. A list of its permissions is available at  https://nucleuspowered.org/docs/permissions.html

Just type in the command /lp tree and follow the link


WIP: Add notebook documentation with nbsphinx extension

Add Jupyter Notebook printouts to Sphinx documentation. Resolves Issue 204.

@thewtex The CI documentation build check succeeds when the nbsphinx extension is included via pip install rather than built from source as a submodule as we had briefly discussed before. Is it reasonable to include the PyPi package as an extra dependency for documentation? Note that nbsphinx also requires pandocs to be installed in the environment via apt.

@tbirdso excellent!
Due to the pandoc dependency, which may be more difficult to obtain on Windows for example, can we add nbsphinx as a pip install dependency, but as a CMake configuration option that is OFF by default?

@thewtex Do we need additional checks if we are intending to build documentation on Windows and macOS? Current documentation checks cover Ubuntu 18.04 only.
pandocs has a basic installer for Windows, is there more difficulty involved with building with nbsphinx or other extensions than running the installer?
nbsphinx is building markup blocks from within .rst files. Is there a way to conditionally build these blocks based on CMake variables?

@thewtex Do we need additional checks if we are intending to build documentation on Windows and macOS? Current documentation checks cover Ubuntu 18.04 only.

Windows and macOS CI documentation builds would be good.

nbsphinx is building markup blocks from within .rst files. Is there a way to conditionally build these blocks based on CMake variables?

The content of conf.py could be configured based on the CMake variable and conf.py.in to conditionally add the nbsphinx extension. Do the markup blocks with *.ipynb cause documentation build failures if the nbsphinx extension is net enabled?

pandocs has a basic installer for Windows, is there more difficulty involved with building with nbsphinx or other extensions than running the installer?

If this is easy enough, we could add a check for the availability of the executable with CMake find_executable, and provide installation instructions if it is not available (we should probably do this for Ubuntu, at least). On macOS, these type of dependencies are usually installed with HomeBrew, e.g. brew install pandoc.

@tbirdso could this please be rebased on master for updated CI?

@thewtex It seems like pandoc does need to be in the PATH for nbsphinx to run in building documentation. nbsphinx docs note:

The use of pandoc in nbsphinx is temporary, but will likely stay that way for a long time, see issue
#3617

We can take a look at pypandoc as an alternative installation process but it looks like that might not be maintained?


Potential Leakage of Information Across Folds in Kfold.py

🐛 Bug

I believe that there can potentially be some leakage of information across folds when changing some parameters in the Kfold.py script. Say that the user chooses to save every single checkpoint. After the first fold training finishes, the second fold uses the same checkpoint directory as the first fold.  So if the second fold finishes training and the user decides to load the best checkpoint, the second fold may potentially load a checkpoint from the training of the first fold.
To Reproduce
Run the script Kfold.py

Expected behavior
We expect that the training process of multiple folds is independent of one another.

Environment

PyTorch Lightning Version: 1.6.0dev
PyTorch Version: 1.10.0+cu102
Python version: 3.7.11
OS: Linux
CUDA/cuDNN version: Using CPU
GPU models and configuration:
How you installed PyTorch (conda, pip, source):
If compiling from source, the output of torch.__config__.show():
Any other relevant information:

Additional context

I think the solution may be to clear out previous checkpoints when starting out the new fold. We would also need to reset the checkpoint states (like reset minimum validation loss when advancing to the next fold).
cc @awaelchli @ananthsub @ninginthecloud @rohitgr7 @carmocca @justusschock

How are you loading the checkpoint? Are you using one of the checkpoints saved manually by the loop?
https://github.com/PyTorchLightning/pytorch-lightning/blob/1eff3b53c1ff9d362fc24a1e4fea6c0cfe78696b/pl_examples/loop_examples/kfold.py#L203
Or through ModelCheckpoint?
You might want to use one ModelCheckpoint instance per fold.

I got same issue ,  one ModelCheckPoint  seemd to be not work correctly, How to  use one ModelCheckpoint instance for each fold?

How are you loading the checkpoint? Are you using one of the checkpoints saved manually by the loop?
https://github.com/PyTorchLightning/pytorch-lightning/blob/1eff3b53c1ff9d362fc24a1e4fea6c0cfe78696b/pl_examples/loop_examples/kfold.py#L203
Or through ModelCheckpoint?
You might want to use one ModelCheckpoint instance per fold.

To use 1 model checkpoint per fold, here is how I did it:

In the model, log the metrics with different names for each fold, for e.g. val_loss should be f"fold_{fold}-val_loss"

def validation_step(self, batch, batch_idx):
    ...
    fold = self.trainer.fit_loop.current_fold
    self.log(f"fold_{fold}-val_loss", loss.item(), on_step=False, on_epoch=True)
    ....

create multiple model checkpoint instances that monitor different fold val losses

model_checkpoints = [KFoldModelCheckpoint(
    filename="{" + f"fold_{f}-val_loss" + "}_{epoch}.pt",
    monitor=f"fold_{f}-val_loss",
    mode="min",
    every_n_epochs=1,
    save_top_k=3
) for f in range(num_folds)]

But note that the original ModelCheckpoint will throw an error because the model checkpoint for fold 0 can only monitor fold_0-val_loss so, during other folds, the metric fold_0-val_loss is not found. We can simply extend ModelCheckpoint to ignore folds that are not relevant

class KFoldModelCheckpoint(ModelCheckpoint):
    def _save_topk_checkpoint(self, trainer: "pl.Trainer", monitor_candidates: Dict[str, _METRIC]) -> None:
        if self.save_top_k == 0:
            return
        # validate metric
        if self.monitor is not None:
            if self.monitor not in monitor_candidates:
                if "fold" in self.monitor: # if fold specific metrics are not found in monitor_candidates, just don't do anything
                    return
                else:
                    m = (
                        f"`ModelCheckpoint(monitor={self.monitor!r})` could not find the monitored key in the returned"
                        f" metrics: {list(monitor_candidates)}."
                        f" HINT: Did you call `log({self.monitor!r}, value)` in the `LightningModule`?"
                    )
                    if trainer.fit_loop.epoch_loop.val_loop._has_run:
                        raise MisconfigurationException(m)
                    warning_cache.warn(m)
            self._save_monitor_checkpoint(trainer, monitor_candidates)
        else:
            self._save_none_monitor_checkpoint(trainer, monitor_candidates)

Now, model checkpoint for k-fold will work properly ;)

But note that the original ModelCheckpoint will throw an error because the model checkpoint for fold 0 can only monitor fold_0-val_loss so, during other folds, the metric fold_0-val_loss is not found. We can simply extend ModelCheckpoint to ignore folds that are not relevant

I would suggest doing instead:
class KFoldModelCheckpoint(ModelCheckpoint):
    def on_train_epoch_end(self, trainer: "pl.Trainer", pl_module: "pl.LightningModule") -> None:
        if trainer.fit_loop.current_fold == self.fold:
            super().on_train_epoch_end(trainer, pl_module)
``
(also for `on_train_batch_end` and `on_validation_end`)

thanks @carmocca, I find that we can also override _should_skip_saving_checkpoint so it looks even more semantically correct as _should_skip_saving_checkpoint is called at the beginning of on_train_batch_end, on_train_epoch_end and on_validation_end, hence, we only need to modify one function ;)
The KFoldModelCheckpoint can be refactored to be quite concise like this
class KFoldModelCheckpoint(ModelCheckpoint):

    def __init__(self, fold, *args, **kwargs):
        super().__init__(*args, **kwargs)
        self.fold = fold

    def _should_skip_saving_checkpoint(self, trainer: "pl.Trainer") -> bool:
        return trainer.fit_loop.current_fold != self.fold or super()._should_skip_saving_checkpoint(trainer)


I tried to pull the h3c branch, and I reported an error after executing the make docker command

When I used the make docker command following the README-H3C.md document, it reported the following error

Then I tried to execute the make setup-master command directly, but failed to find the image on the dockerhub when pulling the image. Where should I get the image?

第一个错我遇到过，这是因为react-draggable的最新版有问题，去package.json修改react-draggable的版本为"4.4.5"再执行make docker就好了，这对我有效。
I've encountered the first error, it's because the latest version of react-draggable has a problem, go to package.json and change the version of react-draggable to "4.4.5" and then go to make docker and it's fine, it works for me!


Allow disabling benchmarks

Benchmarks are not particularly interesting for package maintainers. It seems like pubsub and  spanner already has this logic:
https://github.com/googleapis/google-cloud-cpp/blob/54c23df2975e8e6449295cd22141e30320cf5bf5/google/cloud/spanner/benchmarks/CMakeLists.txt#L99-100
The next two questions are:

Do we stick with just using BUILD_TESTING for this or we introduce a new option like GOOGLE_CLOUD_CPP_ENABLE_BENCHMARKS?
Spanner seems to define spanner_client_define_benchmarks twice, I do not know if this is intentional or not

I think BUILD_TESTING is the way to go.
Defining spanner_client_define_benchmarks twice is probably an oversight, but harmless, we define the function and call it once, mostly to get a scope for variables.  Defining it again has no downside other than our own confusion.

I see now that one function is for micro benchmarks and the other is for macro benchmarks. Although this isn't obvious at first glance, so I'll add a comment.

I looked more closely and it seems like this issue is not necessary.


Pr/188 - allow stub publish

WHY
BEFORE - What was wrong? What was happening before this PR?
As started in https://github.com/Laravel-Backpack/Generators/pull/188 we didn't allow to publish the stubs.
I picked up the code from that PR a took it to the final stage.
AFTER - What is happening after this PR?
You can now publish the stubs with php artisan vendor:publish --tag=backpack-generators-stubs and the commands will pick either the stub from the user folder, or use the one in the package.
HOW
How did you achieve that, in technical terms?
Shadownbane did almost all the work, all credits goes to him. We added a trait that return the stub path for components.
Is it a breaking change or non-breaking change?
No I don't think so.

This seems like a point release, so please let's ask Jorge to do the final test, not me.

OK TESTED.

Command Publishes Stubs.✅
Other commands uses overridden Stubs✅

Thanks @pxpm & @shadowbane for introducing new command to the backpack
It's ready to merge and we need to put in docs.


m4 timeseries benchmark

This is a 🔦 documentation change.
WIP

[x] Include a M4 benchmark table in the documentation (01f7ee3)
[x] Run the latest FEDOT version with topo features on M4 in the pytsbe and update metrics in the benchmark table (80f172f)
[ ] Add Fedot.Industrial results (related pytsbe PR)
[ ] Add the Nadeau and Bengio correction of dependent Student's t-test

@RepoPilotAssistant /improve

PR Code Suggestions ✨
CategorySuggestion                                                                                ScoreReadability

Align table headers for better readability

The table headers for the intervals are not aligned properly, which can make the table difficult to read. Aligning the headers will improve readability and consistency.
docs/source/benchmarks/forecasting.rst [68-72]
 +    +-------------+----------+--------+--------+--------+-----------+--------+---------+
-+    | Library     | Quantile |                   Intervals                             |
-+    +             +          +--------+--------+--------+-----------+--------+---------+
-+    |             |          | Daily  | Weekly | Montly | Quarterly | Yearly | Overall |
-+    +=============+==========+========+========+========+===========+========+=========+
++    | Library     | Quantile | Daily  | Weekly | Montly | Quarterly | Yearly | Overall |
++    +=============+==========+========+========+========+========+========+========+

Suggestion importance[1-10]: 7
Why:
7

Align the "Overall" column cells for consistency

The table cells for the "Overall" column are not aligned consistently. Aligning these cells will improve the visual consistency of the table.
docs/source/benchmarks/forecasting.rst [73-77]
-+    |   LagLlama  |   10     | 1.457  | 3.258  | 5.303  | 5.713     | 11.665 |  2.64   |
-+    |             |   50     | 4.513  | 11.167 | 18.534 | 20.027    | 33.141 | 13.036  |
-+    |             |   90     | 13.123 | 28.268 | 62.091 | 48.793    | 73.565 | 48.056  |
++    |   LagLlama  |   10     | 1.457  | 3.258  | 5.303  | 5.713     | 11.665 |  2.64  |
++    |             |   50     | 4.513  | 11.167 | 18.534 | 20.027    | 33.141 | 13.036 |
++    |             |   90     | 13.123 | 28.268 | 62.091 | 48.793    | 73.565 | 48.056 |

Suggestion importance[1-10]: 7
Why:
7

Align the "Library" column cells for consistency

The table cells for the "Library" column are not aligned consistently. Aligning these cells will improve the visual consistency of the table.
docs/source/benchmarks/forecasting.rst [73-85]
-+    |   LagLlama  |   10     | 1.457  | 3.258  | 5.303  | 5.713     | 11.665 |  2.64   |
-+    |    NBEATS   |   10     | 0.732  | 1.021  | 1.173  | 1.818     | 3.038  | 1.036   |
-+    |   TimeGPT   |   10     | 1.687  | 1.272  | 1.134  | 2.459     | 4.179  | 1.536   |
++    | LagLlama    |   10     | 1.457  | 3.258  | 5.303  | 5.713     | 11.665 |  2.64  |
++    | NBEATS      |   10     | 0.732  | 1.021  | 1.173  | 1.818     | 3.038  | 1.036  |
++    | TimeGPT     |   10     | 1.687  | 1.272  | 1.134  | 2.459     | 4.179  | 1.536  |

Suggestion importance[1-10]: 7
Why:
7
Accuracy

Correct a misspelled word in the table header

The word "Montly" in the table header is misspelled. It should be corrected to "Monthly" for accuracy and consistency.
docs/source/benchmarks/forecasting.rst [71]
-+    |             |          | Daily  | Weekly | Montly | Quarterly | Yearly | Overall |
++    |             |          | Daily  | Weekly | Monthly | Quarterly | Yearly | Overall |

Suggestion importance[1-10]: 7
Why:
7


[GOBBLIN-735] Relocate all google classes to cover protobuf and guava dependency

Dear Gobblin maintainers,
Please accept this PR. I understand that it will not be reviewed until I have checked off all the steps below!
The shadow jar of orc-dep contains protobuf dependency that conflicts with other packages like Calcite's usage which is higher than this. Relocate them when publishing shadow jar.
JIRA

[x] My PR addresses the following [Gobblin JIRA]

https://issues.apache.org/jira/browse/GOBBLIN-735

Description

[x] Here are some details about my PR, including screenshots (if applicable):

Tests

[x] My PR adds the following unit tests OR does not need testing for this extremely good reason:

Commits

[x] My commits all reference JIRA issues in their subject lines, and I have squashed multiple commits if they address the same issue. In addition, my commits follow the guidelines from "How to write a good git commit message":

Subject is separated from body by a blank line
Subject is limited to 50 characters
Subject does not end with a period
Subject uses the imperative mood ("add", not "adding")
Body wraps at 72 characters
Body explains "what" and "why", not "how"

+1


datascience version 2.0 changes

Review comments incorporated for datascience and created datascience2.0 branch. Please review.

This looks good.  Take a look at the comments, but no need for resubmission.  You're done with this.


Invalidate pod state cache before events from kubelet are propagated

Currently it can (sometimes) happen that when an event is observed in the /api/v1beta1/watch/events stream, the pod status that can be obtained by doing a GET on /api/v1beta1/pods is not yet updated and still shows the old value - for example it shows "Waiting" when the event of type "running" originating from the kubelet has already been received via the watched stream.

This should be resolved by/after #4561


[docs] Fix broken link & update MUI packages explanation

close #29493
Preview: https://deploy-preview-29583--material-ui.netlify.app/guides/understand-mui-packages/#main-content

[x] I have followed (at least) the PR section of the contributing guide.

Should we stick to something like "style library adapter" when not referring to the styled-engine package specifically? It's quite confusing otherwise.

"style library adapter" sounds good to me.

Is this capitalization correct?

changed to TL;DR

This is not how we have been treating them so far

removed.

core -> base

updated the image.

This can be controversial

removed.

Are we sure about the size of the images?
For example, /static/images/packages/mui-packages.png displays blurry on my x2 screen. Its displayed size is 448px so I would assume that we can use an image with an intrinsic size of 896px (x2). It's currently 1381px. Same for docs/public/static/images/packages/mui-system.png

Are we sure about the size of the images?
For example, /static/images/packages/mui-packages.png displays blurry on my x2 screen. Its displayed size is 448px so I would assume that we can use an image with an intrinsic size of 896px (x2). It's currently 1381px. Same for docs/public/static/images/packages/mui-system.png. It definitely makes a visible difference in my screen display environment, but I don't know if it would also help developers with an x1 display.
BTW, I have purchased the latest MackBook Pro, only for the XDR display, so I can be pickier in the future with visual aesthetics 👼. Looks good otherwise

The size looks correct to me, 1381px is more than 896px so wouldn't it give a similar result.
I can open a fix later.

so I can be pickier in the future with visual aesthetics 👼.

👀 👀 👀 fancy!

1381px is more than 896px so wouldn't it give a similar result.

@siriwatknp Yeah, I don't know if this only helps people like me on Apple hardware or Windows developers with regular screens too. In the case of Apple, the CSS pixel is 448, so it uses 896 real pixels. Now, if the image is also 896 pixels, then the OS doesn't need to resize it 👌. With a larger image size, it resizes it, the text loses its crispness, it becomes fuzzy, harder to read.


boards: shields: Add Seeed Studio XIAO Expansion Board

Add Seeed Studio XIAO Expansion Board:

User button
SSD1306 128x64 pixels
MicroSD
PFC8563 RTC

Reduced image size.

Reduced image size.

Thanks! I just pushed a fixup commit where the image is now transparent, which is even better IMO
also removed the pins diagram as I don't think it adds a lot of value vs. people going to Seeed Studio wiki/website if they need more info.
If that works for you, I'll let you squash the fixup commit :)

Thanks! I just pushed a fixup commit where the image is now transparent, which is even better IMO also removed the pins diagram as I don't think it adds a lot of value vs. people going to Seeed Studio wiki/website if they need more info.
If that works for you, I'll let you squash the fixup commit :)

Thanks, @kartben! It's perfect for me. Just one question. Now I have to squash the fixup commit and push force? Thanks

Thanks! I just pushed a fixup commit where the image is now transparent, which is even better IMO also removed the pins diagram as I don't think it adds a lot of value vs. people going to Seeed Studio wiki/website if they need more info.
If that works for you, I'll let you squash the fixup commit :)

Thanks, @kartben! It's perfect for me. Just one question. Now I have to squash the fixup commit and push force? Thanks

Yes!

Update, @kartben. Thank you for your help!


Peer Review to Results Page fix

Fixes an error when switching from peer review to results page, where it redirects to the wrong assignment ID.

@david-yz-liu This failing test confuses me. I don't see how my code change could have caused this errors, and when running the rspec test myself, I do not get any errors.

@christinem yeah don't worry about this test.

@christinem I don't know how to test this until the peer review links work again. (Note: maybe that problem is actually a seeding problem?)

@david-yz-liu since it seems that one failed test also appeared in #2691, I will check to see if it is a seeding issue.
And even though you merged this in already, the problem was actually just if you were switching from the peer review tab (so the peer review 'landing page') to the results tab, not from a particular review.


[WIP] Remove old swapper

We need to replace the "old" swapper for the stochastic swapper.

This PR includes and goes on top of PR #2023.

There is a small debate currently about how a swapper should work. So closing for now.


Make feeder method to center the note

We noticed that if the note comes in offset to one side it doesn't shoot correctly.
If the note is "shaken" up and down in the feeder a few times it usually centers correct.
Need to make a method/command to do this with a button mapping (whileTrue)

included in last merge


Put Download Link in the Readme

Better to add the compilations in the Releases section.

I might be a tart, but couldn't find the download link, the zip hosted here contains bits and pieces, but not the actual app. Any chance for a link from someone?

I, being another tart, would really appreciate a compilation in the releases section. I am having to learn about this development environment through working through my mistakes in order to convert a pdf to an ebook... Or of course I could use the command line utility whist waiting for a release...

Yes, a downloadable file would preferable. For the moment, I just used the CLI utility with the settings from here:
https://github.com/fibasile/MacReFlower/blob/a21ac898b68ebab59b63f43c5c9f49c0e93513e0/MacReFlower/MRFAppDelegate.m#L211

As a workaround: It was actually not that hard to build the app on my mac (osx 10.11.6 el capitan with xcode 8.1). I just had to download a zip of the project, unzip it and load the whole folder into xcode. In order to build it, I had to disable code signing in the project settings (click  on the Project file in the root in the menu left, pick the settings for the target and go to to the build settings and under Signing and there under Code Signing Identity "Don't Code sign".

Yes I used openmedi instructions and then used Product > Archive to have a file that I could put into "Applications". Thanks !


Create Using-The-App.md

Details
Adding app help site article
Fixed Issues
Fixes https://github.com/Expensify/Expensify/issues/311417

Please postfix  PROPOSAL: with a URL link to your GitHub comment, which contains the approved proposal (i.e. the proposal that was approved by Expensify).  For example, PROPOSAL: https://github.com/Expensify/App/issues/<issueID>#issuecomment-1369752925

Do NOT add the special GH keywords like fixed etc, we have our own process of managing the flow.
It MUST be an entire link to the github issue and your comment proposal ; otherwise, the linking and its automation will not work as expected.
Make sure this section looks similar to this (you can link multiple issues using the same formatting, just add a new line):
$ https://github.com/Expensify/App/issues/
$ https://github.com/Expensify/App/issues/<issueID(comment)>
Do NOT only link the issue number like this: $ #
--->
$
PROPOSAL:
Tests

[ ] Verify that no errors appear in the JS console

Offline tests

QA Steps

[ ] Verify that no errors appear in the JS console

PR Author Checklist

[ ] I linked the correct issue in the ### Fixed Issues section above
[ ] I wrote clear testing steps that cover the changes made in this PR

[ ] I added steps for local testing in the Tests section
[ ] I added steps for the expected offline behavior in the Offline steps section
[ ] I added steps for Staging and/or Production testing in the QA steps section
[ ] I added steps to cover failure scenarios (i.e. verify an input displays the correct error message if the entered data is not correct)
[ ] I turned off my network connection and tested it while offline to ensure it matches the expected behavior (i.e. verify the default avatar icon is displayed if app is offline)
[ ] I tested this PR with a High Traffic account against the staging or production API to ensure there are no regressions (e.g. long loading states that impact usability).

[ ] I included screenshots or videos for tests on all platforms
[ ] I ran the tests on all platforms & verified they passed on:

[ ] Android / native
[ ] Android / Chrome
[ ] iOS / native
[ ] iOS / Safari
[ ] MacOS / Chrome / Safari
[ ] MacOS / Desktop

[ ] I verified there are no console errors (if there's a console error not related to the PR, report it or open an issue for it to be fixed)
[ ] I followed proper code patterns (see Reviewing the code)

[ ] I verified that any callback methods that were added or modified are named for what the method does and never what callback they handle (i.e. toggleReport and not onIconClick)
[ ] I verified that the left part of a conditional rendering a React component is a boolean and NOT a string, e.g. myBool && <MyComponent />.
[ ] I verified that comments were added to code that is not self explanatory
[ ] I verified that any new or modified comments were clear, correct English, and explained "why" the code was doing something instead of only explaining "what" the code was doing.
[ ] I verified any copy / text shown in the product is localized by adding it to src/languages/* files and using the translation method

[ ] If any non-english text was added/modified, I verified the translation was requested/reviewed in #expensify-open-source and it was approved by an internal Expensify engineer. Link to Slack message:

[ ] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[ ] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is approved by marketing by adding the Waiting for Copy label for a copy review on the original GH to get the correct copy.
[ ] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[ ] I verified the JSDocs style guidelines (in STYLE.md) were followed

[ ] If a new code pattern is added I verified it was agreed to be used by multiple Expensify engineers
[ ] I followed the guidelines as stated in the Review Guidelines
[ ] I tested other components that can be impacted by my changes (i.e. if the PR modifies a shared library or component like Avatar, I verified the components using Avatar are working as expected)
[ ] I verified all code is DRY (the PR doesn't include any logic written more than once, with the exception of tests)
[ ] I verified any variables that can be defined as constants (ie. in CONST.js or at the top of the file that uses the constant) are defined as such
[ ] I verified that if a function's arguments changed that all usages have also been updated correctly
[ ] If a new component is created I verified that:

[ ] A similar component doesn't exist in the codebase
[ ] All props are defined accurately and each prop has a /** comment above it */
[ ] The file is named correctly
[ ] The component has a clear name that is non-ambiguous and the purpose of the component can be inferred from the name alone
[ ] The only data being stored in the state is data necessary for rendering and nothing else
[ ] If we are not using the full Onyx data that we loaded, I've added the proper selector in order to ensure the component only re-renders when the data it is using changes
[ ] For Class Components, any internal methods passed to components event handlers are bound to this properly so there are no scoping issues (i.e. for onClick={this.submit} the method this.submit should be bound to this in the constructor)
[ ] Any internal methods bound to this are necessary to be bound (i.e. avoid this.submit = this.submit.bind(this); if this.submit is never passed to a component event handler like onClick)
[ ] All JSX used for rendering exists in the render method
[ ] The component has the minimum amount of code necessary for its purpose, and it is broken down into smaller components in order to separate concerns and functions

[ ] If any new file was added I verified that:

[ ] The file has a description of what it does and/or why is needed at the top of the file if the code is not self explanatory

[ ] If a new CSS style is added I verified that:

[ ] A similar style doesn't already exist
[ ] The style can't be created with an existing StyleUtils function (i.e. StyleUtils.getBackgroundAndBorderStyle(themeColors.componentBG))

[ ] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[ ] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[ ] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[ ] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[ ] If a new page is added, I verified it's using the ScrollView component to make it scrollable when more elements are added to the page.
[ ] If the main branch was merged into this PR after a review, I tested again and verified the outcome was still expected according to the Test steps.
[ ] I have checked off every checkbox in the PR author checklist, including those that don't apply to this PR.

Screenshots/Videos

Web

Mobile Web - Chrome

Mobile Web - Safari

Desktop

iOS

Android

@rushatgabhane does this one look good to go?

@tjferriss let us know if you need help making these changes!

A preview of your ExpensifyHelp changes have been deployed to https://c3bd3e81.helpdot.pages.dev ⚡

Ugh this got a little wonkier than expected - it looks like (on the preview link) the latter headers got stuck within the numbered lists. @rushatgabhane do you have a moment to see what needs to be done to fix the formatting? If not I should be able to look tomorrow or Friday

Okay last two comments:

I figured out - we need a line break after each list to make the formatting work (so after current lines 11, 18, and 24)
Not a Blocker - There's the sort of orphaned Deep dive header in the middle there, which looks a little weird since there's only one section beneath it. Do we need it, or can we drop it and change the heading level of Using SmartScan on the App and its own sections?

@dangrous I added the line breaks. I'm not sure about the deep dive part. I'd need to see it on the actual page.

Here's the preview https://13ce45da.helpdot.pages.dev/articles/expensify-classic/getting-started/Using-The-App#gsc.tab=0 @tjferriss

@dangrous I think it looks great, including the deep dive section.

Ah nice, I will merge then!

🚀 Deployed to staging by https://github.com/dangrous in version: 1.3.99-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/roryabraham in version: 1.3.99-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to staging by https://github.com/dangrous in version: 1.4.0-0 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


Components only render after a hot reload

Description
I'm following along with the joystick example here. When I attempt a hot restart of my app, this is what I see:

Only when I trigger a hot reload do I actually see the components being rendered properly:

Development environment
Flame version: ^1.0.0-rc2

Flutter doctor:
Doctor summary (to see all details, run flutter doctor -v):
[√] Flutter (Channel stable, 1.22.3, on Microsoft Windows
    [Version 10.0.19041.630], locale en-US)

[√] Android toolchain - develop for Android devices (Android SDK
    version 30.0.2)
[!] Android Studio (version 4.1.0)
    X Flutter plugin not installed; this adds Flutter specific
      functionality.
    X Dart plugin not installed; this adds Dart specific
      functionality.
[!] IntelliJ IDEA Community Edition (version 2019.3)
    X Flutter plugin not installed; this adds Flutter specific
      functionality.
    X Dart plugin not installed; this adds Dart specific
      functionality.
[√] VS Code, 64-bit edition (version 1.51.1)
[√] Connected device (1 available)

! Doctor found issues in 2 categories.

Runtime
This issue is related to running on which platform? (Select all that apply)

[x] Android :android:
[ ] iOS :apple:
[ ] Web :browser:

Minimal reproducible code (Required for bugs)
A minimal reproducible example can be found here.

How are you running it?

In VS Code I hit Ctrl+F5 (Run without debugging).

Do you get the same result if you just run flutter run from the terminal?

Yes. Then if I enter r (hot reload), it works as expected, but if I enter R (hot restart), the issue arises.

It seems when I enter s (take a screenshot), this has the same effect as doing a hot reload.

Changing the square from type Component to flame_forge2d's BodyComponent causes it to render from the start as expected. The problem persists for the joystick, though.

@osharaki Can you confirm is this is still happening on the more recent version of Flame? (v1.0.0-rc4)
Also, I noticed that you are adding your components on the constructor of your game, you could also try to add them on the onLoad method, like
  @override
  Future<void> onLoad() {
    joystick.addObserver(player);
    add(player);
    add(joystick);
  }

When I upgrade to Flame 1.0.0-rc4, runApp(MainGame().widget) now causes an error:

The getter 'widget' isn't defined for the type 'MainGame'

dependencies:
  ...
  flame: ^1.0.0-rc4

@osharaki you have to wrap it in a GameWidget.
runApp(
  GameWidget(
    game: MainGame()
  )
);

@osharaki Can you confirm is this is still happening on the more recent version of Flame? (v1.0.0-rc4)
Also, I noticed that you are adding your components on the constructor of your game, you could also try to add them on the onLoad method, like
  @override
  Future<void> onLoad() {
    joystick.addObserver(player);
    add(player);
    add(joystick);
  }

After upgrading and applying @spydon's comment, the behavior still hasn't changed. However, when I add the components in onLoad() instead, as @erickzanardo suggested, it works fine. I did need to add return super.onLoad();, though. So:
@override
  Future<void> onLoad() {
    joystick.addObserver(player);
    add(player);
    add(joystick);
    return super.onLoad();
  }

In fact, onLoad() also fixes the issue on 1.0.0-rc2. So it seems this was simply a matter of incorrectly adding the components all along?

You shouldn't need to return 'super.onLoad()' that probably was required because you didn't added the 'async' keyword to your method declaration.
Since the use of the onLoad method solved the issue, I am gonna close this, feel free to add more questions here if needed.


Assertion argList.size() == 1 failed. Please report this to the developers

Not sure if you're looking for bug tickets here but...
Running this query
PREFIX rdfs: <http://www.w3.org/2000/01/rdf-schema#>
PREFIX schema: <http://schema.org/>
PREFIX wd: <http://www.wikidata.org/entity/>
PREFIX wdt: <http://www.wikidata.org/prop/direct/>
SELECT DISTINCT ?occupation ?occupationLabel (COUNT(?item) as ?count) WHERE {
?item wdt:P31 wd:Q5;
      wdt:P106 ?occupation;
      wdt:P27 wd:Q142;
      wdt:P569 ?birthdate.
  ?occupation rdfs:label ?occupationLabel.
  filter (lang(?occupationLabel) = "en") .
  ?sitelink schema:about ?item;
    schema:isPartOf <https://fr.wikipedia.org/>.
  FILTER(YEAR( ?birthdate ) > 1969)
}
GROUP BY ?occupation ?occupationLabel
ORDER BY DESC(?count)

against https://qlever.cs.uni-freiburg.de/wikidata/LvtKLY produced the error

Assertion argList.size() == 1 failed. Please report this to the developers. In file "/local/data/qlever/qlever-code/src/parser/sparqlParser/SparqlQleverVisitor.cpp " at line 1635

On the blazegraph query service this times out.  Yes I'm aware this is a terrible way to write this query (but QLever doesn't support FILTER NOT EXISTS?)

the optimized query https://qlever.cs.uni-freiburg.de/wikidata/CQKqRd works and is really nice (i'm very happy)

@derenrich Funny coincidence (or not?). QLever has not implemented the BOUND function thus far and I added an experimental version shortly before you opened the issue. That version still had a bug, which is now fixed, for example: https://qlever.cs.uni-freiburg.de/wikidata/gfQXsh

Oh yeah I'm really bad at SPARQL. I know the query I wrote was inefficient though I guess I hoped/assumed the engine would know to optimize it out to the other one. Guess not.
Thanks so much. Looks like this issue is fixed now.

@derenrich Thanks for the feedback. If you can write such queries, you are not so bad at SPARQL. The problem with your first query was not one of efficiency but that it yielded zero results. SPARQL queries are processed from top to bottom. When you start with the OPTIONAL, the OPTIONAL has no effect. As a rule of thumb, always put the OPTIONAL triples after the non-OPTIONAL triples.

Ah! Thanks. I kinda always thought they were declarative like SQL. Anyways qlever is really great and I need to get better at sparql


ZFS support in rc and opnsense-importer (from Smart-Soft)

Implementation of ZFS support in Opensense
It is assumed that Opensense root is mounted on a ZFS pool with a random name in
the “root” volume (i.e. "<some_name>"/root). Later any other ZFS filesystems can be mounted in the usual way.
It is assumed that ZFS root does not have fstab entry, same as in FreeBSD system.
Scanning all pools present in the running system is performed in the importer. If ZFS pool
uses the corresponding partition (i.e. - /dev/ada0s1a or /dev/ada0p3 for example) and contains “root” volume – this volume is mounted and then the importer works as usual. Pool is exported before exiting.

We have ZFS support not so long. About two months in production.

Only last five commits are discarded by my request, all commits from yesterday. I works with latest revisions of rc and opnsense-importer files.

It's all fine and pretty sure it works, but listen, we can't forcefully load the ZFS module on every box. The former code tried to avoid this and it looks like you just trade one implementation for the other which is why I said no.

@fichtner ,  what about bsdinstaller with zfs support?

https://github.com/opnsense/bsdinstaller/issues/11

We can make pull-request to bsdinstaller, if you are interested.

Sure, although I have to say aligning with FreeBSD is a main design goal. This is important for opnsense-bootstrap capabilities.


improvement: add function to join result-values & remove house-number-validation

thank you for this great extension!
this pull request adds the function to join the result fields.
In the most cases (for my customers) the street and the house-number needs to be in one field.
the second street line is the field for information like "c/o" or a special house-number if the main-address is like a campus.
So with this PR it is possible to have a configuration like this: (shortend)
<type name="Vendic\HyvaCheckoutGoogleAddressAutocomplete\ViewModel\FieldMapping">
        <arguments>
            <argument name="fieldMapping" xsi:type="array">
                <item name="route+street_number" xsi:type="string">street.0</item>
                <item name="subpremise" xsi:type="string">street.1</item>
            </argument>
        </arguments>
    </type>

This will lead into the german street/house-number format.
But you also can flip this both for the opposite order.
in addition: i added a array_filter to the mapping-model to make sure that it is possible to pass null-values to remove specific mappings:
<type name="Vendic\HyvaCheckoutGoogleAddressAutocomplete\ViewModel\FieldMapping">
      <arguments>
          <argument name="fieldMapping" xsi:type="array">
              <item name="street" xsi:type="null" />
          </argument>
      </arguments>
  </type>

Hello @andrei-lisovski
i've updated this PR.
Got the issue, that the street.1 field got still validated. changed to code, so that the field got only validated, if the module is configured to place the street-number into on of the fields.
would love to see this got merged!


Broken Javascript Codegens for Multipart requests.

Describe the bug/problem
Fetch and Axios codegens generate wrong not working code for multipart form type requests.
Expected behavior
Correct Code is generated for any type of request.

since #286 was closed.
I'll continue the discussion here.
I can easily fix the nodejs codegen.
The plain client-side js one is a bit tricky.
Since js runs on the browser it doesn't have access to the filesystem so it can read the files from filepaths.
I checked out how Postman and insomnia both generate it and both are wrong.
Where insomnia is simply wrong(won't work) and Postman has a bug.
Insomnia one:
const form = new FormData();
form.append("text", "some text");
form.append("file1", "/home/weeb/Wallpapers_repo/terminator.jpg");
form.append("file2", "/home/weeb/Wallpapers_repo/Mocha.png");

const options = {
  method: 'POST',
  headers: {
    'Content-Type': 'multipart/form-data; boundary=---011000010111000001101001',
    'User-Agent': 'insomnia/2023.5.8'
  }
};

options.body = form;

fetch('https://api.apidash.dev/io/img', options)
  .then(response => response.json())
  .then(response => console.log(response))
  .catch(err => console.error(err));

Here file1 and file2 don't work as "files" instead just plain strings. so the server will just receive strings
form.append("file1", "/home/weeb/Wallpapers_repo/terminator.jpg");
form.append("file2", "/home/weeb/Wallpapers_repo/Mocha.png");

Postman:
var formdata = new FormData();
formdata.append("text", "some text");
formdata.append("file", fileInput.files[0], "terminator.jpg");
formdata.append("file2", fileInput.files[0], "Mocha.png");

var requestOptions = {
  method: 'GET',
  body: formdata,
  redirect: 'follow'
};

fetch("https://api.apidash.dev/io/img", requestOptions)
  .then(response => response.text())
  .then(result => console.log(result))
  .catch(error => console.log('error', error));

Here as you can see both form fields have value of fileInput.files[0] when it should be fileInput.files[0], fileInput.files[1].
formdata.append("file", fileInput.files[0], "terminator.jpg");
formdata.append("file2", fileInput.files[0], "Mocha.png");

Also one more big thing in postman.
fileInput is never explained to the user.
A new user with very less experience is js would not know what fileInput is supposed to mean.
It's supposed to be a input element that is selected.
something like this
<input type="file" id="fileInput">

const fileInput = document.getElementById('fileInput');

An actual complete example of working client side JS fetch code would be this:
const fileInput = document.getElementById('fileInput'); // <input type="file" id="fileInput">
const uploadButton = document.getElementById('uploadButton'); // <button id="uploadButton">Upload</button>

uploadButton.addEventListener('click', () => {
  function buildDataList(fields) {
    const formdata = new FormData();
    for (const field of fields) {
      const name = field.name || '';
      const value = field.value || '';
      const type = field.type || 'text';
      let fileCounter = 0;

      if (type === 'text') {
        formdata.append(name, value);
      } else if (type === 'file') {
        formdata.append(name, fileInput.files[fileCounter], value);
        fileCounter++
      }
    }
    return formdata;
  }

  const payload = buildDataList([{ "name": "token", "value": "xyz", "type": "text" }, { "name": "imfile", "value": "/home/weeb/screenshots/2023-12-27_14:21:15.png", "type": "file" }]);
  const url = 'https://api.apidash.dev/io/img';

  const options = {
    method: 'POST',
    body: payload
  };

  fetch(url, options)
    .then(res => {
      console.log(res.status);
      return res.json()
    })
    .then(body => {
      console.log(body);
    })
    .catch(err => {
      console.error(`error:${err}`);
    });
});

This has code that should be easy to understand for beginners.

quoting discord chats:

Sure you can open a new issue. I understand your query. The issue with client side js is that we do not have access to file system. We can  assume  fileInput is available in html and just add a comment with a link to the github discussion with more detailed steps on integrating the code.

I think something like this should work fine?
// refer to <insert some link>
function buildDataList(fields) {
  const formdata = new FormData();
  for (const field of fields) {
    const name = field.name || '';
    const value = field.value || '';
    const type = field.type || 'text';
    let fileCounter = 0;

    if (type === 'text') {
      formdata.append(name, value);
    } else if (type === 'file') {
      formdata.append(name, fileInput.files[fileCounter], value);
      fileCounter++
    }
  }
  return formdata;
}

const payload = buildDataList([{ "name": "token", "value": "xyz", "type": "text" }, { "name": "imfile", "value": "/home/weeb/screenshots/2023-12-27_14:21:15.png", "type": "file" }]);
const url = 'https://api.apidash.dev/io/img';

const options = {
  method: 'POST',
  body: payload
};

fetch(url, options)
  .then(res => {
    console.log(res.status);
    return res.json()
  })
  .then(body => {
    console.log(body);
  })
  .catch(err => {
    console.error(`error:${err}`);
  });

The above looks good @Tanish2002 if it works with the full html + js template provided in the integration link (you can post a template in this thread for us to try out and review).
Also, I am thinking it would be much cleaner if we separate nodejs & js codegens as now significant differences are cropping up.

@animator, Hmm from what I've changed for now(currently working) I don't think we need to segregate nodejs and js versions.
I'll open a PR first and if you think it's better we segregate them then I can do it sure.
Furthermore, Here is the requested complete example

Complete example HTML + Javascript
<!DOCTYPE html>

   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>File Uploader</title>

Simple File Uploader

   <input type="file" id="fileInput">
   <button id="uploadButton">Upload</button>

The Actual Generated code.
// refer to <insert some link> for details regarding integration.

function buildDataList(fields) {
  const formdata = new FormData();
  for (const field of fields) {
    const name = field.name || '';
    const value = field.value || '';
    const type = field.type || 'text';
    let fileCounter = 0;

    if (type === 'text') {
      formdata.append(name, value);
    } else if (type === 'file') {
      formdata.append(name, fileInput.files[fileCounter], value);
      fileCounter++
    }
  }
  return formdata;
}

const payload = buildDataList([{ "name": "token", "value": "xyz", "type": "text" }, { "name": "imfile", "value": "/path/to/a/file", "type": "file" }]);
const url = 'https://api.apidash.dev/io/img';

const options = {
  method: 'POST',
  body: payload
};

fetch(url, options)
  .then(res => {
    console.log(res.status);
    return res.json()
  })
  .then(body => {
    console.log(body);
  })
  .catch(err => {
    console.error(`error:${err}`);
  });

Sounds good 👍
Thanks for the example.

Also one more thing @Tanish2002 as you are refactoring the js codegens.
Please get rid of the buildDataList part that was included earlier to construct the multipart formdata as it is very crude.
function buildDataList(fields) {
  const formdata = new FormData();
  for (const field of fields) {
    const name = field.name || '';
    const value = field.value || '';
    const type = field.type || 'text';
    let fileCounter = 0;

    if (type === 'text') {
      formdata.append(name, value);
    } else if (type === 'file') {
      formdata.append(name, fileInput.files[fileCounter], value);
      fileCounter++
    }
  }
  return formdata;
}

const payload = buildDataList([{ "name": "token", "value": "xyz", "type": "text" }, { "name": "imfile", "value": "/home/weeb/screenshots/2023-12-27_14:21:15.png", "type": "file" }]);

Also, the [{ "name": "token", "value": "xyz", "type": "text" }, { "name": "imfile", "value": "/home/weeb/screenshots/2023-12-27_14:21:15.png", "type": "file" }] being passed is an internal json list of form model which should not have been exposed in the first place.

I changed the way fetch codegen worked.
I removed the buildDataList functions since I believe it was redundant, and didn't provide any actual value to the code generated.
I've refactored the codegen to look more sleek and simple. Please give your thoughts if I should continue with this or discard it.

JS Fetch Codegen
// refer https://github.com/foss42/apidash/issues/293#issuecomment-1994927844 for integration

const payload = new FormData();
payload.append("token", "xyz")
payload.append("imfile", fileInput.files[0])
payload.append("more files", fileInput.files[1])

const url = 'https://api.apidash.dev/io/img?size=2&len=3';

const options = {
  method: 'POST',
  headers: {
    "User-Agent": "Test Agent",
    "Keep-Alive": "true"
  },
  body: payload
};

fetch(url, options)
  .then(res => {
    console.log(res.status);
    return res.text()
  })
  .then(body => {
    console.log(body);
  })
  .catch(err => {
    console.error(`error:${err}`);
  });

NodeJS Fetch Codegen
import fetch from 'node-fetch'
import { fileFromSync, FormData } from 'node-fetch'

const payload = new FormData();
payload.append("token", "xyz")
payload.append("imfile", fileFromSync("/path/to/file.jpg"))
payload.append("more files", fileFromSync("/path/to/file.png"))

const url = 'https://api.apidash.dev/io/img?size=2&len=3';

const options = {
  method: 'POST',
  headers: {
    "User-Agent": "Test Agent",
    "Keep-Alive": "true"
  },
  body: payload
};

fetch(url, options)
  .then(res => {
    console.log(res.status);
    return res.text()
  })
  .then(body => {
    console.log(body);
  })
  .catch(err => {
    console.error(`error:${err}`);
  });

If you agree with the changes, then I can edit https://github.com/foss42/apidash/issues/293#issuecomment-1995208098 accordingly

Also one more thing @Tanish2002 as you are refactoring the js codegens. Please get rid of the buildDataList part that was included earlier to construct the multipart formdata as it is very crude.
function buildDataList(fields) {
  const formdata = new FormData();
  for (const field of fields) {
    const name = field.name || '';
    const value = field.value || '';
    const type = field.type || 'text';
    let fileCounter = 0;

    if (type === 'text') {
      formdata.append(name, value);
    } else if (type === 'file') {
      formdata.append(name, fileInput.files[fileCounter], value);
      fileCounter++
    }
  }
  return formdata;
}

const payload = buildDataList([{ "name": "token", "value": "xyz", "type": "text" }, { "name": "imfile", "value": "/home/weeb/screenshots/2023-12-27_14:21:15.png", "type": "file" }]);

Also, the [{ "name": "token", "value": "xyz", "type": "text" }, { "name": "imfile", "value": "/home/weeb/screenshots/2023-12-27_14:21:15.png", "type": "file" }] being passed is an internal json list of form model which should not have been exposed in the first place.

Sure I already did that, will go ahead with this now!

What a coincidence @Tanish2002 🙀

@animator Created a pr as well updated the comment

As per our discussion above, I ran the file input code. It works perfectly, but I find one issue with our current approach.
Usually if a form takes an input file usually it is a single file (like select to upload Id proof, select to upload address proof).
Currently we are allowing users to select multiple files from a single file input button and assigning fields in the sequence of file (0 ,1, 2 ...) selected by the user:
        payload.append("imfile", fileInput.files[0])
        payload.append("more files", fileInput.files[1])

This is a bit ambiguous as the end user does not know that the sequence of file selection is important. Usually multiple file input is used whenever a bulk operation has to be performed on the files and the sequence of file selection is not important.
So, I recommend adding distinct single file input for each field and we should document the same.
So it should be - fileInput1, fileInput2 and so on ....

So, I recommend adding distinct single file input for each field and we should document the same. So it should be - fileInput1, fileInput2 and so on ....

Ok so from what I understand I simply have to change the codegen to look like this:
payload.append("imfile", fileInput1.files[0])
payload.append("more files", fileInput2.files[0])

where each fileInput(num) is a input tag in html document. so something like this:
<input type="file" id="fileInput1">
<input type="file" id="fileInput2">

const fileInput1 = document.getElementById('fileInput1');
const fileInput2 = document.getElementById('fileInput2');

yup @Tanish2002

Ok I'll make the required changes and update the comment as well

This comment is supposed to be documentation for axios client side integration.

Complete example HTML + Javascript (Axios)
<!DOCTYPE html>

   <meta charset="UTF-8">
   <meta name="viewport" content="width=device-width, initial-scale=1.0">
   <title>File Uploader</title>

Simple File Uploader

   <input type="file" id="fileInput1">
   <input type="file" id="fileInput2">
   <button id="uploadButton">Upload</button>

The Actual Generated Axios(JS) code.
// refer to <insert some link> for details regarding integration.

const config = {
  url: 'https://api.apidash.dev/io/img',
  method: 'post',
  headers: {
    "Content-Type": "multipart/form-data"
  },
  data: {
    "token": "xyz",
    "imfile": fileInput1.files[0],
    "more files": fileInput2.files[0]
  }
};

axios(config)
  .then(res => {
    console.log(res.status);
    console.log(res.data);
  })
  .catch(err => {
    console.log(err);
  });


Not sure if this isn't an issue with ibkr, can authenticate but not access account

Describe the bug
Ibeam authenticates and remains authenticated as logs below show (some fields removed)
2024-09-09 19:51:21,360|I| AUTHENTICATED Status(running=True, session=True, connected=True, authenticated=True, competing=False, collision=False, session_id='XXXXXXXX', server_name='YYYY', server_version='Build 10.30.1l, Aug 27, 2024 6:01:26 PM', expires=598993)
2024-09-09 19:51:21,360|I| Gateway running and authenticated, session id: XXXXXXXX, server name: YYYY
However when visiting https://<IP_ADDRESS>:5000/demo#/  the positions demo is displayed but it is empty, the headers are there but none of my open trades are listed. I currently have one open trade and if I run IB gateway manually in a virtual machine, then in the positions demo on that virtual machine I can see the trade.
When ibeam is connected I can retrieve market data using ibind but not access any details about my account.
Expected behavior
To see my open trade listed under the positions demo
Environment
Docker Image: voyz/ibeam@sha256:79b40a57c91a2e8ab6035d89686602fb217b47a2227e8dd999368ff7484e4f0d
Additional context
I only have a paper trading account, but my account does work when I try the standalone ib gateway in a virtual machine

Thanks for the quick response...
Both the ibeam docker instance and the virtual machine I tested the standalone IB gateway with were running on my linux desktop PC in the UK (if that makes a difference).
I'll report this to IBKR later and see if I get anywhere, thanks!


[Navigation Animation] You cannot access the NavBackStackEntry's ViewModels after the NavBackStackEntry is destroyed.

Description
If you have animations disabled on the device, have an AnimatedNavHost inside of another AnimatedNavHost, and that second AnimatedNavHost is inside of a Scaffold, and you attempt to navigate back with the back button, the exception from the title occurs.  The "steps to reproduce" section has a list of requirements needed to reproduce this crash, and I have also created a minimum project (<80 lines) that will reproduce it. https://github.com/jasonctoms/NavigationAnimationCrash
I use these nested nav hosts to do navigation inside of a scaffold with a shared TopBar.  The steps to reproduce here seem a little insane, but this crash occurs every time in automated tests.
In the sample project, you will notice that the behavior when closing the modal screen is different when you use the back button vs calling the same callback with a button (even when using a BackHandler composable).
Steps to reproduce

Disable animations in Accessibility Settings
Have an AnimatedNavHost inside of Scaffold, with all of that inside of another AnimatedNavHost (image the second NavHost is part of a modal wizard to create a new item, for example)
Pass a lambda down from the main NavHost that will close the inner NavHost when pressing back.
Navigate to a screen in the inner NavHost
Use the back button on the device (or back gesture) to close the inner NavHost

Expected behavior
The inner screen closes and you are back at your initial destination.  You can see this happen, but then there is an immediate crash.
Additional context
This does not happen if you remove the Scaffold or enable animations on the device.
See https://github.com/jasonctoms/NavigationAnimationCrash for a small project where this is reproduced (made from New Activity template with compose, with just accompanist navigation added as a dependency)

I have the same issue too

I am facing the same problem.
Versions what I am using accompanist 0.27.1, lifecycle v2.5.1 and composeBom 2022.11.00 (Compose 1.3.1) on Android 13. In previous version I don't have this issue. I can reproduce it when I in click on navigation Up button very fast after navigating to some screen (probably when animation is running yet.)
Do you have any workaround or solution?

i have the same issue for months already

Same here, I'm on latest alphas:

compose - 1.4.0-alpha03
accompanist - 0.29.0-alpha

On non-animated compose navigation everything works as expected.

When you nest two NavHost the way you have done here, they are completely independent and not aware of one another.   So this crash is caused because your are popping the NavBackStackEntry and destroying the lifecycle that is the host of your inner NavHost, but the Scaffold has not yet been disposed, so it is likely attempting to recompose again with an already DESTROYED Lifecycle.
Does the problem still occur if you are not using a Modal sheet? I would guess that intercepting back with a BackHandler() might mean that it is not getting the dismiss signal it might be expecting so it won't get disposed when expected.
Not sure there are any signals available for Navigation that would make this work as implemented. The destination had its entry popped and its Lifecycle is correctly DESTROYED. Trying to compose another NavHost after that will crash. Even if we added a blocker to avoid the inner NavHost recomposing when DESTROYED, the UI would likely be thrown away too quick ended up in a blank before the new destination came back.
Popping both of the NavControllers at the same time might be enough of a workaround to avoid the crash? The inner NavController would have an empty  back stack when it gets recomposed and might just no-op while the outer NavHost returns to the screen.

I'm having the same problem but in my case the crash occurs when the back button of a modal screen is clicked in fast succession, so popBackStack() is probably called twice or more. I have the following setup:
AnimatedNavHost
  - MainScreen
    - Scaffold
      - AnimatedNavHost
        - [Screens with shared bottom navigation]
  - ModalScreen
    - Scaffold
      - [Content]

What is the strategy to prevent multiple popBackStack() calls? Just disable the back button (or any button that calls popBackStack()) after the first click?

I created two extension functions on NavController which ensure that I don't navigate back beyond a certain point. It seems to have fixed my crashes.
/**
 * Calls [NavController.popBackStack] unless there is no previous back stack entry which means
 * we're already at the root entry.
 */
fun NavController.popToRootAtMost() {
    if (previousBackStackEntry == null) return
    popBackStack()
}

/**
 * Calls [NavController.popBackStack] if the current route is [route], else does nothing.
 */
fun NavController.popToAncestorOf(route: String) {
    if (currentDestination?.route != route) return
    popBackStack()
}


Vue3 Migration tool adds incorrect annotation, blocking app from loading

Setup

Rancher version: 2.10.0

Describe the bug

Using the migration tool will update the extensions package.json annotations
However it uses the wrong value, which means the dashboard will ignore it and assume the extension is not compatible with vue3 world

Adds catalog.cattle.io/ui-extension-version
Should add catalog.cattle.io/ui-extensions-version
See creators/extension/migrate/tasks/packageUpdates.js

To Reproduce

create a 2.9 ext
run the migration tool (see https://extensions.rancher.io/extensions/next/rancher-2.10-support#how-to-proceed-with-your-extension-update for details)

Result

pkg//package.json contains incorrect annotation catalog.cattle.io/ui-extension-version

Expected Result

pkg//package.json contains incorrect annotation catalog.cattle.io/ui-extensions-version

updated milestone because this need to go into master


Automated Package Upgrade

:tada: This PR is included in version 25.5.40 :tada:
The release is available on:

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


How to add new docs which is not in the list?

I want the docs of Flask. How can I add it?

It's just a wrapper app for devdogs.io. I would recommend you to visit http://devdogs.io


Cleanup makefile

Remove unused Make targets.

Coverage remained the same at 34.654% when pulling e6e8c34fcf0ecf5aa9b839c797fece4b6440af3f on TS_cleanup_makefile into 45452ca4a65bb509260ef4a6e914c7c49c0f548d on master.

Is this not used when building new tags?

@cpacia No, that is in deploy.sh in the current master. PR #1133 makes deploy.sh use the existing build.sh script. In either case, the Makefile targets are not used. I'm trying to remove the Docker ones as well and the Makefile will just be protos.


Add schema migration init container [K8SSAND-625]

This PR requires Reaper PR 1096 to be merged and released first.
Fixes #56
This change adds an init container that will start Reaper in schema migration only mode, allowing for it to pass without probes that could trigger a restart mid-migration.

e2e tests are fixed and things work as expected.
We'll have to wait until a new Docker tag is released for Reaper before merging the PR, but it would be good to get an approval ASAP so that we can get this into 1.3.


Simplify pattern for Include around collections/references

Currently you can only use ThenInclude after landing on a collection nav but you can't use it after landing on a reference in the previous Include call. This is super hard to describe/document... and that's a good sign it will be confusing.
Historically, trying to use overload resolution to detect collection/reference has never worked. So the proposal is to do the same Reference/Collection named pairs of methods we use elsewhere in the stack:
query.IncludeCollection(blog => blog.Posts).ThenIncludeReference(post => post.Author)...

We would still allow the dotted syntax but it wouldn't be the primary API we push folks too.
When discussing this we should also consider using the Reference/Collection names in the relationship API (rather than One/Many).
Once decided on this we need to add API docs. I removed them for the moment because the current pattern is hard to describe and if we are going to change it I don't want to waste time working out how to word it :smile:

Historically, trying to use overload resolution to detect collection/reference has never worked
We actually had it working in this case. We just removed the extra overload because it seemed redundant to me.
Reference/Collection named pairs of methods we use elsewhere in the stack
It is not nice in this case it is not really needed.

We discussed this and we will try IncludeCollection/IncludeReference (or is it IncludeMany/IncludeOne for consistency?) because that accounts for the corner cases in which the CLR type does not matche the conceptual cardinality of the navigation property. We should consider doing #1481 at once since we are touching these methods and it might get harder to do it later.

I would like to bring this back to discussion. The more I think about it the more I believe this is going to complicate much more than simplify things.

I confirmed that this won't be necessary and that all we need to do is bring back the following "reference" overload of ThenInclude() which was removed in #1491:
public static IIncludableQueryable<TEntity, TProperty> ThenInclude<TEntity, TPreviousProperty, TProperty>(
    this IIncludableQueryable<TEntity, TPreviousProperty> source,
    Expression<Func<TPreviousProperty, TProperty>> navigationPropertyPath)
    where TEntity : class
{

This is in addition to the existing "collection" overload:
public static IIncludableQueryable<TEntity, TProperty> ThenInclude<TEntity, TPreviousProperty, TProperty>(
    this IIncludableQueryable<TEntity, ICollection<TPreviousProperty>> source,
    Expression<Func<TPreviousProperty, TProperty>> navigationPropertyPath)
    where TEntity : class
{

I confirmed that the latter handles different collection types correctly because as part of #1491 we already made IIncludableQueryable<TEntity, TProperty> covariant with respect to TProperty. This means that then the type of the this argument IIncludableQueryable<TEntity, ICollection<TPreviousProperty>> will match any IIncludableQueryable<TEntity, SomeCollection<TPreviousProperty>> for any SomeCollection<T> implements ICollection<T>.
I also played with the corner case in which an entity type implements ICollection and it seem things work pretty well:

The compiler won't fail to resolve an overload for this case. Instead it will automatically select the correct overload for the lambda expression passed, i.e. it is possible for the lambda to refer to either properties directly on the entity type or on the collection's element type.
If there is an ambiguity, e.g. the same property name could refer to a property directly on type of the entity or a property of the element type of the collection, the compiler will give preference to the "reference" overload.
It is possible to explicitly switch to the collection overload by introducing a simple cast in the lambda, which should be handy if in the future we want to enable entity types that are at the same time collections of other types. E.g. given a ProductPresentation entity type that has a Description property and a Product entity that has a Description property and also implements ICollection it is possible to get to ProductPresentation.Description like this:

ctx.Customers
    .Include(c => c.Orders)
    .ThenInclude(o => o.OrderLines)
    .ThenInclude(ol => (ICollection<ProductPresentation>)ol.Product)
    .ThenInclude(pp => pp.Description);

Intellisense inside ThenInclude() offers the union of all the possible lambda expressions that would make sense for both the reference and the collection overload.

Sweet, yeah the implementing ICollection is a corner case so needing to a bit of casting etc. is fine I think :smile:.
This work item was about the more general need to simplify the pattern... so it can now just track the pattern listed above.
We should reconsider this when we get to the EntityEntry API for navigation properties... I think we should keep the Collection/Reference API we had in EF6 there... but we should at least have the discussion.

BTW we should verify that this correctly resolves on non-Roslyn compilers too

I verified on both.

Fixed with d271361c2b3bf9d7f3cfdf1faf8a40f9e19eae04


Is there a way to automatically exclude files without docstring?

Hello, is it possible to automatically exclude Python files without docstrings in it?

Hello! Yes, there's a way if you use the automatic reference recipe, though note that it will make collection happen twice: once to filter out modules without any docstrings, and a second time when actually rendering modules to HTML.
In your script that generates the reference pages, collect data for your package and check if each module has any docstrings in it. Something like this (not tested):
from pathlib import Path

import griffe
import mkdocs_gen_files

nav = mkdocs_gen_files.Nav()
data = griffe.load("your_package")
for path in sorted(Path("src").rglob("*.py")):
    module_path = path.relative_to("src").with_suffix("")
    doc_path = path.relative_to("src").with_suffix(".md")
    full_doc_path = Path("reference", doc_path)

    mod_parts =module_path.parts[1:])
    mod_parts[-1] = mod_parts[-1][:-3]  # remove .py
    if not data[mod_parts].has_docstrings:
        continue

    # rest of the recipe...


HighlightIcons: add highlightIcons to iconService  (4.3)

Pull Request Test Coverage Report for Build<PHONE_NUMBER>5
Details

14 of 14 (100.0%)  changed or added relevant lines in 3 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 99.66%

Totals

Change from base Build<PHONE_NUMBER>2:
0.0%

Covered Lines:
13529

Relevant Lines:
13531

💛  - Coveralls


Multiple Sessions / High Consume CPU and RAM

Hi Again,
I just realize, if i have started one session and actively using than if i tried to create second or third sessions they are not starting always dropping to error and than i realize one thing more its consuming really high cpu and memory usage as you can see below screenshot attachments.

Also you can check log files which i added here.
_WAHA_logs (1).txt
Best Regards,
SFN
------- Update; I wouldn't like create for the same issue second part but you can check from here
When i create first session, there is not problem it's working but when i try to create second session it's not working usually

One little question  ❓ If i would like to use for 100 session or more what's your idea for the same docker with multiple session RAM or CPU requirements ?
Thank you from now,
SFN

I'll look at venom engine and why it doesn't start more than one session!
As for resources - yesterday I've made benchmark for  multiple sessions - https://waha.devlike.pro/docs/help/faq/
It consumes about 30% CPU and 400MB for the first account when it LOGGED IN.
For 10 accounts the resources are ~270% CPU and 1.4GB memory. Just because of the nature of all web-based engines - they run real Chrome instance to prevent blocking.

Dear Santa Claus, I wish all issues look alike @sfnemis's issues - with logs and detail information.

Hey @sfnemis, I was also experiencing similar issues with Chromium-based solutions. This resulted in heavy downtimes and multiple failure issues. So I took the task into my own hands and designed my own API in Golang. This one doesn't need chrome or any other browser to function.
If you want to know more, here is a deployed demo.
As of performance, even running 10+ simultaneous connections on a 2GiB & 2 Core CPU, only 50Mb was used.

Also as for storing sessions, I am using the Postgres database.
Currently, I don't have any plans to open-source the API. Though I would be happy to host the API on your own server :)
Regards,
@Manjit2003

@Manjit2003
I removed your comment as off topic.
If you want to help with CPU and Memory for THIS project - please open a PR! It's fine if PR will add go-language in the project
I've already told @sfnemis about your project before.

Hi! Added NOWEB engine in the latest release! https://waha.devlike.pro/docs/how-to/engines/#noweb


Bump sourceror dependency to v0.12.2

Bump sourceror dependency to v0.12

As we discussed here this is a PR to bump sourceror to v0.12.

I'm developin a refactor.extract.function code action that works with sourceror v0.12.
We specify sourceror version via a tag on its repo to ensure sourceror/lib_vendored is included and compilation in VSCode works.

Pass include_comments option to CodeMod.Ast.from/2

Use Sourceror.parse_string/1 wheninclude_comments: true option passed to CodeMod.Ast.from/2.
Add tests of CodeMod.Ast.from/2.

Sourceror library introduces problems with Mix.install and conflicts with sourceror versions used by client projects. If we want it we need it vendored like dialyxir and jason

Sourceror library introduces problems with Mix.install

@lukaszsamson Are you intending to remove {:sourceror, "0.11.2"} from the language_server mix file? https://github.com/elixir-lsp/elixir-ls/blob/master/apps/language_server/mix.exs#L38
When making this PR I found I needed to use tag to ensure lib_vendrored is included. Does that address the Mix.install issue you mentioned?
      # use tag to ensure sourceror/lib_vendored is included
      {:sourceror, github: "doorgan/sourceror", tag: "v0.12.2"},

and conflicts with sourceror versions used by client projects. If we want it we need it vendored like dialyxir and jason

Which client projects have the conflicts?

Are you intending to remove

Yes. It's not really used anywhere

When making this PR I found I needed to use tag to ensure lib_vendrored is included. Does that address the Mix.install issue you mentioned?

No idea TBH, but most likely no. A lot of people reported problems with build related to that dependency. Just search for sourceror in issues here/vsdode/forum/slack. And we need a proper vendoring. OTP has no code sandboxing. Whenever a client project has it as a dependency in some other version it will override modules from our dependencies.


Bumped sgx_tstd to v1.0.9

batch update tomorrow: https://github.com/mesalock-linux/byteorder-sgx/pull/2#issuecomment-529783317