App UI Stalled when frequently sending messages through platform channels

Details
My App is a cloud based spreadsheet app and at a time there can be multiple collaborators working on a document in web and mobile.
Edits made by collaborator are delivered to the mobile as responses to our inhouse messaging framework library (written in java/swift). Currently i've to use Platform Channels to send these responses to Dart for updating data model and subsequently the ui.
Problem:

The number of messages received in the messaging framework are huge in number, in cases where a collaborator performs actions repeatedly or multiple collaborators perform actions in short amount of time. In both these cases, the platform channel gets overloaded with messages. While these messages are delivered if the user performs gestures (like scrolling the grid), it burdens the ui isolate further.
Parsing some responses (like image) delivered and decoded on the ui isolate takes lot of ms and stalls the App Ui.

Target Platform: Android
Target OS version/browser: Android 11
Devices:Pixel 3
cc: @gaaclarke

Is this lagginess on the sending device or just the receiving device?  Or both?
I once created a multiplayer protocol.  In my case I opted to send the whole state of the game in compressed format repeatedly over UDP.  That way I didn't have to worry about dropped delta information and massive amounts of deltas didn't overload the game.  Video formats also have the concept of a frame made of delta data, or an "iframe" that contains the whole state of the world.  That's just some food for thought that maybe in certain circumstances you can use absolute data packages instead of delta data if you get spammed with deltas.
I think for the sending side this may be a good candidate for FFI Platform Channels since it would allow you to send your data without hitting the platform thread.  You could potentially do processing on a background isolate before sending the data.  The design doc doesn't however have a solution to help with the receiver unless you created a background isolate that synchronously polled the host platform for new messages which isn't the best.  I'll think about that one.

Can you post a reduced test case and/or a timeline trace of the issue please? The issue performance template has the instructions on how to achieve this.
Specifically, I am not sure if its the parsing, platform channel overheads, or just the copies. Processing platform channel messages should not stall UI after the recent work on event loop task prioritization. So I don't think we have enough information just yet to devise solutions.
Can you also elaborate on what you mean by parsing of images on the UI isolate? Byte data can be sent directly to the engine for decompression into image handles without any processing on the UI isolates. If the UI isolate is doing this, there might need to be a reconsideration of the application architecture.

Without additional information, we are unfortunately not sure how to resolve this issue.
We are therefore reluctantly going to close this bug for now.
Please don't hesitate to comment on the bug if you have any more information for us; we will reopen it right away!
Thanks for your contribution.
Could everyone who still has this problem please file a new issue with the exact description of what happens, logs, and the output of flutter doctor -v.
All system setups can be slightly different, so it's always better to open new issues and reference related issues.

FYI this issue may be ameliorated by Background Platform Channels (https://github.com/flutter/flutter/issues/91635).  That will remove work from the platform thread, but won't change ui thread usage, so it depends on where the bottleneck is.


Missing settings?

Hey seems like the templates folder is missing?

Doh! … I indeed forgot committing.  Thank you for reporting!
Feel free to download current version from tag 1.1.1 or from master branch. Sorry for inconvenience.

… double doh! … I made a typo in my commit message (https://github.com/Vierbeuter/craft-footnotes/commit/706b7f11bde1b6bd48c671a21935282ab7c3f1ef). It should have been "#2" instead of "#1". So don't wonder. ;)


Add package prefix to build CI

Dependent on https://github.com/adafruit/workflows-circuitpython-libs/pull/24

@tekktrik I'd think this is also needed for neopixel and circuitpython_typing ?

neopixel is safe since it's a module file, and circuitpython_typing doesn't actually need .mpy files created, so we should be all set I think!

Sounds good if they are not affected! Would it beb e good for consistency, in case the libraries changed and the prefix started to be needed? Or would that not happen?
Not a big deal.


🍕 package.json fixups

:+1: let me know what you think....
Thanks! :cactus: :cake:

A description much more in line! +1

rebased on top of master, let me know if there is anything else

@azakus can you make sure you're happy with these changes?

LGTM

all set @ebidel, also I took the description from the www so we should update the copy there also

LGTM x 2

:pizza: :pizza: :pizza: :pizza: :pizza: :pizza: :pizza: :pizza: :pizza: :pizza:  all around


error raise AttributeError("'{}' object has no attribute '{}'".format( AttributeError: 'ImageEncoderViT' object has no attribute 'last_attn'

When I tried to run your demo, it threw this error. Could you give me some advice? Thank you!
Using cache found in /root/.cache/torch/hub/facebookresearch_dino_main
Traceback (most recent call last):
  File "trident_demo.py", line 97, in <module>
    trident_demo(img_path, name_list)
  File "trident_demo.py", line 90, in trident_demo
    seg_pred, seg_logits = model.predict(img_tensor, data_samples=None, debug_img_path=img_path)  # [1, H, W]
  File "/mmsegmentation/Trident/trident.py", line 248, in predict
    seg_logits = self.get_trident_seg(inputs, img_path, batch_img_metas)
  File "/opt/conda/lib/python3.8/site-packages/torch/autograd/grad_mode.py", line 27, in decorate_context
    return func(*args, **kwargs)
  File "/mmsegmentation/Trident/trident.py", line 154, in get_trident_seg
    sam_enc_feats, sam_attn, sam_v, sam_valid_h, sam_valid_w = self.get_sam_feat(tmp_img, 16)
  File "/mmsegmentation/Trident/trident.py", line 121, in get_sam_feat
    sam_attn = self.sam_predictor.model.image_encoder.last_attn  # [1, 12, 64*64, 64*64]
  File "/opt/conda/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1185, in __getattr__
    raise AttributeError("'{}' object has no attribute '{}'".format(
AttributeError: 'ImageEncoderViT' object has no attribute 'last_attn'

I got another error when running the demo.  Could you give me some advice? 💔 I didn’t make any change to your code. Thx!
Traceback (most recent call last):
  File "trident_demo.py", line 97, in <module>
    trident_demo(img_path, name_list)
  File "trident_demo.py", line 90, in trident_demo
    seg_pred, seg_logits = model.predict(img_tensor, data_samples=None, debug_img_path=img_path)  # [1, H, W]
  File "/mmsegmentation/Trident/trident.py", line 248, in predict
    seg_logits = self.get_trident_seg(inputs, img_path, batch_img_metas)
  File "/opt/conda/lib/python3.8/site-packages/torch/autograd/grad_mode.py", line 27, in decorate_context
    return func(*args, **kwargs)
  File "/mmsegmentation/Trident/trident.py", line 179, in get_trident_seg
    clip_features = self.clip.encode_image(img_batch.half(),external_feats=vfm_feats, beta=self.beta, gamma=self.gamma,
  File "/mmsegmentation/Trident/open_clip/model.py", line 266, in encode_image
    features = self.visual(image, external_feats, beta, gamma, **kwargs)
  File "/opt/conda/lib/python3.8/site-packages/torch/nn/modules/module.py", line 1110, in _call_impl
    return forward_call(*input, **kwargs)
  File "/mmsegmentation/Trident/open_clip/transformer.py", line 528, in forward
    x = self.guidance_attn(blk.attn, blk.ln_1, x, token_size=token_size, **kwargs)
  File "/mmsegmentation/Trident/open_clip/transformer.py", line 635, in guidance_attn
    attn_weights = self.get_sam_sim(sam_v, sam_attn, cos_fac, num_heads, ref_neg).type_as(v) # 1, num_heads, dst_h*dst_w, dst_h*dst_w
  File "/mmsegmentation/Trident/open_clip/transformer.py", line 653, in get_sam_sim
    sim_thresh = torch.where(sim_thresh > 0.9, 0.9, sim_thresh)
RuntimeError: expected scalar type double but found c10::Half


Fixes mostly links.

You made all links to [link](link) but that is redundant and you'd need to change two links when it needs to change and while it makes them clickable it would still be quite ugly in the rendered docs.
Could you change it to [InvenioRDM docs](link) instead? If you want, you can also fix #6 in this PR.

thanks!


CFP: Contributor Ladder

Cilium Feature Proposal
Is your feature request related to a problem?
No
Describe the feature you'd like
To help contributors onboard and grow in the project, it would be great to have a contributor ladder so it is more clear how to move from contributor to committer and maybe have some levels in between.
(Optional) Describe your proposed solution
TAG Contributor Strategy has a ladder that we could use as a template https://github.com/cncf/project-template/blob/main/CONTRIBUTOR_LADDER.md

Fixed in https://github.com/cilium/community/pull/1


Don't paste nodes as sibling of scene root

The new Paste As Sibling option could be used without selection, resulting in node being a sibling of viewport.
https://github.com/godotengine/godot/assets/2223172/3bc63710-398c-42b9-b97b-c8887e689d5a
This PR fixes that. Also fixes wrong node name in the action.
Another thing I noticed is that when pasting as sibling the new node will be always at the end of the list. I think it should be just below the used sibling.
EDIT:
Also fixes the menu option not working correctly.

Side note: That theme is awesome, where'd you find it?

It's Godot 2 theme (one of the default presets) with accent color shifted to red.

I reworked the PR to disable the option instead of defaulting to paste as child:

Thanks!


python312Packages.pyfwup: 0.5.0 -> 0.5.2

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for python312Packages.pyfwup is: Python FirmWare UPgrader
meta.homepage for python312Packages.pyfwup is: https://github.com/greatscottgadgets/pyfwup
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0.5.1 in filename of file in /nix/store/pg8v7ly63wk3b7zvm269yi2w6z7bcl8m-python3.12-pyfwup-0.5.1

Rebuild report (if merged into master) (click to expand)

5 total rebuild path(s)

5 package rebuild(s)

First fifty rebuilds by attrpath

python311Packages.greatfet
python311Packages.pyfwup
python312Packages.greatfet
python312Packages.pyfwup

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/pg8v7ly63wk3b7zvm269yi2w6z7bcl8m-python3.12-pyfwup-0.5.1 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A python312Packages.pyfwup https://github.com/r-ryantm/nixpkgs/archive/5eb64a46edee4f143e1335cb37d9b849ccf50041.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/5eb64a46edee4f143e1335cb37d9b849ccf50041#python312Packages.pyfwup

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/pg8v7ly63wk3b7zvm269yi2w6z7bcl8m-python3.12-pyfwup-0.5.1
ls -la /nix/store/pg8v7ly63wk3b7zvm269yi2w6z7bcl8m-python3.12-pyfwup-0.5.1/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

8 packages built:

python311Packages.greatfet
python311Packages.greatfet.dist
python311Packages.pyfwup
python311Packages.pyfwup.dist
python312Packages.greatfet
python312Packages.greatfet.dist
python312Packages.pyfwup
python312Packages.pyfwup.dist

Maintainer pings
cc @msanft for testing.

Result of nixpkgs-review pr 332596 run on x86_64-linux 1

8 packages built:

python311Packages.greatfet
python311Packages.greatfet.dist
python311Packages.pyfwup
python311Packages.pyfwup.dist
python312Packages.greatfet
python312Packages.greatfet.dist
python312Packages.pyfwup
python312Packages.pyfwup.dist

Automatic update generated by nixpkgs-update tools. This update was made based on information from passthru.updateScript.
meta.description for python312Packages.pyfwup is: Python FirmWare UPgrader
meta.homepage for python312Packages.pyfwup is: https://github.com/greatscottgadgets/pyfwup
Updates performed

Ran passthru.UpdateScript

To inspect upstream changes
Impact
Checks done

built on NixOS
The tests defined in passthru.tests, if any, passed
found 0.5.2 in filename of file in /nix/store/x629ccxn4smj8j5hbis5gzvn5wmhhmj6-python3.12-pyfwup-0.5.2

Rebuild report (if merged into master) (click to expand)

5 total rebuild path(s)

5 package rebuild(s)

First fifty rebuilds by attrpath

python311Packages.greatfet
python311Packages.pyfwup
python312Packages.greatfet
python312Packages.pyfwup

Instructions to test this update (click to expand)

Either download from Cachix:
nix-store -r /nix/store/x629ccxn4smj8j5hbis5gzvn5wmhhmj6-python3.12-pyfwup-0.5.2 \
  --option binary-caches 'https://cache.nixos.org/ https://nix-community.cachix.org/' \
  --option trusted-public-keys '
  nix-community.cachix.org-1:mB9FSh9qf2dCimDSUo8Zy7bkq5CX+/rkCWyvRCYg3Fs=
  cache.nixos.org-1:6NCHdD59X431o0gWypbMrAURkbJ16ZPMQFGspcDShjY=
  '

(The Cachix cache is only trusted for this store-path realization.)
For the Cachix download to work, your user must be in the trusted-users list or you can use sudo since root is effectively trusted.
Or, build yourself:
nix-build -A python312Packages.pyfwup https://github.com/r-ryantm/nixpkgs/archive/f8378d5909058a4b9389cc36cd2c43ef317425fd.tar.gz

Or:
nix build github:r-ryantm/nixpkgs/f8378d5909058a4b9389cc36cd2c43ef317425fd#python312Packages.pyfwup

After you've downloaded or built it, look at the files and if there are any, run the binaries:
ls -la /nix/store/x629ccxn4smj8j5hbis5gzvn5wmhhmj6-python3.12-pyfwup-0.5.2
ls -la /nix/store/x629ccxn4smj8j5hbis5gzvn5wmhhmj6-python3.12-pyfwup-0.5.2/bin

Pre-merge build results
We have automatically built all packages that will get rebuilt due to
this change.
This gives evidence on whether the upgrade will break dependent packages.
Note sometimes packages show up as failed to build independent of the
change, simply because they are already broken on the target branch.
Result of nixpkgs-review run on x86_64-linux 1

8 packages built:

python311Packages.greatfet
python311Packages.greatfet.dist
python311Packages.pyfwup
python311Packages.pyfwup.dist
python312Packages.greatfet
python312Packages.greatfet.dist
python312Packages.pyfwup
python312Packages.pyfwup.dist

Maintainer pings
cc @msanft for testing.

Add a :+1: reaction to pull requests you find important.


⚠ Processors has degraded performance

In fb4ee78, Processors ($STATUS_URL) experienced degraded performance:

HTTP code: 200
Response time: 106 ms

Resolved: Processors performance has improved in c2e4a2d.


chore: update kind version to v0.11.0

Signed-off-by: Anish Ramasekar<EMAIL_ADDRESS>
Reason for Change:

Requirements

[x] squashed commits
[x] included documentation
[x] added unit tests and e2e tests (if applicable).

Issue Fixed:

Does this change contain code from or inspired by another project?

[ ] Yes
[x] No

If "Yes," did you notify that project's maintainers and provide attribution?
Special Notes for Reviewers:

Codecov Report

Merging #573 (a6f44cb) into master (9654564) will not change coverage.
The diff coverage is n/a.

@@           Coverage Diff           @@
##           master     #573   +/-   ##
=======================================
  Coverage   63.66%   63.66%
=======================================
  Files           7        7
  Lines         589      589
=======================================
  Hits          375      375
  Misses        180      180
  Partials       34       34

/azp run pr-e2e-azure


[CurveLP][StakingRewards] Add ability to stake FIDU-USDC Curve LP tokens for GFI liquidity mining rewards (GIP-1)

What happened?
This PR updates the StakingRewards contract to allow users to stake FIDU-USDC Curve LP tokens for GFI liquidity mining rewards.
The current StakingReward contract only supports staking FIDU directly, so the contract simply calculates individual rewards based on the amount of FIDU staked. We can augment the StakingRewards contract to accept FIDU-USDC Curve LP tokens and calculate rewards based on the user’s Curve LP position. To do this, we calculate the exchange rate between the FIDU-USDC Curve LP token and FIDU to maintain the FIDU denomination.
This PR does not include the changes to the frontend to update the Goldfinch app interface; it only includes changes to the StakingRewards contract. Since this PR has already gotten fairly large, I'll put the frontend changes in a separate PR.
Relevant docs:

Proposal: https://gov.goldfinch.finance/t/gip-01-allow-fidu-usdc-curve-lp-positions-to-be-staked-for-gfi-liquidity-mining-rewards/734/4
Design doc: https://docs.google.com/document/d/135BKyPNPrUN0eurNsfLy0i0Y9UFgmGpoyYhowi8qdxg/edit#heading=h.jpy79w2llbf8

Why?
We want to incentivize users to provide liquidity on Curve to create a liquid secondary market for FIDU. To do this, Goldfinch will distribute GFI rewards to users who stake their FIDU-USDC Curve LP position on Goldfinch.
How has this been tested?
Updated StakingRewards unit tests
Reviewers
@landakram @blakewest

@landakram updated to address your comments, PTAL!

@landakram All of the functionality for the Curve feature should be in this PR now! PTAL

Closing this as it was merged in from a different PR


[WANT HELP] call contract get an error: Contract call reverted, reason: empty response

Call contract get an error: Contract call reverted, reason: empty response
But I'm sure I'm doing the right thing because I can get the right feedback on the blockchain browser

ref: https://github.com/graphprotocol/graph-node/issues/3306


Qubes client support

The plan is to provide a Qubes client, where the configuration may be stored in the QubesDB.
From the issue #3:
qubes: reading config file from QubesDB

qubesdb keys are capped at 3k bytes, xenstoredb at 4k: https://github.com/QubesOS/qubes-core-qubesdb/blob/master/include/qubesdb.h#L93
QRexec service that provides the configuration file from dom0 could be a viable, easy way
read-only block device using qvm-block a -p could work, but since it needs to be a block device that only works for storage backends that are backed by block devices (ie not file), and we have to pad to block size (512) - not nice

I just stumbled upon this comment from @cfcs (in #3): external packages on Qubes can define new VM types (with a template for volume_config - https://github.com/QubesOS/qubes-core-admin/blob/master/qubes/vm/dispvm.py#L55-L83 - by overriding the frontend-devoption we can hardcode the xen block dev id assigned to the volume; this gives us a mapping from petname to block dev id that we can load in the unikernel). This could be a way forward, with tooling to generate unikernel (aka qubes kernel) + vm type (block dev template etc) as an installable rpm. In practice though we can likely make do with the persistent rw and the non-persistent rw (swap) and using QRexec for the configs for most applications. We need to update mirage-kv-xen(or whatever that is called) to allow pointing to specific block ids for these two types of storage. Manifest could point to additional ids (xen id = 202 * 2**8 + minor id, with minor id 0 starting at xvda, xvdb being 1, etc).
I guess we recently talked about using a block device, and the above may be a path for distribution (since we didn't write down how such a configure the MirageVPN unikernel in QubesOS step is supposed to look)...

The link was unfortunately pointing to master branch and the file has since then changed. I did some digging, and this might be the state of the file at the time: https://github.com/QubesOS/qubes-core-admin/blob/94c675f7bb77f5e2a67bc11fbcb492c3ffe4fda0/qubes/vm/dispvm.py#L55-L83

The current state of mirage allows to target one of the root/private/volatile block devices with let block = block_of_xenstore_id "51712" and the id value is done via $202*2^8+minor$ as explained in the comment. If I understand the block configuration in mirage correctly, using block_of_file with any string will point to the first block (id=51712).
With the latest release of miage-block-xen (2.1.2), I can read from a tar file imported as the root or volatile volume (via qvm-volume import mirage-test:root hello.tar).
With the qubes-mirage-firewall repository and https://github.com/marmarek/qubes-builder-mirage there is an attempt to create an rpm file (the unikernel is embedded in a root disk and booted via multiboot with grub2) this sounds great as it allows booting the VM with the grub2-pvh kernel which is distributed with qubes and doesn't force the installation of a new kernel. However last time I looked into this, it is was buggy in the post-install script (and I haven't dug to much there). If this path is used the preferred block device would be the second one (private).
So to me, in the qubes context, it seems correct to target the private volume (minor=1), and use qvm-import to update the configuration (for example in a purpose-created tar file).

See https://github.com/robur-coop/qubes-miragevpn/ and let's track further issues there.


Run all the tests in strict mode

node --use_strict

Why was this closed?  How can I have run karma run in strict mode?  Do I really need to add "use strict" to every file in my project?

How can I have run karma run in strict mode?

What part of karma do you want to run in strict mode? The node part does not need strict mode the way it is written now.

Do I really need to add "use strict" to every file in my project?

Yes, or just use sth like babel which compiles to strict mode. The flag would have no effect on the tests as they are executed in the browser and not in node.


feat(lint/useAriaPropsSupportedByRole): add rule

Summary

Enforce that ARIA properties are valid for the roles that are supported by the element.

Porting eslint-plugin-jsx-a11y/role-supports-aria-props rule
https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/docs/rules/role-supports-aria-props.md
Issue:
Close #2613
Test Plan

eslint-plugin-jsx-a11y's test cases covered.
And several deprecated elements have been removed from the test cases.
https://github.com/jsx-eslint/eslint-plugin-jsx-a11y/blob/main/__tests__/src/rules/role-supports-aria-props-test.js

@Conaclos
Excuse me, may I ask you to check again?

@Conaclos

Looks good to me! Thanks for your contribution, and sorry for the delay!

No Problem, thanks to review & merge!


Header and Footer logic seems broken for Typst v0.12

The custom header and footer logic for the template code below in the wonderous book seems broken in Typst v0.12.
The warnings received are as below:

warning: locate with callback function is deprecated
warning: calling query with a location is deprecated

  // Configure page properties.
  set page(
    numbering: "1",

    // The header always contains the book title on odd pages and
    // the chapter title on even pages, unless the page is one
    // the starts a chapter (the chapter title is obvious then).
    header: locate(loc => {
      // Are we on an odd page?
      let i = counter(page).at(loc).first()
      if calc.odd(i) {
        return text(0.95em, smallcaps(title))
      }

      // Are we on a page that starts a chapter? (We also check
      // the previous page because some headings contain pagebreaks.)
      let all = query(heading, loc)
      if all.any(it => it.location().page() in (i - 1, i)) {
        return
      }

      // Find the heading of the section we are currently in.
      let before = query(selector(heading).before(loc), loc)
      if before != () {
        align(right, text(0.95em, smallcaps(before.last().body)))
      }
    }),
  )

The first part seems easy to replace:
    header: context {
      let i = counter(page).get().first()
      // Are we on a page other than the first?
      if calc.odd(i) {
        return text(0.95em, smallcaps(title))
      }

I am finding it harder to update the other two (i.e. chapter start, and finding heading section currently in. Appreciate if the lib.typ is updated to v0.12. Thank you.

We are in the process of updating the templates for Typst 0.12, but not yet completely done (see also the open PRs).

We are in the process of updating the templates for Typst 0.12, but not yet completely done (see also the open PRs).

I am grateful for the pointer, @laurmaedje. I was able to use @PgBiel's PR successfully to reproduce the old functionality.


Implement search, sort picker, favorite games, and sort by recency

also fix enum conventions
closes #51, #49, #42

Would it be possible to have the sort-by button in the same location, just smaller, when the side bar is too small? And maybe have it be the same button but with only the icon showing or something like that?


Home Assistant Autodiscovery

Hi there.
This PR adds option for setting auth info for MQTT broker (if no username is set, auth will not be set, so setups without auth should still work).
And more importantly, this PR also adds HASS auto discovery for creating a device in HA with sensors attached to it. There are many more sensors that could be added, but for now I just added those I find most useful:

The accumulated power sensor has the required attributes set, so it's ready to be added in HA's energy dashboard without further configuration or template sensors.
I added the new options in the sample appsettings.json as well as in the README.MD

Solves https://github.com/NicolaiPetri/wiser2mqtt/issues/3

Nice work. Merged.


DOC: Reorder arguments in shared fillna docstring

The docstring listed 'method' before 'value' which is not consistent
with the order of the arguments when calling the method.

thanks!


Consecutive page refreshes finally leads to data corruption and Connection Refused

Dear all, first of all i need to congratulate you on this wonderful library. I dont want to waste anyones time but I am desperate to find a solution. I can see that this topic is somehow similar to a previous one but I am confident that it is a valid case to be examined.
I am using an arduino Mega with an ethernet shield 2. The device is powered from USB cable directly connected to laptop. I have developed my own program and came across some issues that I couldnt explain. Finally i went back to the drawing board and conducted my tests with the Simple Authentication example as provided. I could replicate the issues with this example so it makes me think there is a bug somewhere in the library.
The bug is as follows: after consecutive refreshes the arduino starts sending less and less data and finally i get the message connection refused on the browser. The arduino seems to be stuck as it produces nothing. However it responds to pings Ok.
Here is some info on how to replicate the bug:
Arduino 1.8.13
Arduino Mega plus Ethernet Shield 2 featuring a W5500.
Example: Simple Authentication
Page to refresh: $IP ADDRESS$/login
Browser: Chrome and Firefox
Configuration settings: using either Ethernet or Ethernet2 library
Load the page and do about 200 refreshes. Refreshes should be done once the page is loaded. On every refresh the arduino should send 350 characters with the content
<form action='/login' method='POST'>To log in, please use : admin/password
User:<input type='text' name='USERNAME' placeholder='user name'>
Password:<input type='password' name='PASSWORD' placeholder='password'>
<input type='submit' name='SUBMIT' value='Submit'></form>
You also can go here
After 150-200 refreshes the arduino starts sending less and less characters. Please see provided log further down.
Also, if the refreshes are faster the arduino will also report corrupted data on its parsed received headers. Please see provided log further down.
Here is a perfect page refresh log that sends the full 350 character long web page:
13:03:10.270 -> [EWS] handleClient: New Client
13:03:10.304 -> [EWS] method:  GET
13:03:10.304 -> [EWS] url:  /login
13:03:10.304 -> [EWS] search:
13:03:10.304 -> [EWS] headerName: Host
13:03:10.304 -> [EWS] headerValue: <IP_ADDRESS>
13:03:10.304 -> [EWS] headerName: Connection
13:03:10.304 -> [EWS] headerValue: keep-alive
13:03:10.304 -> [EWS] headerName: Upgrade-Insecure-Requests
13:03:10.338 -> [EWS] headerValue: 1
13:03:10.372 -> [EWS] headerName: User-Agent
13:03:10.372 -> [EWS] headerValue: Mozilla/5.0 (Windows NT 6.1; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/95.0.4638.69 Safari/537.36
13:03:10.406 -> [EWS] headerName: Accept
13:03:10.406 -> [EWS] headerValue: text/html,application/xhtml+xml,application/xml;q=0.9,image/avif,image/webp,image/apng,*/*;q=0.8,application/signed-exchange;v=b3;q=0.9
13:03:10.440 -> [EWS] headerName: Accept-Encoding
13:03:10.440 -> [EWS] headerValue: gzip, deflate
13:03:10.440 -> [EWS] headerName: Accept-Language
13:03:10.474 -> [EWS] headerValue: en-US,en;q=0.9,el;q=0.8
13:03:10.474 -> [EWS] headerName: Cookie
13:03:10.474 -> [EWS] headerValue: ESPSESSIONID=0
13:03:10.474 -> [EWS] args:
13:03:10.474 -> [EWS] args count:  0
13:03:10.474 -> [EWS] args:
13:03:10.474 -> [EWS] args count:  0
13:03:10.474 -> [EWS] Request: /login
13:03:10.474 -> [EWS] Arguments:
13:03:10.474 -> [EWS] Final list of key/value pairs:
13:03:10.474 -> [EWS] _handleRequest handle
13:03:10.474 -> Found cookie: ESPSESSIONID=0
13:03:10.474 -> [EWS] send1: len =  350
13:03:10.507 -> [EWS] content =  <form action='/login' method='POST'>To log in, please use : admin/password
User:<input type='text' name='USERNAME' placeholder='user name'>
Password:<input type='password' name='PASSWORD' placeholder='password'>
<input type='submit' name='SUBMIT' value='Submit'></form>
You also can go here
13:03:10.541 -> [EWS] _prepareHeader sendHeader Conn close
13:03:10.541 -> [EWS] send1: write header =  HTTP/1.1 200 OK
13:03:10.541 -> Content-Type: text/html
13:03:10.541 -> Content-Length: 350
13:03:10.541 -> Connection: close
13:03:10.541 ->
13:03:10.541 ->
13:03:10.541 -> [EWS] sendContent: Client.write content:  <form action='/login' method='POST'>To log in, please use : admin/password
User:<input type='text' name='USERNAME' placeholder='user name'>
Password:<input type='password' name='PASSWORD' placeholder='password'>
<input type='submit' name='SUBMIT' value='Submit'></form>
You also can go here
13:03:10.576 -> [EWS] _handleRequest OK
13:03:10.576 -> [EWS] handleClient: Don't keepCurrentClient

After 150-200 refreshes it sends less data. In this case it sends 237 characters only.
13:09:09.095 -> [EWS] handleClient: New Client
13:09:09.129 -> [EWS] method:  GET
13:09:09.129 -> [EWS] url:  /login
13:09:09.129 -> [EWS] search:
13:09:09.129 -> [EWS] headerName: Host
13:09:09.129 -> [EWS] headerValue: <IP_ADDRESS>
13:09:09.129 -> [EWS] headerName: Connection
13:09:09.129 -> [EWS] headerValue: keep-alive
13:09:09.129 -> [EWS] headerName: Cache-Control
13:09:09.129 -> [EWS] headerValue: max-age=0
13:09:09.163 -> [EWS] headerName: Upgrade-Insecure-Requests
13:09:09.163 -> [EWS] headerValue: 1
13:09:09.197 -> [EWS] headerName: User-Agent
13:09:09.197 -> [EWS] headerValue:
13:09:09.231 -> [EWS] headerName: Accept
13:09:09.231 -> [EWS] headerValue: text/html,application/xhtml+
13:09:09.264 -> [EWS] headerName: Accept-Encoding
13:09:09.264 -> [EWS] headerValue: gzip, deflate
13:09:09.264 -> [EWS] headerName: Accept-Language
13:09:09.264 -> [EWS] headerValue: en-US,en;q=0.9,el;q
13:09:09.264 -> [EWS] headerName: Cookie
13:09:09.299 -> [EWS] headerValue: ESPSESSIONID=0
13:09:09.299 -> [EWS] args:
13:09:09.299 -> [EWS] args count:  0
13:09:09.299 -> [EWS] args:
13:09:09.299 -> [EWS] args count:  0
13:09:09.299 -> [EWS] Request: /login
13:09:09.299 -> [EWS] Arguments:
13:09:09.299 -> [EWS] Final list of key/value pairs:
13:09:09.299 -> [EWS] _handleRequest handle
13:09:09.299 -> Found cookie: ESPSESSIONID=0
13:09:09.299 -> [EWS] send1: len =  237
13:09:09.299 -> [EWS] content =  <form action='/login' method='POST'>To log in, please use : admin/password
User:<input type='text' name='USERNAME' placeholder='user name'>
Password:<input type='password' name='PASSWORD' placeholder='password'>

13:09:09.335 -> [EWS] _prepareHeader sendHeader Conn close
13:09:09.335 -> [EWS] send1: write header =  HTTP/1.1 200 OK
13:09:09.335 -> Content-Type: text/html
13:09:09.335 -> Content-Length: 237
13:09:09.335 ->
13:09:09.335 ->
13:09:09.335 -> [EWS] sendContent: Client.write content:  <form action='/login' method='POST'>To log in, please use : admin/password
User:<input type='text' name='USERNAME' placeholder='user name'>
Password:<input type='password' name='PASSWORD' placeholder='password'>

13:09:09.367 -> [EWS] _handleRequest OK
13:09:10.347 -> [EWS] handleClient: Don't keepCurrentClient

After a few more refreshes it sends 90 characters
13:12:08.727 -> [EWS] handleClient: New Client
13:12:08.727 -> [EWS] method:  GET
13:12:08.727 -> [EWS] url:  /login
13:12:08.727 -> [EWS] search:
13:12:08.727 -> [EWS] headerName: Host
13:12:08.727 -> [EWS] headerValue: <IP_ADDRESS>
13:12:08.760 -> [EWS] headerName: Connection
13:12:08.760 -> [EWS] headerValue: keep-alive
13:12:08.760 -> [EWS] headerName: Cache-Control
13:12:08.760 -> [EWS] headerValue: max-age=0
13:12:08.760 -> [EWS] headerName: Upgrade-Insecure-Requests
13:12:08.760 -> [EWS] headerValue: 1
13:12:08.794 -> [EWS] headerName: User-Agent
13:12:08.828 -> [EWS] headerValue: Mozilla/5.0 (Windows NT 6.1; Win
13:12:08.862 -> [EWS] headerName: Accept
13:12:08.862 -> [EWS] headerValue: text/html,ap
13:12:08.862 -> [EWS] headerName: Accept-Encoding
13:12:08.862 -> [EWS] headerValue: gzi
13:12:08.896 -> [EWS] headerName: Accept-Language
13:12:08.896 -> [EWS] headerValue: en-
13:12:08.896 -> [EWS] headerName: Cookie
13:12:08.896 -> [EWS] headerValue: ESPSESSIONID
13:12:08.896 -> [EWS] args:
13:12:08.896 -> [EWS] args count:  0
13:12:08.896 -> [EWS] args:
13:12:08.896 -> [EWS] args count:  0
13:12:08.896 -> [EWS] Request: /login
13:12:08.896 -> [EWS] Arguments:
13:12:08.896 -> [EWS] Final list of key/value pairs:
13:12:08.930 -> [EWS] _handleRequest handle
13:12:08.930 -> Found cookie: ESPSESSIONID
13:12:08.930 -> [EWS] send1: len =  90
13:12:08.930 -> [EWS] content =  <form action='/login' method='POST'>To log in, please use : admin/password

13:12:08.930 -> [EWS] _prepareHeader sendHeader Conn close
13:12:08.930 -> [EWS] send1: write header =  HTTP/1.1 200 OK
13:12:08.930 -> Content-Length: 90
13:12:08.930 ->
13:12:08.930 ->
13:12:08.930 -> [EWS] sendContent: Client.write content:  <form action='/login' method='POST'>To log in, please use : admin/password

13:12:08.963 -> [EWS] _handleRequest OK
13:12:09.942 -> [EWS] handleClient: Don't keepCurrentClient

And eventually you get the ERR_CONNECTION_REFUSED from the browser. The arduino at this point seems to be stuck as it does not produce and logs but weirdly it responds to pings Ok.

Finally, when someone goes crazy with the page refresh and keeps refreshing very fast, i can see corrupted data on the headers too...See below (please note how the ip address is not correctly filled in):
22:08:19.519 -> [EWS] handleClient: New Client
22:08:19.519 -> [EWS] method:  GET
22:08:19.519 -> [EWS] url:  /login
22:08:19.519 -> [EWS] search:
22:08:19.519 -> [EWS] headerName: Host
22:08:19.519 -> [EWS] headerValue: 192.168.1.
22:08:19.519 -> [EWS] args:
22:08:19.519 -> [EWS] args count:  0
22:08:19.519 -> [EWS] args:
22:08:19.519 -> [EWS] args count:  0
22:08:19.519 -> [EWS] Request: /login
22:08:19.519 -> [EWS] Arguments:
22:08:19.554 -> [EWS] Final list of key/value pairs:
22:08:19.554 -> [EWS] _handleRequest handle
22:08:19.554 -> [EWS] send1: len =  68
22:08:19.554 -> [EWS] content =  User:<input type='text' name='USERNAME' placeholder='user name'>

22:08:19.554 -> [EWS] _prepareHeader sendHeader Conn close
22:08:19.554 -> [EWS] send1: write header =
22:08:19.554 ->
22:08:19.554 -> [EWS] sendContent: Client.write content:  User:<input type='text' name='USERNAME' placeholder='user name'>

22:08:19.554 -> [EWS] _handleRequest OK
22:08:19.589 -> [EWS] handleClient: Don't keepCurrentClient

and also some funny log that shows things really messed up
22:08:20.978 -> [EWS] handleClient: New Client
22:08:20.978 -> [EWS] method:  GET
22:08:20.978 -> [EWS] url:  /login
22:08:20.978 -> [EWS] search:
22:08:20.978 -> [EWS] args:
22:08:20.978 -> [EWS] args count:  0
22:08:20.978 -> [EWS] args:
22:08:20.978 -> [EWS] args count:  0
22:08:21.012 -> [EWS] Request: /login
22:08:21.012 -> [EWS] Arguments:
22:08:21.012 -> [EWS] Final list of key/value pairs:
22:08:21.012 -> [EWS] _handleRequest: request handler not found
22:08:21.012 -> [EWS] send1: len =  53
22:08:21.012 -> [EWS] content =  File Not Found
22:08:21.012 ->
22:08:21.012 -> URI: /login
22:08:21.012 -> Method: GET
22:08:21.012 -> Arguments: 0
22:08:21.012 ->
22:08:21.012 -> [EWS] _prepareHeader sendHeader Conn close
22:08:21.012 -> [EWS] send1: write header =   404
22:08:21.012 ->
22:08:21.012 ->
22:08:21.012 -> [EWS] sendContent: Client.write content:  File Not Found
22:08:21.012 ->
22:08:21.012 -> URI: /login
22:08:21.012 -> Method: GET
22:08:21.012 -> Arguments: 0
22:08:21.012 ->
22:08:21.012 -> [EWS] handleClient: Don't keepCurrentClient
22:08:21.657 -> [EWS] handleClient: New Client
22:08:21.657 -> [EWS] _parseRequest: Invalid request:  GET /l
22:08:21.691 -> [EWS] handleClient: Don't keepCurrentClient
22:08:21.691 -> [EWS] handleClient: New Client
22:08:21.691 -> [EWS] _parseRequest: Invalid request:  Host:
22:08:21.691 -> [EWS] handleClient: Don't keepCurrentClient
22:08:21.691 -> [EWS] handleClient: New Client
22:08:21.691 -> [EWS] _parseRequest: Invalid request:  Connec
22:08:21.691 -> [EWS] handleClient: Don't keepCurrentClient
22:08:21.691 -> [EWS] handleClient: New Client
22:08:21.725 -> [EWS] _parseRequest: Invalid request:  Cache-
22:08:21.725 -> [EWS] handleClient: Don't keepCurrentClient
22:08:21.725 -> [EWS] handleClient: New Client
22:08:21.725 -> [EWS] _parseRequest: Invalid request:  Upgrad
22:08:21.725 -> [EWS] handleClient: Don't keepCurrentClient
22:08:21.725 -> [EWS] handleClient: New Client
22:08:21.759 -> [EWS] _parseRequest: Invalid request:  User-A
22:08:21.759 -> [EWS] handleClient: Don't keepCurrentClient
22:08:21.793 -> [EWS] handleClient: New Client
22:08:21.827 -> [EWS] _parseRequest: Invalid request:  Accept
22:08:21.827 -> [EWS] handleClient: Don't keepCurrentClient
22:08:21.827 -> [EWS] handleClient: New Client
22:08:21.827 -> [EWS] _parseRequest: Invalid request:  Accept
22:08:21.827 -> [EWS] handleClient: Don't keepCurrentClient
22:08:21.827 -> [EWS] handleClient: New Client
22:08:21.861 -> [EWS] _parseRequest: Invalid request:  Accept
22:08:21.861 -> [EWS] handleClient: Don't keepCurrentClient
22:08:21.861 -> [EWS] handleClient: New Client
22:08:21.861 -> [EWS] _parseRequest: Invalid request:  Cookie
22:08:21.861 -> [EWS] handleClient: Don't keepCurrentClient
22:08:21.861 -> [EWS] handleClient: New Client
22:08:21.894 -> [EWS] _parseRequest: Invalid request:
22:08:21.894 -> [EWS] handleClient: Don't keepCurrentClient
22:08:23.176 -> [EWS] handleClient: New Client
22:08:23.176 -> [EWS] _parseRequest: Invalid request:  GET /l
22:08:23.176 -> [EWS] handleClient: Don't keepCurrentClient
22:08:23.176 -> [EWS] handleClient: New Client
22:08:23.176 -> [EWS] _parseRequest: Invalid request:  Host:
22:08:23.209 -> [EWS] handleClient: Don't keepCurrentClient
22:08:23.209 -> [EWS] handleClient: New Client
22:08:23.209 -> [EWS] _parseRequest: Invalid request:  Connec
22:08:23.209 -> [EWS] handleClient: Don't keepCurrentClient
22:08:23.209 -> [EWS] handleClient: New Client
22:08:23.209 -> [EWS] _parseRequest: Invalid request:  Cache-
22:08:23.209 -> [EWS] handleClient: Don't keepCurrentClient
22:08:23.209 -> [EWS] handleClient: New Client
22:08:23.243 -> [EWS] _parseRequest: Invalid request:  Upgrad
22:08:23.243 -> [EWS] handleClient: Don't keepCurrentClient
22:08:23.243 -> [EWS] handleClient: New Client
22:08:23.276 -> [EWS] _parseRequest: Invalid request:  User-A
22:08:23.276 -> [EWS] handleClient: Don't keepCurrentClient
22:08:23.276 -> [EWS] handleClient: New Client
22:08:23.344 -> [EWS] _parseRequest: Invalid request:  Accept
22:08:23.344 -> [EWS] handleClient: Don't keepCurrentClient
22:08:23.344 -> [EWS] handleClient: New Client
22:08:23.344 -> [EWS] _parseRequest: Invalid request:  Accept
22:08:23.344 -> [EWS] handleClient: Don't keepCurrentClient
22:08:23.344 -> [EWS] handleClient: New Client
22:08:23.378 -> [EWS] _parseRequest: Invalid request:  Accept
22:08:23.378 -> [EWS] handleClient: Don't keepCurrentClient
22:08:23.378 -> [EWS] handleClient: New Client
22:08:23.378 -> [EWS] _parseRequest: Invalid request:  Cookie
22:08:23.378 -> [EWS] handleClient: Don't keepCurrentClient
22:08:23.378 -> [EWS] handleClient: New Client
22:08:23.378 -> [EWS] _parseRequest: Invalid request:
22:08:23.378 -> [EWS] handleClient: Don't keepCurrentClient
22:08:25.002 -> [EWS] handleClient: New Client
22:08:25.002 -> [EWS] _parseRequest: Invalid request:  GET /l
22:08:25.002 -> [EWS] handleClient: Don't keepCurrentClient
22:08:25.002 -> [EWS] handleClient: New Client
22:08:25.002 -> [EWS] _parseRequest: Invalid request:  Host:
22:08:25.002 -> [EWS] handleClient: Don't keepCurrentClient
22:08:25.002 -> [EWS] handleClient: New Client
22:08:25.002 -> [EWS] _parseRequest: Invalid request:  Connec
22:08:25.036 -> [EWS] handleClient: Don't keepCurrentClient
22:08:25.036 -> [EWS] handleClient: New Client
22:08:25.036 -> [EWS] _parseRequest: Invalid request:  Cache-
22:08:25.036 -> [EWS] handleClient: Don't keepCurrentClient
22:08:25.036 -> [EWS] handleClient: New Client
22:08:25.036 -> [EWS] _parseRequest: Invalid request:  Upgrad
22:08:25.071 -> [EWS] handleClient: Don't keepCurrentClient
22:08:25.071 -> [EWS] handleClient: New Client
22:08:25.104 -> [EWS] _parseRequest: Invalid request:  User-A
22:08:25.104 -> [EWS] handleClient: Don't keepCurrentClient
22:08:25.104 -> [EWS] handleClient: New Client
22:08:25.139 -> [EWS] _parseRequest: Invalid request:  Accept
22:08:25.139 -> [EWS] handleClient: Don't keepCurrentClient
22:08:25.139 -> [EWS] handleClient: New Client
22:08:25.171 -> [EWS] _parseRequest: Invalid request:  Accept
22:08:25.171 -> [EWS] handleClient: Don't keepCurrentClient
22:08:25.171 -> [EWS] handleClient: New Client
22:08:25.171 -> [EWS] _parseRequest: Invalid request:  Accept
22:08:25.171 -> [EWS] handleClient: Don't keepCurrentClient
22:08:25.171 -> [EWS] handleClient: New Client
22:08:25.205 -> [EWS] _parseRequest: Invalid request:  Cookie
22:08:25.205 -> [EWS] handleClient: Don't keepCurrentClient
22:08:25.205 -> [EWS] handleClient: New Client
22:08:25.205 -> [EWS] _parseRequest: Invalid request:
22:08:25.205 -> [EWS] handleClient: Don't keepCurrentClient
22:09:28.215 -> [EWS] handleClient: New Client
22:09:28.215 -> [EWS] _parseRequest: Invalid request:  GET /l
22:09:28.248 -> [EWS] handleClient: Don't keepCurrentClient
22:09:28.248 -> [EWS] handleClient: New Client
22:09:28.248 -> [EWS] _parseRequest: Invalid request:  Host:
22:09:28.248 -> [EWS] handleClient: Don't keepCurrentClient
22:09:28.248 -> [EWS] handleClient: New Client
22:09:28.248 -> [EWS] _parseRequest: Invalid request:  Connec
22:09:28.248 -> [EWS] handleClient: Don't keepCurrentClient
22:09:28.248 -> [EWS] handleClient: New Client
22:09:28.282 -> [EWS] _parseRequest: Invalid request:  Cache-
22:09:28.282 -> [EWS] handleClient: Don't keepCurrentClient
22:09:28.282 -> [EWS] handleClient: New Client
22:09:28.282 -> [EWS] _parseRequest: Invalid request:  Upgrad
22:09:28.282 -> [EWS] handleClient: Don't keepCurrentClient
22:09:28.282 -> [EWS] handleClient: New Client
22:09:28.316 -> [EWS] _parseRequest: Invalid request:  User-A
22:09:28.350 -> [EWS] handleClient: Don't keepCurrentClient
22:09:28.350 -> [EWS] handleClient: New Client
22:09:28.384 -> [EWS] _parseRequest: Invalid request:  Accept
22:09:28.384 -> [EWS] handleClient: Don't keepCurrentClient
22:09:28.384 -> [EWS] handleClient: New Client
22:09:28.384 -> [EWS] _parseRequest: Invalid request:  Accept
22:09:28.384 -> [EWS] handleClient: Don't keepCurrentClient
22:09:28.418 -> [EWS] handleClient: New Client
22:09:28.418 -> [EWS] _parseRequest: Invalid request:  Accept
22:09:28.418 -> [EWS] handleClient: Don't keepCurrentClient
22:09:28.418 -> [EWS] handleClient: New Client
22:09:28.418 -> [EWS] _parseRequest: Invalid request:  Cookie
22:09:28.418 -> [EWS] handleClient: Don't keepCurrentClient
22:09:28.452 -> [EWS] handleClient: New Client
22:09:28.452 -> [EWS] _parseRequest: Invalid request:
22:09:28.452 -> [EWS] handleClient: Don't keepCurrentClient
22:09:32.143 -> [EWS] handleClient: New Client
22:09:32.143 -> [EWS] _parseRequest: Invalid request:  GET /l
22:09:32.143 -> [EWS] handleClient: Don't keepCurrentClient
22:09:32.143 -> [EWS] handleClient: New Client
22:09:32.143 -> [EWS] _parseRequest: Invalid request:  Host:
22:09:32.177 -> [EWS] handleClient: Don't keepCurrentClient
22:09:32.177 -> [EWS] handleClient: New Client
22:09:32.177 -> [EWS] _parseRequest: Invalid request:  Connec
22:09:32.177 -> [EWS] handleClient: Don't keepCurrentClient
22:09:32.177 -> [EWS] handleClient: New Client
22:09:32.177 -> [EWS] _parseRequest: Invalid request:  Cache-
22:09:32.177 -> [EWS] handleClient: Don't keepCurrentClient
22:09:32.177 -> [EWS] handleClient: New Client
22:09:32.211 -> [EWS] _parseRequest: Invalid request:  Upgrad
22:09:32.211 -> [EWS] handleClient: Don't keepCurrentClient
22:09:32.211 -> [EWS] handleClient: New Client
22:09:32.245 -> [EWS] _parseRequest: Invalid request:  User-A
22:09:32.245 -> [EWS] handleClient: Don't keepCurrentClient
22:09:32.245 -> [EWS] handleClient: New Client

Just before the arduino becomes non-responsive i can see from the logs that prepareHeader is executing but the send function is not executed.
16:54:55.123 -> [EWS] handleClient: New Client
16:54:55.157 -> [EWS] method:  GET
16:54:55.157 -> [EWS] url:  /login
16:54:55.157 -> [EWS] search:
16:54:55.157 -> [EWS] headerName: Host
16:54:55.157 -> [EWS] headerValue: <IP_ADDRESS>
16:54:55.157 -> [EWS] headerName: Connection
16:54:55.157 -> [EWS] headerValue: keep-alive
16:54:55.157 -> [EWS] headerName: Cache-Control
16:54:55.157 -> [EWS] headerValue: max-age=0
16:54:55.190 -> [EWS] args:
16:54:55.190 -> [EWS] args count:  0
16:54:55.190 -> [EWS] args:
16:54:55.190 -> [EWS] args count:  0
16:54:55.190 -> [EWS] Request: /login
16:54:55.190 -> [EWS] Arguments:
16:54:55.190 -> [EWS] Final list of key/value pairs:
16:54:55.190 -> [EWS] _handleRequest handle
16:54:55.190 -> [EWS] send1: len =  162
16:54:55.190 -> [EWS] content =  <form action='/login' method='POST'>To log in, please use : admin/password
User:<input type='text' name='USERNAME' placeholder='user name'>

 [EWS] _prepareHeader sendHeader Conn close

This bit is missing from the log (taken from full ok example above)
22:08:19.554 -> [EWS] send1: write header =
22:08:19.554 ->
22:08:19.554 -> [EWS] sendContent: Client.write content:  User:<input type='text' name='USERNAME' placeholder='user name'>

22:08:19.554 -> [EWS] _handleRequest OK
22:08:19.589 -> [EWS] handleClient: Don't keepCurrentClient

Also a malformed log before Chrome says Err Connection Refused.
Note how the header values are malformed.
17:12:00.600 -> [EWS] handleClient: New Client
17:12:00.600 -> [EWS] method:  GET
17:12:00.600 -> [EWS] url:  /login
17:12:00.600 -> [EWS] search:
17:12:00.600 -> [EWS] headerName: Host
17:12:00.600 -> [EWS] headerValue: <IP_ADDRESS>
17:12:00.600 -> [EWS] headerName: Connection
17:12:00.600 -> [EWS] headerValue: keep-alive
17:12:00.600 -> [EWS] headerName: Cache-Control
17:12:00.634 -> [EWS] headerValue: max-age=0
17:12:00.634 -> [EWS] headerName: Upgrade-Insecure-Requests
17:12:00.634 -> [EWS] headerValue: 1
17:12:00.668 -> [EWS] headerName: User-Agent
17:12:00.668 -> [EWS] headerValue: Mozilla/5.0 (Windows NT 6.1; Win
17:12:00.737 -> [EWS] headerName: Accept
17:12:00.737 -> [EWS] headerValue: text/html,ap
17:12:00.737 -> [EWS] headerName: Accept-Encoding
17:12:00.737 -> [EWS] headerValue: gzi
17:12:00.737 -> [EWS] headerName: Accept-Language
17:12:00.737 -> [EWS] headerValue: en-
17:12:00.737 -> [EWS] headerName: Cookie
17:12:00.771 -> [EWS] headerValue: ESPSESSIONID
17:12:00.771 -> [EWS] args:
17:12:00.771 -> [EWS] args count:  0
17:12:00.771 -> [EWS] args:
17:12:00.771 -> [EWS] args count:  0
17:12:00.771 -> [EWS] Request: /

Hi all,
using the simple authentication example with the addition of the MemoryUsage library to show memory stats, one can see that over successive page reloads the memory heap is being exhausted...bringing everything to a stall..
19:23:41.443 -> Stack start:8670
19:23:41.443 -> Stack end:8703
19:23:41.443 -> Stack size:33
19:23:41.443 -> Data start:512
19:23:41.443 -> Heap start:3055
19:23:41.443 -> Heap end:4003

19:24:35.899 -> Stack start:8670
19:24:35.899 -> Stack end:8703
19:24:35.899 -> Stack size:33
19:24:35.899 -> Data start:512
19:24:35.899 -> Heap start:3055
19:24:35.899 -> Heap end:5186

19:25:43.502 -> Stack start:8670
19:25:43.502 -> Stack end:8703
19:25:43.502 -> Stack size:33
19:25:43.502 -> Data start:512
19:25:43.502 -> Heap start:3055
19:25:43.502 -> Heap end:7177

19:26:32.209 -> Stack start:8670
19:26:32.209 -> Stack end:8703
19:26:32.209 -> Stack size:33
19:26:32.209 -> Data start:512
19:26:32.209 -> Heap start:3055
19:26:32.209 -> Heap end:8122

19:27:05.778 -> Stack start:8670
19:27:05.778 -> Stack end:8703
19:27:05.778 -> Stack size:33
19:27:05.778 -> Data start:512
19:27:05.778 -> Heap start:3055
19:27:05.778 -> Heap end:8417

Hi @aagiannidis
Thanks for your interests and nice words about the library.
I'm amazed that you've spent lots of time to investigate the issue. But my feeling is that you're using the worst board for the job (Mega with only 16MHz, 8KB of RAM) which can create problems (heap corruption, not enough memory, etc.) in real-time and it's very time-consuming and not worthy to spend time to investigate and solve the issue
As you know, this library also relies on so many underlying libraries / core (Ethernet library, AVR core, etc) , so any bug can also cause the issue.
I suggest you use a better board for the demanding job, such as ESP32 / ESP8266 / Nano_RP2040_Connect for WiFi, or WT32_ETH01 for Ethernet (using WebServer_WT32_ETH01 library), and finally find out it's much more economical to use them as our time is much more precious.
Also have a look at Arduino hangs after repeated refreshing #8 and understand that using wrong board, with less memory, slow, etc., can create big headache
I'm sorry I have to close the issue, and won't spend time on this, even this is the real issue on the antique Mega board.
Good Luck,


Assignment 4

It was hard for me. But I am so happy I made it.

Hi Siyu, congrats! I can't find the lab 4 folder in your repository though - could you make sure it wasn't deleted?

oh i see...maybe it's because you can only make a request at one time.

Received labs 4-6. Good work!


Upgrade node and dependencies

In GitLab by @kinow on Nov 23, 2023, 11:04
The GUI has been using an old version of Node. The current LTS seems to be 20 - nvm gives me that, their page also shows that one.

The GUI is using an older LTS, v14.21.3, that fixed two CVE's. I don't know what's the release cadence for older LTS versions, but it might be safer to use a newer version. Also in case other tools use a newer Node version and if we ever need to deploy both in the same VM/container (hopefully the containers will be separated like EDITO/SURF, so a low risk).
This also prevents users from using newer version. I tried the GUI with v18 and it failed with
$ npm start

><EMAIL_ADDRESS>start
> react-scripts start

node:internal/modules/cjs/loader:573
      throw e;
      ^

Error [ERR_PACKAGE_PATH_NOT_EXPORTED]: Package subpath './lib/tokenize' is not defined by "exports" in /home/kinow/Development/javascript/workspace/autosubmitreact/node_modules/postcss-safe-parser/node_modules/postcss/package.json
    at new NodeError (node:internal/errors:405:5)
    at exportsNotFound (node:internal/modules/esm/resolve:362:10)
    at packageExportsResolve (node:internal/modules/esm/resolve:698:9)
    at resolveExports (node:internal/modules/cjs/loader:567:36)
    at Module._findPath (node:internal/modules/cjs/loader:636:31)
    at Module._resolveFilename (node:internal/modules/cjs/loader:1063:27)
    at Module._load (node:internal/modules/cjs/loader:922:27)
    at Module.require (node:internal/modules/cjs/loader:1143:19)
    at require (node:internal/modules/cjs/helpers:119:18)
    at Object.<anonymous> (/home/kinow/Development/javascript/workspace/autosubmitreact/node_modules/postcss-safe-parser/lib/safe-parser.js:1:17) {
  code: 'ERR_PACKAGE_PATH_NOT_EXPORTED'
}

Node.js v18.18.0

So if LangTech, EDITO, etc., has the requirement to use, for example,  the latest LTS v20 (driven by security/ops requirements) that would prevent them from using our GUI.
Not high priority as v14 got an update in February, but good to have that in our radar.
Installing the GUI dependencies I also get a message about security issues.
kinow@ranma:~/Development/javascript/workspace/autosubmitreact$ npm install
npm WARN old lockfile
npm WARN old lockfile The package-lock.json file was created with an old version of npm,
npm WARN old lockfile so supplemental metadata must be fetched from the registry.
npm WARN old lockfile
npm WARN old lockfile This is a one-time fix-up, please be patient...
npm WARN old lockfile

up to date, audited 2364 packages in 28s

206 packages are looking for funding
  run `npm fund` for details

124 vulnerabilities (1 low, 81 moderate, 31 high, 11 critical)

To address issues that do not require attention, run:
  npm audit fix

To address all issues (including breaking changes), run:
  npm audit fix --force

Run `npm audit` for details.

So maybe it'd be worth to check dependencies, maybe with npx ncu or something else.

mentioned in commit 19f25a715c4935bf6a3158e96462e9a1e07a0102

mentioned in commit c7e2d7f5c55fbf731c844bf864d45ddd4bdf5617

An additional perk of reviewing and updating the dependencies of the project is that we can replace the ones that are provided via CDN to be contained inside the compiled project.
The GUI is a reproducible application that can be installed in environments with limited access to the internet, so almost all the features become unusable when it doesn't have proper access to these remote resources (styling, network graphs, icons, javascript functions, etc). This can be easily tested by turning off the internet and running the GUI with the API (which doesn't need access to the internet) serving it.
This was an issue that was invisible to us until now as we always deployed the GUI on environments with free access to the internet resources, but removing this limitation could be a MUST afterward.

In GitLab by @mcastril on Jan 31, 2024, 18:19
Do you mean the dependencies defined in the package.json file?

mentioned in commit 3164f06c36dc2a7c96d3f9f0c96fd8eb98609e19

In GitLab by @kinow on Feb 1, 2024, 09:26
And to add to what Luiggi said, I believe besides downloading these dependencies someone also patched/modified them. So Luiggi also had to spend time comparing versions and changes before upgrading them.

In GitLab by @mcastril on Feb 2, 2024, 17:41
I see, thanks for the explanation

Some dependencies were defined in the package.json but never used from the node_modules directory. Instead, they were downloaded from the internet via CDN every time the user load the GUI.
This issue is already solved in the new GUI upgrade.

Master branch already been updated to Node.js lts/iron


No such file: MOFA_depmap23Q2_Factors97_factors.csv

Hi,
I followed the steps in the README and ran the demo as per the default tutorial. However, after the 500 epochs training finishes, I encountered an error indicating that the file MOFA_depmap23Q2_Factors97_factors.csv could not be found. I searched through the entire codebase and found that the function responsible for generating this file doesn't seem to be called. Could you please guide me on how I can resolve this issue?
Thank you!

Hi,
Thank you for trying our method. The intermediate files can be downloaded from the Figshare site as mentioned in our paper. The URL for the MOFA files is here https://figshare.com/account/projects/177699/articles/24420631


Bug fix not close when pipeline context prepare failed

Proposed changes
fix not close when pipeline context prepare failed.

Problem summary
Describe your changes.
Checklist(Required)

[ ] Does it affect the original behavior
[ ] Has unit tests been added
[ ] Has document been added or modified
[ ] Does it need to update dependencies
[ ] Is this PR support rollback (If NO, please explain WHY)

Further comments
If this is a relatively large or complex change, kick off the discussion at<EMAIL_ADDRESS>by explaining why you chose the solution you did and what alternatives you considered, etc...

run buildall

TeamCity pipeline, clickbench performance test result:
the sum of best hot time: 34.12 seconds
stream load tsv:          464 seconds loaded<PHONE_NUMBER>9 Bytes, about 153 MB/s
stream load json:         37 seconds loaded<PHONE_NUMBER> Bytes, about 60 MB/s
stream load orc:          68 seconds loaded<PHONE_NUMBER> Bytes, about 15 MB/s
stream load parquet:          28 seconds loaded 861443392 Bytes, about 29 MB/s
https://doris-community-test-1308700295.cos.ap-hongkong.myqcloud.com/tmp/20230223075412_clickbench_pr_102425.html

run p0


Create cupertino checkbox

Addresses: #61789.
Adds a macOS/iOS styled checkbox widget to Cupertino. Works with keyboard focus, and keyboard interactions. The goal is to make this widget adaptable with the Material Checkbox.
Notably SwiftUI does not provide checkboxes for iOS development, only macOS, so our comparison tool could not be used. So we have to compare with desktop checkboxes and the checkboxes in the Human Interface Guidelines.
Some screenshots of the checkbox in the macOS settings, and from the Human Interface Guidelines:

Here is the CupertinoCheckbox in action, both with mouse and keyboard interactions:
https://user-images.githubusercontent.com/58190796/223872890-3bfcf30b-9698-4280-95c3-baa181dad162.mov
Pre-launch Checklist

[x] I read the Contributor Guide and followed the process outlined there for submitting PRs.
[x] I read the Tree Hygiene wiki page, which explains my responsibilities.
[x] I read and followed the Flutter Style Guide, including Features we expect every widget to implement.
[x] I signed the CLA.
[x] I listed at least one issue that this PR fixes in the description above.
[x] I updated/added relevant documentation (doc comments with ///).
[x] I added new tests to check the change I am making, or this PR is test-exempt.
[x] All existing and new tests are passing.

If you need help, consider asking for advice on the #hackers-new channel on Discord.

@GroovinChip

@gspencergoog this is ready for review again 👍


Remove cloudfoundry reference

Resolves #265
Checklist

[x] I have viewed, signed, and submitted the Contributor License Agreement.
[x] I have linked issue(s) that this PR should close using keywords or the Github UI (See docs)
[x] I have added an integration test, if necessary.
[x] I have reviewed the styleguide for guidance on my code quality.
[x] I'm happy with the commit history on this PR (I have rebased/squashed as needed).

Could you shed a bit of light on what this NGINX configuration means?

@fg-j Yeah so I am no expert but the best I am able to tell is that we had a log_format named cloudfoundry and we were using that format for the access_logs. I have just renamed the log_format to cnb to get rid of an unneeded cloudfoundry reference. I did not do any further digging to see if that format is even required for the test. Just trying to remove it quickly and with as little impact as possible.


grpc_build_packages is flaky on Kokoro

https://sponge.corp.google.com/invocation?tab=Build+Log&id=f1b7168a-c8df-450d-a126-e4e900917d50&searchFor=
+ docker cp build_and_run_docker_d1c40699-bbad-4197-b6f1-44abf5a88a23:/var/local/git/grpc/artifacts /tmpfs/src/github/grpc
mkdir /tmpfs/src/github/grpc/artifacts: file exists
+ FAILED=true
+ docker rm -f build_and_run_docker_d1c40699-bbad-4197-b6f1-44abf5a88a23

Seen in multiple contexts, on manual builds, master, and nightlies, Seems like an infrastructure/script flake. The mkdir command fails sometimes (probably because something else created that directory beforehand and there might be a race condition that causes it to pass sometimes and fail other times?).

Haven't seen in a while. Closing.

Happened again last night: https://sponge.corp.google.com/invocation?tab=Build+Log&id=a86d6c36-fb6e-409c-940b-65a990ae0cce&searchFor=
Reopening.

Seen similar issue for PHP twice
+ cp -r /var/local/jenkins/grpc/input_artifacts/php_pecl_package_linux_x64/grpc-1.15.0dev.tgz /var/local/jenkins/grpc/input_artifacts/php_pecl_package_macos_x64/grpc-1.15.0dev.tgz artifacts/
cp: will not overwrite just-created 'artifacts/grpc-1.15.0dev.tgz' with '/var/local/jenkins/grpc/input_artifacts/php_pecl_package_macos_x64/grpc-1.15.0dev.tgz'
+ true
+ '[' artifacts '!=' '' ']'
+ docker cp build_and_run_docker_0266e022-7d36-430a-a20b-748c8be4d4a3:/var/local/git/grpc/artifacts /tmpfs/src/github/grpc
mkdir /tmpfs/src/github/grpc/artifacts: file exists

https://source.cloud.google.com/results/invocations/6efc0b89-6c48-4e5b-a727-30d9fd89053d/targets/github%2Fgrpc/tests
https://source.cloud.google.com/results/invocations/2c8f9e11-113a-4621-b754-381184a5d34d/targets/github%2Fgrpc/tests

What's also odd is this message:
cp -r /var/local/jenkins/grpc/input_artifacts/php_pecl_package_linux_x64/grpc-1.15.0dev.tgz /var/local/jenkins/grpc/input_artifacts/php_pecl_package_macos_x64/grpc-1.15.0dev.tgz artifacts/ cp: will not overwrite just-created 'artifacts/grpc-1.15.0dev.tgz' with '/var/local/jenkins/grpc/input_artifacts/php_pecl_package_macos_x64/grpc-1.15.0dev.tgz'  -> looks like the macos and linux PHP packages have the same name and they are trying to overwrite each other? Perhaps  https://github.com/grpc/grpc/blob/master/tools/run_tests/artifacts/build_package_php.sh needs updating?

The docker cp (which fails with mkdir /tmpfs/src/github/grpc/artifacts: file exists) is from here https://github.com/grpc/grpc/blob/f30db9db2320e533c1ffed9bc9b80ca7b2a457be/tools/run_tests/dockerize/build_and_run_docker.sh#L76


can't change sorting order in RemoteSourceControl - view

When sorting is toggled it switches to decreasing order - any further action seems to be ignored.
(clean build from develop branch)

not needed any more if https://github.com/chocolatey/ChocolateyGUI/tree/feature/Framework_Overhaul is merged back


Set current time before processing commands

This should address the problem described here by setting current workflow time before command processing happens. Before this change it was possible to trigger event loop before correct time was set, which means that workflow code would see the previous time instead of a new one.
Here we simply move setCurrentTimeMillis(currentTimeMillis) to the top of the workflowTaskStarted function. Thanks to  @GreyTeardrop for contributing a test that reproduces an issue, which I've included here.

Thank you, @vitarb! I can confirm this change fixes the GetVersionAndTimerTest as well as the issue with getVersion breaking workflow replay.


Custom HTTP headers are sent as lowercase

When executing a request with a non-standard header, the header is lowercased before sending to the server.
Technically this shouldn't matter, because HTTP headers are supposed to be case sensitive, but not everything behaves according to the spec.
I would expect the request to be sent EXACTLY as typed.

Hi,
Thank you for your issue report.
As for header case-insensitive, please, refer to the issue #491for detailed discussion and explanation. I'm closing this as a duplicate.
Thanks.


Properly grab FCM_APIKEY and FCM_MAX_RECIPIENTS from settings

I believe @Renzo04 accidentally removed the __init__ method from FCMMessage when submitting https://github.com/Chitrank-Dixit/django-fcm/pull/36.
See here:
https://github.com/Chitrank-Dixit/django-fcm/pull/36/commits/efd8a6f40c68b0f249d1863bcdde90b0591bd44a#r106833311

Oh... You are right... I delete the _chunk method too by mistake, can you add it in this pull request? So sorry!


Can we read the rules somehow from composer.json

Would it make sense to read the dependencies from composer.json files in the module directories?
Or for different frameworks like Magento from the module sequence config?

from my point of view it wouldn't make a lot of sense because the structure of module directories are not really your architecture.

In the Magento 2 project there are composer.json files for each of it's own modules. Was just an idea...

Can you go further and explain the background of this idea? Which architectural questions would this feature help you with?

The question to answer is, if all modules used are defined in the composer.jsom and if only modules declared in such way are used.
In magento core modules and own modules.
Core seems to do such already with manually defined dependencies and without the use of deptrac:
https://github.com/magento/magento2/blob/2.3-develop/dev/tests/static/testsuite/Magento/Test/Integrity/Library/DependencyTest.php
But it would be great if this would work across he core and with own modules with zero redundant (to composer.json) config via deptrac.

Could you provide an example composer.json and an example how it would be mapped to a deptrac configuration?

composer.json: https://github.com/magento/magento2/blob/2.3-develop/app/code/Magento/Catalog/composer.json
For the mapping:
take all the modules in the composer.json
(for example this one: https://github.com/magento/magento2/blob/2.3-develop/app/code/Magento/Authorization/composer.json)
Extract the psr-4 autoload path
Add this one to the allowed references in deptrac
Repeat with all composer modules
Important side node: Magento is maintained in one single repository and the composer modules are split from this main repository

paths:
  - ./app/code
exclude_files:
  - .*test.*
layers:
  - name: magento/module-catalog
    collectors:
      - type: className
	regex: Magento\\Catalog\\.*
  - name: magento/module-backend
    collectors:
      - type: className
	regex: Magento\\Backend\\.*
  - name: magento/module-catalog-inventory
    collectors:
      - type: className
	regex: Magento\\CatalogInventory\\.*
  - name: magento/module-catalog-rule
    collectors:
      - type: className
	regex: Magento\\CatalogRule\\.*
  - name: magento/module-catalog-url-rewrite
    collectors:
      - type: className
	regex: Magento\\CatalogUrlRewrite\\.*
  - name: magento/module-catalog-url-rewrite
    collectors:
      - type: className
	regex: Magento\\CatalogUrlRewrite\\.*

	....

ruleset:
  magento/module-catalog:
    - magento/module-backend
    - magento/module-catalog-inventory
  ....

I think we would need to have 2 specific parts in place for some basic architectural checks for Magento: Deptrac would need to read the etc/modules.xml for every module to see which other modules it depends on and then extract the namespaces from the composer.json files.
Since this is very Magento specific it might be a good idea to offer some extension points so that projects  could provide layer & ruleset rules dynamically and not via static configuration file. That way more logic could be implemented to generate that configuration. The other approach would obviously be to generate the yaml file by some 3rd party tool and then run deptrac against it, but then one would need to rebuild the yaml file when changes occur.

Refreshing if this is something still relevant in 2021. The links provided no longer work. If there is still demand, I can cooperate on some kind of solution.

No demand from my side currently.

In that case, I will close the issue for now.


Same as issue #443 write in prompt dialog box not working in taiko 1.2.3

Describe the bug
Unable to write into prompt dialog
To Reproduce
const { openBrowser, goto, prompt, accept, click, closeBrowser } = require('taiko');
(async () => {
try {
await openBrowser();
await goto('http://the-internet.herokuapp.com/javascript_alerts');
await prompt('I am a JS prompt', async () => await accept('something'));
await click('Click for JS Prompt');
} catch (e) {
console.error(e);
} finally {
await closeBrowser();
}
})();
Expected behavior
Text entered: something, but it has value entered: null
Versions:

Taiko: 1.2.3

gauge -v
Gauge version: 1.0.8
Commit Hash: 28617ea
Plugins
html-report (4.0.12)
js (2.3.15)
screenshot (0.0.1)
Same as issue #443, Works fine with Taiko version 1.1.0

Thanks for reporting, I could replicate the issue. Will try finding what broke the feature.


Output not formatted/colored

Hi, I'm just running test.py and in my windows cmd console instead of the colored text I get ←[92mSYMBOL: BTC/USD←[0m
etc
I'm running python 2.7.
Thanks!

Thanks! Will fix the colors under windows cmd soon )

colorama seems to work nicely.
https://pypi.python.org/pypi/colorama

I've turned python test output colors off temporarily, but we will be adding it back again with colorama when we are ready to announce websocket/async patches and split py2/py3. I will close this issue for now, but I will update you on the progress.


Blacklist for Mechanical Daisy

Describe your idea
I noticed you cant insert living wood for example, into the mechanical daisy, this prevents a conversion loop from happening. There is another mod called Botanical Additions that adds an elven wood to dreamwood conversion but since dreamwood isnt blacklisted it will continue on converting to normal living wood after. Would it be possible to get a tag blacklist so we can tag conversions like this to stop them from happening? Would be very useful.

What about another way: Only start a new recipe after the previous result was taken. So, you need to place a new input before it's processing again. Could break some existing automations, I could add a config value to disable this.

The behaviour @MelanX describes is how I anticipated the mechanical daisy to work when I implemented it in the first place. So I would vote for the current behaviour being treated as a bug (that apparently existed since the very first release) and therefore just fix it up (Which should be as easy as adding a this.workingTicks[i] >= 0 into this condition).
Also, I don't see a good reason for the botanical daisy to just keep on crafting as long as possible. I would guess that in 99% of the cases this is not what you want and every other machine in the mod also stops crafting after a single iteration.


Automatically linking issues using repo#number in messages

Relevant Issues
Closes #566
Still Need to add the check for the message is not contained in discord codeblock.
Screenshots

Additional Details

Did you:

[x] Join the Python Discord Community?
[ ] If dependencies have been added or updated, run pipenv lock?
[x] Lint your code (pipenv run lint)?
[x] Set the PR to allow edits from contributors?

@Akarys42 The PR is ready for review.

@Akarys42 The PR is ready for review.

@Xithrius @Akarys42 Mentioned all the requested changes!

@Xithrius @Akarys42 Mentioned all the requested changes!

Can you please add it to the mod-meta<PHONE_NUMBER>95947058) and mod-tools<PHONE_NUMBER>91098921) channels as well?

Can you please add it to the mod-meta<PHONE_NUMBER>95947058) and mod-tools<PHONE_NUMBER>91098921) channels as well?

Can you please add it to the mod-meta<PHONE_NUMBER>95947058) and mod-tools<PHONE_NUMBER>91098921) channels as well?

Alright! Will do that Zig.

Can you please add it to the mod-meta<PHONE_NUMBER>95947058) and mod-tools<PHONE_NUMBER>91098921) channels as well?

Alright! Will do that Zig.


Ubuntu 14.04 with creators update

For compatibility reasons I need an Ubuntu14.04 environment but at the same time I also need some of the fixes to the WSL that ship with the creator's update, which afaik installs ubuntu16.04 by default.
Is there a way to install 14.04 on a machine with the creator's update?

when you get creaters update you can stay with ubuntu 14.04 and you get the fixes as well.

@erdemece: Sorry, I should have mentioned that I'm talking about a PC that will be freshly installed. But yes, if there is no other option I'll probably first install Win10 Anniversary, install WSL and then upgrade to Creators.

@MikeGitb The Linux distribution that runs on WSL is not THAT important for it to work, because it works emulating linux userspace in general through translation of syscalls.
Check this repo https://github.com/RoliSoft/WSL-Distribution-Switcher
I only used it to install my ArchLinux on WSL, but according to the README.md, Ubuntu 14.04 should be an option, and you can always use a Docker container (instructions on the README file).

@mateusmedeiros: Thank you, that sounds very promising. I'll have a look.

@MikeGitb - Can you elaborate on "compatibility reasons"?  Does your workflow rely on specific versions of packages or something else?
Thanks!

@benhillis: This is mainly about consistent tooling: The real linux machines in my environment unfortunately still run ubuntu 14.04 with the default Versions of gcc, git, cmake etc..
As I need to share code and binaries with people working on those machines, using ubuntu 16.04 locally is a recipe for trouble.
I haven't actually checked if there are real incompatibilities, or if one can work around them by not using certain features. However, I've been burned by this in the past e.g. when trying to use. fedora for an embedded project:
I couldn't compile the same toolchain version of yocto as we used on the other machines (probably mainly due to the difference between gcc4.8 and gcc6.1) and the toolchain version that did compile on fedora produced incompatible binaries.
Now, I don't expect the same amount of trouble between Ubuntu 16 and 14 but I 'd like to avoid that situation all together.

@MikeGitb I've had various distros for projects before. Sometimes I've held back on upgrading to the distro-default gcc, or manually after installing force gcc to call some specific version. Would those kind of workarounds work for you? If you are upgrading an existing environment you could hold the tools you need until you upgrade on both sides.

@crcrewso: No, this question is not about updating an existing environment. Otherwise I'd just stay with the old ubuntu image.
Toolwise there are certainly workarounds, but quite frankly WSL looses a lot of it's appeal compared to a Linx-VM when I have to invest a lot of effort to manually install and maintain old tools in addition to what can be found in the official repository.
@Benhillis: Just to make this clear and I can close this issue: You are not planning to allow the user to choose between the ubuntu14.04 and 16.04 image upon a fresh install of wsl?

@MikeGitb - correct, when Creator's Update ships fresh installs will be 16.04.

@benhillis: Thanks for the clarification. I'll see how the solution proposed by @mateusmedeiros works out.


3.2.0 release

No rush here

mender-convert I have confirmed that it is incorrect. Mender server I just have a hunch... could you check some of them in your end and see what is going on?
Right now I have not too high confidence of our tooling in this regard so I need more time to review them all in detail (later, if you don't mind)

No rush here

Manually fixed mender-convert

Note that the components that were new to the tool, mender-convert and mender-configure-module, they both had wrong release notes. Do you think is a genuine bug in the tool or that somehow because it is "the first time" we process the release notes all the history was grabbed?


feat!: check if mnemonic is in wordlist, add unsafe impls

Suggested implementation to solve #1

@ex3ndr @talkol

However, we still can come up with guide to strongly recommend checking validity of mnemonics usingmnemonicValidate


Uwuifier is not on the replugged store

Do you want to maybe add Uwuifier to the replugged store?

i was told they wont accept it

i was told they wont accept it

Oh that's unfortunate


Test cmr_sg with freihand's checkpoint generates errors

I'm using cmr_sg with cmr_sg_res18_freihand.pt parameters, and applying that on my data creates some errors on images that seem ok. Could you please share some insights on what's going wrong here?

By the way, similar issues happen to the evaluation set of Freihand too:

Hi, please try the MobRecon (SpiralConv) model. Additionally, make sure to crop the image using the hand bounding box (1.3-time expansion).

Hi Sean,
Thanks a lot for the reply. Do you mind expanding upon what is the hand bounding box?


Install failed using Linuxbrew: No such file or directory - output/share/xmake/xmake

I install xmake using https://github.com/Linuxbrew/brew on Arch Linux, here is the error messages:
$ brew install --debug xmake
Updating Homebrew...
/home/guyskk/.linuxbrew/Library/Homebrew/brew.rb (Formulary::FormulaLoader): loading /home/guyskk/.linuxbrew/Library/Taps/homebrew/homebrew-core/Formula/xmake.rb
/home/guyskk/.linuxbrew/Library/Homebrew/build.rb (Formulary::FromPathLoader): loading /home/guyskk/.linuxbrew/Library/Taps/homebrew/homebrew-core/Formula/xmake.rb
==> Downloading https://github.com/waruqi/xmake/archive/v2.0.5.tar.gz
Already downloaded: /home/guyskk/.cache/Homebrew/xmake-2.0.5.tar.gz
==> ./install output
/home/guyskk/.linuxbrew/Library/Homebrew/debrew.rb:11:in `raise'
Errno::ENOENT: No such file or directory - output/share/xmake/xmake
1. raise
2. ignore
3. backtrace
4. irb
5. shell
Choose an action: 1
==> Kept temporary files
Temporary files retained at /tmp/xmake-20170116-21478-1qsehl5
Error: No such file or directory - output/share/xmake/xmake
/home/guyskk/.linuxbrew/Library/Homebrew/debrew.rb:11:in `raise'
/home/guyskk/.linuxbrew/Library/Homebrew/extend/pathname.rb:90:in `install_p'
/home/guyskk/.linuxbrew/Library/Homebrew/extend/pathname.rb:84:in `block in install'
/home/guyskk/.linuxbrew/Library/Homebrew/extend/pathname.rb:65:in `each'
/home/guyskk/.linuxbrew/Library/Homebrew/extend/pathname.rb:65:in `install'
/home/guyskk/.linuxbrew/Library/Taps/homebrew/homebrew-core/Formula/xmake.rb:18:in `install'
/home/guyskk/.linuxbrew/Library/Homebrew/debrew.rb:22:in `block in install'
/home/guyskk/.linuxbrew/Library/Homebrew/debrew.rb:97:in `debrew'
/home/guyskk/.linuxbrew/Library/Homebrew/debrew.rb:22:in `install'
/home/guyskk/.linuxbrew/Library/Homebrew/build.rb:137:in `block in install'
/home/guyskk/.linuxbrew/Library/Homebrew/formula.rb:1118:in `block in brew'
/home/guyskk/.linuxbrew/Library/Homebrew/formula.rb:1884:in `block in stage'
/home/guyskk/.linuxbrew/Library/Homebrew/resource.rb:98:in `block in unpack'
/home/guyskk/.linuxbrew/Library/Homebrew/extend/fileutils.rb:14:in `block in mktemp'
/home/guyskk/.linuxbrew/Library/Homebrew/extend/fileutils.rb:74:in `block in run'
/home/guyskk/.linuxbrew/Library/Homebrew/extend/fileutils.rb:74:in `chdir'
/home/guyskk/.linuxbrew/Library/Homebrew/extend/fileutils.rb:74:in `run'
/home/guyskk/.linuxbrew/Library/Homebrew/extend/fileutils.rb:13:in `mktemp'
/home/guyskk/.linuxbrew/Library/Homebrew/resource.rb:94:in `unpack'
/home/guyskk/.linuxbrew/Library/Homebrew/resource.rb:86:in `stage'
/home/guyskk/.linuxbrew/Library/Homebrew/formula.rb:1871:in `stage'
/home/guyskk/.linuxbrew/Library/Homebrew/formula.rb:1113:in `brew'
/home/guyskk/.linuxbrew/Library/Homebrew/build.rb:112:in `install'
/home/guyskk/.linuxbrew/Library/Homebrew/build.rb:189:in `<main>'

Please attempt to run 'brew update' first, or clone the dev branch of xmake to install it.
$ git clone https://github.com/tboox/xmake.git -b dev
$ cd ./xmake
$ sudo ./install

Thanks!

@waruqi clone the dev branch of xmake to install works, master branch also works well, brew install still fail.

Ok, you can use the master version now and I will update new version to linuxbrew in future.


Azure AD redirect login with modsecurity

I've problem with Azure AD redirect login throwing modSecurity
this what i see in logs :

942430 Restricted SQL Character Anomaly Detection (args): # of special characters exceeded (12):
"message": "Warning. Pattern match \"((?:[\\\\~\\\\!\\\\@\\\\#\\\\$\\\\%\\\\^\\\\&\\\\*\\\\(\\\\)\\\\-\\\\+\\\\=\\\\{\\\\}\\\\[\\\\]\\\\|\\\\:\\\\;\\\"\\\\'\\\\\\xc2\\xb4\\\\\\xe2\\x80\\x99\\\\\\xe2\\x80\\x98\\\\\\<\\>][^\\~\\!\\@\\#\\$\\%\\^\\&\\*\\(\\)\\-\\+\\=\\{\\}\\[\\]\\|\\:\\;\"\\'\\\xc2\xb4\\\xe2\x80\x99\\\xe2\x80\x98\\\\\\<\\\\>]*?){12})\" at ARGS:code ....",
942440 SQL Comment Sequence Detected
    "message": "Warning. Pattern match \"(/\\\\*!?|\\\\*/|[';]--|--[\\\\s\\\\r\\\\n\\\\v\\\\f]|(?:--[^-]*?-)|([^\\\\-&])#.*?[\\\\s\\\\r\\\\n\\\\v\\\\f]|;?\\\\x00)\" at ARGS:code ....",

Output of Azure AD redirect login is expected to be in the below format:
:provider => "azureactivedirectory",   :uid => "123456abcdef",   :info => {     :name => "John Smith",     :email =><EMAIL_ADDRESS>    :first_name => "John",     :last_name => "Smith"   },   :credentials => {     :code => "ffdsjap9fdjw893-rt2wj8r9r32jnkdsflaofdsa9"   },   :extra => {     :session_state => '532fgdsgtfera32',     :raw_info => {       :id_token => "fjeri9wqrfe98r23.fdsaf121435rt.f42qfdsaf",       :id_token_claims => {         "aud" => "fdsafdsa-fdsafd-fdsa-sfdasfds",         "iss" => "https://sts.windows.net/fdsafdsa-fdsafdsa/",         "iat" => 53315113,         "nbf" => 53143215,         "exp" => 53425123,         "ver" => "1.0",         "tid" => "5ffdsa2f-dsafds-sda-sds",         "oid" => "fdsafdsaafdsa",         "upn" =><EMAIL_ADDRESS>        "sub" => "123456abcdef",         "nonce" => "fdsaf342rfdsafdsafsads"       },       :id_token_header => {         "typ" => "JWT",         "alg" => "RS256",         "x5t" => "fdsafdsafdsafdsa4t4er32",         "kid" => "tjiofpjd8ap9fgdsa44"       }     }   }
Could you please let know if we should white-list these rules or do they have threats associated which needs to be fixed?

Hello @sithara ,
It looks like you are using OWASP Core Rule Set (CRS) rules.  Those rules are mostly intended to be generic, which means that the rules are not associated with a particular CVE (for example) that you could go ahead and patch.
Those types of generic rules are supposed to identify suspicious patterns in any context, but as a result, they can be prone to false positives.   See, for example, the comments associated with rule 942430: 'Expect a lot of false positives with this rule.'
If you want to leave the rule mostly in place but get rid of a particular false positive, one option is to remove the target with another rule.  For example, you could test for the URI and then use ctl:ruleRemoveTargetById to exclude a particular argument name from being tested..
(Note that if you have questions about the content of CRS rules, there is a separate group that creates and manages them: https://github.com/SpiderLabs/owasp-modsecurity-crs )


Support librdkafka in the ManagedBalancedConsumer

Traceback (most recent call last):
  File "pyconsume.py", line 30, in <module>
    use_rdkafka = True
  File "/usr/local/lib/python2.7/dist-packages/pykafka/topic.py", line 214, in get_balanced_consumer
    return cls(self, self._cluster, consumer_group, **kwargs)
  File "/usr/local/lib/python2.7/dist-packages/pykafka/managedbalancedconsumer.py", line 188, in __init__
    self.__class__.__name__))
ImportError: use_rdkafka is not available for ManagedBalancedConsumer
Exception AttributeError: "'ManagedBalancedConsumer' object has no attribute '_running'" in <bound method Ma
nagedBalancedConsumer.__del__ of <pykafka.managedbalancedconsumer.ManagedBalancedConsumer at 0x7f5a65a31b10
(consumer_group=KAFKA_01)>> ignored

At the time the ManagedBalancedConsumer was written, librdkafka didn't support Kafka-managed consumer groups, so this ImportError was added to make that clear. We should reexamine where librdkafka's support is these days, and fix this if possible. This will probably happen during Parse.ly's internal upgrade to latest Kafka later this year.

than you for your kindly reply


Validation autotest reports failed directories

Running --validate results in 14 failed directories even though all the tests pass; likely due to a null pass criteria.

It appears that the validate() function does not update the n_passed value during the scan of autotest folders.

Currently 19/20 directories "fail"

Currently 19/20 directories "fail"


Inconsistent input and output volume sizes

I'm running an inference using as input an image A with size (299, 395, 297). The inference output is (299, 396, 297).
A:
Input voxel size is (0.46645769476890553, 0.46645772457122797, 0.4664466083049773)
pixdim parameter in config file is 0.5, 0.5, 0.5
Output voxel size is (0.4664577245712279, 0.4664577245712279, 0.4664466381072999)
If I set pixdim to 0.466, 0.466, 0.466, input and output for image A have the same size, but image B is inconsistent:
B
Input size: (402, 465, 384)
Output size: (403, 465, 385)

Right, following your code @fepegar our goal is to have always size_a == size_a_reconstructed_rounded, to achive that we need to compensate the quantisation error of the build-in round function. My concern is that round behaves differently in python2 and 3, we need a bit of extra care when implementing this function.


refactor: cleanup unused imports

Files founded by Dart Analysis tab in Android Studio
useful tip: ctrl + alt + O to rearange used imports in opened file :)

#152 duplicate.


[BUG] NTP connection check unreailable

Describe the bug

Something is wrong with the NTP connection check, sometimes it works, sometimes it doesn't, and it seems to be rather 50/50
However it does work when trying from the tty:

To Reproduce
Steps to reproduce the behavior:

Try install harvester via ISO

Expected behavior

Support bundle

Environment:

Harvester ISO version: Nightly from 2021-10-04
Underlying Infrastructure (e.g. Baremetal with Dell PowerEdge R630): Virtual

Additional context
Add any other context about the problem here.

+1 reproduced

Hi @Jellyfrog, for NTP validation, we send a simple NTP request to check whether servers can work, so it depends on network quality.
@yasker, do you think we need to add a retry mechanism for NTP validation. We already prolong the timeout for it. I tried to add a retry mechanism, but @guangbochen thinks it may take long time on the NTP page.

Can we include multiple NTP servers by default? Will the system automatically check the next one if the first one doesn't work?
Also I suspect there is a race condition regarding the network configuration behind the scene. For fixing that we need to reproduce the issue first in the lab.

Yeah, we can give multiple NTP servers. Even if we don't give any NTP server, we still have default FallbackNTPServers in the system.

The fallback mechanism looks good at the moment. We probably don't have time to find the root cause in a couple of days before the code freeze. Move to v1.0.0.

@TachunLin
This still fails when the server got a ipv4 and ipv6 answer.
$ host ntp.se
ntp.se has address <IP_ADDRESS>
ntp.se has IPv6 address 2a01:3f7::1

@TachunLin This still fails when the server got a ipv4 and ipv6 answer.
$ host ntp.se
ntp.se has address <IP_ADDRESS>
ntp.se has IPv6 address 2a01:3f7::1

Hi @Jellyfrog, thanks for the comment. We use UDP for NTP validation. Since UDP is not reliable, we update the mechanism from validating one IP address to validating each IP address in domain lookup. ntp.se can only get 2 IP addresses, so validation may fail sometimes. We haven't added retry mechanism. For validation again, you can try to press Enter to the next page and press Esc to NTP setting page.
Even if validation is failed, we still write the input to /etc/systemd/timesyncd.conf after installation is finished. Also, even if the input is a wrong NTP domain, we still have the default FallbackNTPServers list in the system.

Hi, thanks for a quick and verbose answer.
This is not however what's wrong, its trying to validate the ipv6 address tho ive only setup a ipv4


Viewpoints

Hi @musyoku
Thank you for your source code of gqn.
Can you give me an instruction (maybe interpretation in pdf file)  about the computing process of viewpoint?
Thank you for your help.
Best wishes,
Mingjia Chen

Do you mean equation S5?

Hi @musyoku
thank you for your reply,
I mean the process of converting real image and viewpoint to .tfrecord file,
can you give me an example code?
thank you,
mingjia

sorry for late reply.
I am developing a new renderer and will add a tfrecord example.
https://github.com/musyoku/gqn-dataset-renderer


[BUG] Base64 Decode padding error

Functions/Encoding/Encode.cs -> FromBase64()
Currently it is adding too many padding bytes.
If you try to decode T0I it should add 1 padding char to make it a block of 4 chars, instead its adding 3. which causes decode error.
to fix.
if (remainder != 0) toDecode = toDecode.PadRight(toDecode.Length + (4 - remainder), '=');
Version, latest commit

Hey, that's awesome. Why don't you make a pull request instead so you can both show up as a contributor? Let me know ^_^


v4 docs Popovers - confusion with doc class names

Extending/elaborating of v3 docs for Popovers introduced confused names
for doc example classes.  Though v3 docs had similar confusion also.
/docs/assets/scss/_component-examples.scss defines class name
bd-example-popover.  In file components/popover.md could be found
used class names bd-example-popover, bd-example-popover, and
bd-popover.
bd-popover was shown in page example code which is bad.  Trying out
either .popover or .bd-example-popover did not produce useful
results, so this change simply deletes these references.
bd-example-popovers was 'corrected' to bd-example-popover in
the example "Live demo / Four directions".  This added a background
which however looks out of place for that example, whereas the existing
use in structured example "Static demo" looks nice.  Should the class
have been deleted instead in "Four directions"?
Also one spelling typo corrected.

Thanks! Merged as e544bf4cf8af64a2a45ab9338fc4af63ba3049e1.


Adding aiida-fleur maintainers to feedstock

Comment:
Hey @chrisjsewell I noticed that you uploaded aiida-fleur to conda-forge. Thanks for this effort.
I think it would be good if atleast one aiida-fleur maintainer is also added as a maintainer of this feedstock
I would volunteer for this. I am already a maintainer for these closely connected feedstocks

Main FLEUR code https://github.com/conda-forge/fleur-feedstock
IO/utils package for aiida-fleur https://github.com/conda-forge/masci-tools-feedstock

The key thing for me, above the PyPI release, is to have this dependency constraint with the actual simulation code, so that e.g. here we are saying that aiida-fleur=1.3.1 is compatible with fleur>=1,<7


Fireplaces are warm, books are burnable, burn papers with fireplaces

About the PR

Fireplaces and bonfires will now passively heat the air around them to 305K (31.5C). Feeling cold? Come stop by the library.

Fireplaces and bonfires are now treated as constantly ignited ignition sources. Plasma leak in the library? Oh... unfortunate.

Books are now burnable in the same way that paper is. This does not apply to guidebooks.

Flammable objects now have an AfterInteract event. When using a flammable object on something else that is hot, like a lighter or fireplace, it will now ignite.

Previously, you were only capable of lighting something by using the lit object on the paper. This didn't work with fireplaces, because you don't hold a fireplace in your hand. So this behavior was added to work in reverse. Clicking on a fireplace does not ignite yourself with this added behavior.
Why / Balance

I want my fireplace to warm me up. I want to roleplay burning my books in my fireplace for warmth when I'm dying of cold.
Technical details

Added the RadiantTemperatureComponent/System. This will actively heat or cool down the air on the tile the entity is until it reaches the specified goal temperature. Whether it heats or cools is determined by the set rate of change.

Bonfires and fireplaces use the RadiantTemperature component and heat air to a comfortable 305K (heat damage is taken at 325K).

FlammableSystem's AfterInteractEvent is more or less just the copy/paste of what happens when you use the lit object on the flammable one, but in reverse with the targets.

Books more or less received a copy and paste of whatever made paper flammable.

Media

https://github.com/user-attachments/assets/ebb8dcc1-5f6e-4bcc-a910-0dbe2c3bd595
https://github.com/user-attachments/assets/924fdd7f-ec7d-4ba0-b53d-0b2a8c132f01
Atmos Device Update
https://github.com/user-attachments/assets/b87de446-c26a-4c6e-bdd2-c87a51986ed4
Requirements

[x] I have read and am following the Pull Request and Changelog Guidelines.
[x] I have added media to this PR or it does not require an ingame showcase.

No, it just works as if it's a lit welder or lighter. Interacting with it doesn't light yourself on fire either in my testing.
Not sure about the cooking.

Consume oxygen, produce co2?


Missing flow comment on index file

Flow types don't appear to be exporting from the top-level index:
import { fromGlobalId } from 'graphql-relay'
fromGlobalId is returned as the empty type.
Please add the missing // @flow comment, assuming there's nothing prohibiting doing so.

I just noticed that the build is not exporting flow types at all. :(

v0.5.2 (just released) comes with Flow type definitions: https://github.com/graphql/graphql-relay-js/releases/tag/v0.5.2

@wincent how can I setup my .flowconfig to make flow find graphql-relay type definitions (.js.flow files) ?

figure it out
on .flowconfig
[libs]
node_modules/graphql-relay/lib/index.js.flow


Z2-Converter: eth_estimateGas has mismatched output

Running eth_estimateGas shows "Error: out of gas" in zq1 while zq2 says "execution reverted"
curl --request POST \
  --url http://<IP_ADDRESS>:4201/ \
  --header 'Content-Type: application/json' \
  --data '{
    "id": "1",
    "jsonrpc": "2.0",
    "method": "eth_estimateGas",
    "params": [{"from": "0xf14be0c39e277ceac2db786e8b6de76bba58e745",	"data":"0x638860eb00000000000000000000000000000000000000000000000000000000000001a000000000000000000000000000000000000000000000000000000000000001e000000000000000000000000000000000000000000000000000000000000000007b16048791255212eec9878c290cecf8947b3506015bd10f90741144d9b81e8a000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000002200000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000006400000000000000000000000000000000000000000000000000000000000002ee00000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000f14be0c39e277ceac2db786e8b6de76bba58e74519814a5f9559a0c1139338be373231000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000097867686667636867640000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000358474800000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000",
"gas": "0x2e630",
"to":"0x2269bceb3f4e0aa53d2fc43b1b7c5c5d13b119a5",
"value":"0x0"}]
}'

 ZQ2 Output (eth_estimateGas_6937cb65_ZQ2.json):
{
  "jsonrpc": "2.0",
  "id": 1,
  "error": {
    "code": 3,
    "message": "execution reverted"
  }
}

 ZQ1 Output (eth_estimateGas_6937cb65_ZQ1.json):
{
  "error": {
    "code": -1,
    "data": null,
    "message": "Error: out of gas"
  },
  "id": 1,
  "jsonrpc": "2.0"
}

@bzawisto could you have a look at this if you get a chance? Looks like you worded on this last and there's a few different error return paths so you might know better which one's returning the wrong one. No worries if not, I'll get to it in time


Problem with CupertinoContextMenu

Steps to Reproduce

I implemented CupertinoContextMenu and I can't expand the width of actions buttons

Expected results:

Actual results:

Code sample
@override
  Widget build(BuildContext context) {
    return CupertinoContextMenu(
      actions: [
        Material(
          child: _optionButton(),
        ),
        Material(
          child: _optionButton(),
        ),
        Material(
          child: _optionButton(),
        ),
      ],
      previewBuilder: (context, _, __) {
        return _cupertinoModalPreview(context);
      },
      child: Container(
        height: 60,
        color: Colors.transparent,
      ),
    );
  }

Logs
Doctor summary (to see all details, run flutter doctor -v):
[✓] Flutter (Channel stable, 2.8.1, on macOS 12.1 21C52 darwin-arm, locale
    es-419)
[✓] Android toolchain - develop for Android devices (Android SDK version 32.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 13.2.1)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2020.3)
[✓] VS Code (version 1.63.2)
[✓] Connected device (3 available)

• No issues found

Hi @Carl0395, the sample you have provided is not complete.
Please provide a complete minimal reproducible code sample.
Thank you

Hi @danagbemava-nc, I was update the issue with a complete code sample.
Thanks for respond

Hi @Carl0395, there's an open issue related to the fidelity of the CupertinoContextMenu open in https://github.com/flutter/flutter/issues/92260.
In the meantime, you can fix the overflow error by wrapping your label with either a Flexible or an Expanded


Oxygen Vent not working

Version of Advanced Rocketry
[1.12.2 1.5.0 139 ]
Have you verified this is an issue in the latest unstable build
N
Version of LibVulpes
[insert here]
Version of Minecraft
[1.12.2]
Crash report or log (if applicable)
[None]
Description of the problem
Space Station's Oxygen Vent not working, despite all requirements being met and no leaks being present. Double checked a lot of times, might be Chisel's blocks.

Can you run the O2 tracer?

Does the oxygen vent have a redstone signal?

Can you run the O2 tracer?  There should be a button inside the vent for that.
I don't know what the O2 tracer is. Theres this weird green button with "Trace" on it, if that's what you're talking about.

Does the oxygen vent have a redstone signal?
I have it making noise, indicating that it is infact active. I have a lever next to it for good measure.

Nevermind, it just takes an entire real life day to update.