Row AVG accumulator support Decimal type

Which issue does this PR close?

Closes #5892.
Rationale for this change
Improve the Aggregate performance for decimal type

What changes are included in this PR?

Are these changes tested?
I had test this on my local Mac.
For TPCH-q17, there is at about 25% improvement.
Before this PR:
Running benchmarks with the following options: DataFusionBenchmarkOpt { query: Some(17), debug: false, iterations: 3, partitions: 1, batch_size: 8192, path: "./parquet_data", file_format: "parquet", mem_table: false, output_path: None, disable_statistics: false, enable_scheduler: false }
Query 17 iteration 0 took 2623.2 ms and returned 1 rows
Query 17 iteration 1 took 2580.4 ms and returned 1 rows
Query 17 iteration 2 took 2575.7 ms and returned 1 rows
Query 17 avg time: 2593.11 ms
After this PR:
Running benchmarks with the following options: DataFusionBenchmarkOpt { query: Some(17), debug: false, iterations: 3, partitions: 1, batch_size: 8192, path: "./parquet_data", file_format: "parquet", mem_table: false, output_path: None, disable_statistics: false, enable_scheduler: false }
Query 17 iteration 0 took 1920.4 ms and returned 1 rows
Query 17 iteration 1 took 1877.0 ms and returned 1 rows
Query 17 iteration 2 took 1878.1 ms and returned 1 rows
Query 17 avg time: 1891.81 ms
For TPCH-q18, it seems there is little improvement.
Before this PR:
Running benchmarks with the following options: DataFusionBenchmarkOpt { query: Some(18), debug: false, iterations: 3, partitions: 1, batch_size: 8192, path: "./parquet_data", file_format: "parquet", mem_table: false, output_path: None, disable_statistics: false, enable_scheduler: false }
Query 18 iteration 0 took 1359.0 ms and returned 57 rows
Query 18 iteration 1 took 1285.2 ms and returned 57 rows
Query 18 iteration 2 took 1278.0 ms and returned 57 rows
Query 18 avg time: 1307.40 ms
After this PR:
Running benchmarks with the following options: DataFusionBenchmarkOpt { query: Some(18), debug: false, iterations: 3, partitions: 1, batch_size: 8192, path: "./parquet_data", file_format: "parquet", mem_table: false, output_path: None, disable_statistics: false, enable_scheduler: false }
Query 18 iteration 0 took 1335.8 ms and returned 57 rows
Query 18 iteration 1 took 1257.7 ms and returned 57 rows
Query 18 iteration 2 took 1237.9 ms and returned 57 rows
Query 18 avg time: 1277.12 ms

Are there any user-facing changes?

@andygrove @Dandandan @yahoNanJing

For query 18, I think the plan is problematic, it is the Join order and build side selection, the bottleneck is not the Aggregations.
=== Physical plan with metrics ===
SortExec: expr=[o_totalprice@4 DESC,o_orderdate@3 ASC NULLS LAST], metrics=[output_rows=57, elapsed_compute=11.461µs, spill_count=0, spilled_bytes=0]
  AggregateExec: mode=Single, gby=[c_name@1 as c_name, c_custkey@0 as c_custkey, o_orderkey@2 as o_orderkey, o_orderdate@4 as o_orderdate, o_totalprice@3 as o_totalprice], aggr=[SUM(lineitem.l_quantity)], metrics=[output_rows=57, elapsed_compute=49.165µs, spill_count=0, spilled_bytes=0, mem_used=0]
    CoalesceBatchesExec: target_batch_size=8192, metrics=[output_rows=399, elapsed_compute=2.681µs, spill_count=0, spilled_bytes=0, mem_used=0]
      HashJoinExec: mode=CollectLeft, join_type=LeftSemi, on=[(Column { name: "o_orderkey", index: 2 }, Column { name: "l_orderkey", index: 0 })], metrics=[output_rows=456, input_rows=456, input_batches=2, build_input_batches=733, build_input_rows=6001215, output_batches=2, build_mem_used=806510152, build_time=676.460128ms, join_time=2.88546ms]
        ProjectionExec: expr=[c_custkey@0 as c_custkey, c_name@1 as c_name, o_orderkey@2 as o_orderkey, o_totalprice@3 as o_totalprice, o_orderdate@4 as o_orderdate, l_quantity@6 as l_quantity], metrics=[output_rows=6001215, elapsed_compute=116.294µs, spill_count=0, spilled_bytes=0, mem_used=0]
          CoalesceBatchesExec: target_batch_size=8192, metrics=[output_rows=6001215, elapsed_compute=50.883µs, spill_count=0, spilled_bytes=0, mem_used=0]
            HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(Column { name: "o_orderkey", index: 2 }, Column { name: "l_orderkey", index: 0 })], metrics=[output_rows=6001215, input_rows=6001215, input_batches=733, build_input_batches=184, build_input_rows=1500000, output_batches=733, build_mem_used=177373616, build_time=154.423989ms, join_time=268.907576ms]
              ProjectionExec: expr=[c_custkey@0 as c_custkey, c_name@1 as c_name, o_orderkey@2 as o_orderkey, o_totalprice@4 as o_totalprice, o_orderdate@5 as o_orderdate], metrics=[output_rows=1500000, elapsed_compute=34.671µs, spill_count=0, spilled_bytes=0, mem_used=0]
                CoalesceBatchesExec: target_batch_size=8192, metrics=[output_rows=1500000, elapsed_compute=14.97µs, spill_count=0, spilled_bytes=0, mem_used=0]
                  HashJoinExec: mode=CollectLeft, join_type=Inner, on=[(Column { name: "c_custkey", index: 0 }, Column { name: "o_custkey", index: 1 })], metrics=[output_rows=1500000, input_rows=1500000, input_batches=184, build_input_batches=19, build_input_rows=150000, output_batches=184, build_mem_used=14652720, build_time=7.173373ms, join_time=64.614167ms]
                    ParquetExec: limit=None, partitions={1 group: [[Users/mingmwang/gitrepo/apache/arrow-datafusion/benchmarks/parquet_data/customer/part-0.parquet]]}, projection=[c_custkey, c_name], metrics=[output_rows=150000, elapsed_compute=1ns, spill_count=0, spilled_bytes=0, mem_used=0, pushdown_rows_filtered=0, num_predicate_creation_errors=0, predicate_evaluation_errors=0, row_groups_pruned=0, bytes_scanned=566600, page_index_rows_filtered=0, pushdown_eval_time=2ns, time_elapsed_scanning_total=5.384791ms, time_elapsed_processing=5.024293ms, time_elapsed_scanning_until_data=2.83875ms, time_elapsed_opening=787.167µs, page_index_eval_time=2ns]
                    ParquetExec: limit=None, partitions={1 group: [[Users/mingmwang/gitrepo/apache/arrow-datafusion/benchmarks/parquet_data/orders/part-0.parquet]]}, projection=[o_orderkey, o_custkey, o_totalprice, o_orderdate], metrics=[output_rows=1500000, elapsed_compute=1ns, spill_count=0, spilled_bytes=0, mem_used=0, pushdown_rows_filtered=0, num_predicate_creation_errors=0, predicate_evaluation_errors=0, row_groups_pruned=0, bytes_scanned=13916402, page_index_rows_filtered=0, pushdown_eval_time=2ns, time_elapsed_scanning_total=112.261704ms, time_elapsed_processing=45.363041ms, time_elapsed_scanning_until_data=6.063625ms, time_elapsed_opening=549.5µs, page_index_eval_time=2ns]
              ParquetExec: limit=None, partitions={1 group: [[Users/mingmwang/gitrepo/apache/arrow-datafusion/benchmarks/parquet_data/lineitem/part-0.parquet]]}, projection=[l_orderkey, l_quantity], metrics=[output_rows=6001215, elapsed_compute=1ns, spill_count=0, spilled_bytes=0, mem_used=0, pushdown_rows_filtered=0, num_predicate_creation_errors=0, predicate_evaluation_errors=0, row_groups_pruned=0, bytes_scanned=12170874, page_index_rows_filtered=0, pushdown_eval_time=2ns, time_elapsed_scanning_total=324.056333ms, time_elapsed_processing=50.1033ms, time_elapsed_scanning_until_data=2.464666ms, time_elapsed_opening=2.0565ms, page_index_eval_time=2ns]
        ProjectionExec: expr=[l_orderkey@0 as l_orderkey], metrics=[output_rows=57, elapsed_compute=458ns, spill_count=0, spilled_bytes=0, mem_used=0]
          CoalesceBatchesExec: target_batch_size=8192, metrics=[output_rows=57, elapsed_compute=19.342µs, spill_count=0, spilled_bytes=0, mem_used=0]
            FilterExec: SUM(lineitem.l_quantity)@1 > Some(30000),25,2, metrics=[output_rows=57, elapsed_compute=1.093341ms, spill_count=0, spilled_bytes=0, mem_used=0]
              AggregateExec: mode=Single, gby=[l_orderkey@0 as l_orderkey], aggr=[SUM(lineitem.l_quantity)], metrics=[output_rows=1500000, elapsed_compute=434.341183ms, spill_count=0, spilled_bytes=0, mem_used=0]
                ParquetExec: limit=None, partitions={1 group: [[Users/mingmwang/gitrepo/apache/arrow-datafusion/benchmarks/parquet_data/lineitem/part-0.parquet]]}, projection=[l_orderkey, l_quantity], metrics=[output_rows=6001215, elapsed_compute=1ns, spill_count=0, spilled_bytes=0, mem_used=0, pushdown_rows_filtered=0, num_predicate_creation_errors=0, predicate_evaluation_errors=0, row_groups_pruned=0, bytes_scanned=12170874, page_index_rows_filtered=0, pushdown_eval_time=2ns, time_elapsed_scanning_total=443.876134ms, time_elapsed_processing=49.172503ms, time_elapsed_scanning_until_data=2.226959ms, time_elapsed_opening=844.959µs, page_index_eval_time=2ns]

🎉


peer.AddPeer() fun should return an error, not a bool

closed by https://github.com/rstefan1/bimodal-multicast/commit/c17cd9b17b03e1c34bb6709d52ff502ca5b8a0be


Add [MEXC www.mexc.com] #exchange #custodian #memo-required GCDBX7…S4W7VS

Address: GCDBX7GTQWJFTAJCJUGV4KXJZE6Q527YRLW75GYDJ2ODSVBOXCS4W7VS
Tags: exchange custodian memo-required
Title: MEXC  Domain: www.mexc.com
Requested by @dragon2fly

Hot wallet of MEXC exchange

@Dragon2fly can you explain what issues you are having?
If you are requesting that this address be labeled as an exchange, can you please give contanct information through their website or official email that we can use to verify that is an mexc.com exchange Stellar Wallet address.

Yes, please label this address.
You can ask questions here: https://support.mexc.com/hc/en-001/requests/new
Or simply log in, go to the deposit page, and select XLM. The wallet address is there.

I am still waiting for a reply from the support team. I think they misunderstood my question initially as somehow I wanted to list some new token on there exchange. Then they got defensive thinking that I wanted information about somebody's personal account. Supposedly they've passed me off to someone who can answer my question, since it looks like support doesn't really know.

@Dragon2fly I have had a few communications with Eric(support) Eric(MEXC) on the support team and they have not indicated any intrest in labeling this address. If you have contact with them and this is not the DEV team's desire please have them contact me.
I understand that this is the Holiday times and maybe further communication is still to come. This is the last communication and I will wait to see if Shawn contacts me.
"Hi apologized for any delay caused. The person-in-charge (Shawn) which has been CCs in this thread will revert back to your email at soonest.
Seek for your understanding and patience on this matter.
Thanks.
MEXC"

Confirmed. Thanks @Dragon2fly


[BUG] Timeline is blank after pulled from repo

Describe the bug
I've recently made a D&D wiki for my friends, and hosted it on github for them to clone and pull from. I made a timeline following tutorials/docs/instructions and it works perfectly fine on my end. However, when my friends pull the updates, the timeline page is blank and empty. The only way to get it to show up is if they were to go into each individual event page and go into "edit mode". Once they do that, they're able to see the timeline show up!
Only one of my friends didn't have this issue, and the only difference I can think of is that she's using a mac, while everyone else uses windows.
Thank you so much for the help! I really appreciate it. I tried to search for solutions online and the Obsidian discord, but wasn't able to find any unfortunately. :(
To Reproduce
I reproduced a test repo that has this problem: https://github.com/rleong/Test-Wiki
I have a separate laptop and tried to replicate the problem by cloning the repo and opening it up, and the problem did replicate. The timeline page is blank until you go into the event notes one by one and clicking on "edit". Then, it would re-appear.
Expected behavior
Without this issue, I expected that the timeline would show up pre-populated from all the events I've put into it.
Screenshots
Since it's just a blank note, there isn't anything to screenshot.
Desktop (please complete the following information):

OS: Windows

Smartphone (please complete the following information):
None

Heya @rleong, thanks for bringing this up
Unfortunaly your test-wiki repo works on my end, so nothing to dig on my end
I assume your friends turned on comunity plugins in obsidian's settings ?

Maybe using this command would yield some results ?

Do they have any errors showing up in the developer console (ctrl+shift+i on windows to open it)
Maybe their plugin settings have not been transfered properly ?
Are they running obsidian 0.15 or higher ?
Don't hesitate to bring further research up to me I'll try my best to help you out


Request: New icon for blogs

Love your icon collection! Looking to add a number of social network icons to our website. We would love to see an icon for blogs! Thanks!

second that as well as Google Blogger


x/pkgsite: package removal request for github.com/jfrech/tbp

@suzmue Would you please have a look at my removal request?

there isn't any information in here for us to evaluate this request

What information should I provide? I am writing the request from the only GitHub account which could have owned the now deleted repository with the same name as the package which is known to the pkgsite by only a fully retracted v0 name.
I would like for you to purge the pkgsite cache.

@seankhliao What must I do for the pkgsite team to honour my removal request?

@seankhliao I followed https://pkg.go.dev/about#removing-a-package's link and only added the import path. If there are other pieces of information I must provide before my removal request can be considered, could you please tell me?

@seankhliao Would it be fine if I opened another issue with my removal request? I don't quite understand why this one is being ignored. I also would like to know what information is necessary to provide when filing a package removal request.

Resolved in #66920.
"About pkgsite"'s "file a request" link (cf. https://pkg.go.dev/about#removing-a-package [2024-04-27]) is different to "New Issue"'s (cf. https://github.com/golang/go/issues/new/choose [2024-04-27]).


[bug] Nextjs 13.x + RainbowKit 2.x + Vercel, online deployment fails, local dev and build are fine

Is there an existing issue for this?

[X] I have searched the existing issues

RainbowKit Version
2.0.1
wagmi Version
2.5.7
Current Behavior
I upgraded Rainbow from 1.x to 2.x this afternoon, including viem and wagmi to keep it up to date, and have been experiencing remote npm package conflicts and versioning issues when deploying Vercel, but local development and compilation is fine, which is very strange.
Here is the log of Vercel remote compilation.
[11:46:01.690] Running build in Washington, D.C., USA (East) – iad1
[11:46:01.808] Cloning github.com/xxx（our project path） (Branch: alpha, Commit: 399aa63)
[11:46:02.866] Cloning completed: 1.057s
[11:46:12.534] Restored build cache
[11:46:12.614] Running "vercel build"
[11:46:13.343] Vercel CLI 33.5.3
[11:46:14.730] Installing dependencies...
[11:46:23.227] npm ERR! code ERESOLVE
[11:46:23.230] npm ERR! ERESOLVE could not resolve
[11:46:23.230] npm ERR!
[11:46:23.230] npm ERR! While resolving<EMAIL_ADDRESS>[11:46:23.230] npm ERR! Found<EMAIL_ADDRESS>[11:46:23.230] npm ERR! node_modules/viem
[11:46:23.231] npm ERR<EMAIL_ADDRESS>from the root project
[11:46:23.231] npm ERR!   peer<EMAIL_ADDRESS>from<EMAIL_ADDRESS>[11:46:23.231] npm ERR!   node_modules/wagmi
[11:46:23.231] npm ERR<EMAIL_ADDRESS>from the root project
[11:46:23.231] npm ERR!     peer<EMAIL_ADDRESS>|| ~1.1.0 || ~1.2.0 || ~1.3.0 || ~1.4.0" from<EMAIL_ADDRESS>[11:46:23.231] npm ERR!     node_modules/@rainbow-me/rainbowkit
[11:46:23.231] npm ERR<EMAIL_ADDRESS>from the root project
[11:46:23.231] npm ERR!   2 more (@wagmi/connectors, @wagmi/core)
[11:46:23.231] npm ERR!
[11:46:23.231] npm ERR! Could not resolve dependency:
[11:46:23.231] npm ERR! peer<EMAIL_ADDRESS>|| ^1.0.0" from<EMAIL_ADDRESS>[11:46:23.231] npm ERR! node_modules/@rainbow-me/rainbowkit
[11:46:23.232] npm ERR<EMAIL_ADDRESS>from the root project
[11:46:23.232] npm ERR!
[11:46:23.232] npm ERR! Conflicting peer dependency<EMAIL_ADDRESS>[11:46:23.232] npm ERR! node_modules/viem
[11:46:23.232] npm ERR!   peer<EMAIL_ADDRESS>|| ^1.0.0" from<EMAIL_ADDRESS>[11:46:23.232] npm ERR!   node_modules/@rainbow-me/rainbowkit
[11:46:23.232] npm ERR<EMAIL_ADDRESS>from the root project
[11:46:23.232] npm ERR!
[11:46:23.232] npm ERR! Fix the upstream dependency conflict, or retry
[11:46:23.232] npm ERR! this command with --force or --legacy-peer-deps
[11:46:23.232] npm ERR! to accept an incorrect (and potentially broken) dependency resolution.
[11:46:23.232] npm ERR!
[11:46:23.232] npm ERR!
[11:46:23.233] npm ERR! For a full report see:
[11:46:23.233] npm ERR! /vercel/.npm/_logs/2024-03-05T03_46_18_362Z-eresolve-report.txt
[11:46:23.233]
[11:46:23.233] npm ERR! A complete log of this run can be found in: /vercel/.npm/_logs/2024-03-05T03_46_18_362Z-debug-0.log
[11:46:23.249] Error: Command "npm install" exited with 1
[11:46:26.702]
Expected Behavior
Remote deployment is consistent with local development and packaging performance.
Steps To Reproduce
No response
Link to Minimal Reproducible Example (CodeSandbox, StackBlitz, etc.)
https://github.com/rainbow-me/rainbowkit/issues/1766
Anything else?
No response

@PaulNext Can you share a small reproducible example ? That PR you linked already was resolved by that user which is unknown exactly how they solved it.
Can you try running npm install --legacy-peer-deps in vercel ? Also i don't see anything mentioning about 2.x in your errors. Can you share your package.json file as well ?

Here is also the same repo i forked from the PR you've mentioned, just with a working build: https://github.com/KosmosKey/build-onchain-apps

--legacy-peer-deps

How to run this command on vercel to update package.json?

@PaulNext You can do this through Settings -> General -> Build & Development Settings

But please make sure your package.json has the correct dependencies since i don't see any @rainbow-me/rainbowkit version 2 mentioned anywhere

@PaulNext You can do this through Settings -> General -> Build & Development Settings

But please make sure your package.json has the correct dependencies since i don't see any @rainbow-me/rainbowkit version 2 mentioned anywhere

Ok Sir. thank you very much for your help, I'll follow this configuration again and retry.
I confirmed that my RainbowKit is the latest version 2.0.1.

why is deploying the alpha branch pulling packages from other branches, is it utilizing the cache?
i retried this forceinstall package command and now i get a new error, i'll post the log for you

[00:40:17.765] Running build in Washington, D.C., USA (East) – iad1
[00:40:17.877] Cloning github.com/xxx （our project path） (Branch: alpha, Commit: e3ca6b7)
[00:40:17.887] Skipping build cache, deployment was triggered without cache.
[00:40:18.890] Cloning completed: 1.013s
[00:40:19.198] Running "vercel build"
[00:40:19.681] Vercel CLI 33.5.3
[00:40:20.051] Running "install" command: `npm install --legacy-peer-deps`...
[00:41:27.467] npm WARN deprecated<EMAIL_ADDRESS>Please use @jridgewell/sourcemap-codec instead
[00:41:28.440] npm WARN deprecated<EMAIL_ADDRESS>This package has been deprecated and is no longer maintained. Please use @rollup/plugin-terser
[00:41:28.869] npm WARN deprecated<EMAIL_ADDRESS>this library is no longer supported
[00:41:29.109] npm WARN deprecated<EMAIL_ADDRESS><EMAIL_ADDRESS>[00:41:29.171] npm WARN deprecated<EMAIL_ADDRESS>This package is broken and no longer maintained. 'mkdirp' itself supports promises now, please switch to that.
[00:41:29.235] npm WARN deprecated<EMAIL_ADDRESS>It is not compatible with newer versions of GA starting with v4, as long as you are using GAv3 it should be ok, but the package is not longer being maintained
[00:41:29.640] npm WARN deprecated<EMAIL_ADDRESS>This module has been superseded by the multiformats module
[00:41:29.937] npm WARN deprecated<EMAIL_ADDRESS>This module has been superseded by the multiformats module
[00:41:30.204] npm WARN deprecated<EMAIL_ADDRESS>request has been deprecated, see https://github.com/request/request/issues/3142
[00:41:33.095] npm WARN deprecated<EMAIL_ADDRESS>Motion One for Vue is deprecated. Use Oku Motion instead https://oku-ui.com/motion
[00:41:33.757] npm WARN deprecated<EMAIL_ADDRESS>This module is deprecated, please upgrade to @multiformats/multiaddr-to-uri
[00:41:35.462] npm WARN deprecated<EMAIL_ADDRESS>Use your platform's native atob() and btoa() methods instead
[00:41:35.554] npm WARN deprecated<EMAIL_ADDRESS>Use your platform's native DOMException instead
[00:41:35.684] npm WARN deprecated<EMAIL_ADDRESS>This project has moved to @types/webextension-polyfill
[00:41:35.806] npm WARN deprecated<EMAIL_ADDRESS>This module is deprecated, please upgrade to @multiformats/multiaddr
[00:41:38.820] npm WARN deprecated<EMAIL_ADDRESS>Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
[00:41:38.844] npm WARN deprecated<EMAIL_ADDRESS>Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
[00:41:38.988] npm WARN deprecated<EMAIL_ADDRESS>Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
[00:41:39.601] npm WARN deprecated<EMAIL_ADDRESS>This module has been superseded by the multiformats module
[00:41:39.706] npm WARN deprecated<EMAIL_ADDRESS>Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
[00:41:40.299] npm WARN deprecated<EMAIL_ADDRESS>Not supported. Pls upgrade
[00:41:40.578] npm WARN deprecated<EMAIL_ADDRESS>Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
[00:41:40.579] npm WARN deprecated<EMAIL_ADDRESS>Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
[00:41:40.666] npm WARN deprecated<EMAIL_ADDRESS>Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
[00:41:40.763] npm WARN deprecated<EMAIL_ADDRESS>Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
[00:41:40.824] npm WARN deprecated<EMAIL_ADDRESS>Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
[00:41:40.826] npm WARN deprecated<EMAIL_ADDRESS>Package no longer supported. Contact Support at https://www.npmjs.com/support for more info.
[00:41:42.103] npm WARN deprecated<EMAIL_ADDRESS>This is a stub types definition. web3 provides its own type definitions, so you do not need this installed.
[00:41:42.686] npm WARN deprecated<EMAIL_ADDRESS>Not supported. Pls upgrade
[00:41:43.914] npm WARN deprecated<EMAIL_ADDRESS>js-IPFS has been deprecated in favour of Helia - please see https://github.com/ipfs/js-ipfs/issues/4336 for details
[00:41:44.674] npm WARN deprecated<EMAIL_ADDRESS>This module has been superseded by the multiformats module
[00:41:44.806] npm WARN deprecated<EMAIL_ADDRESS>Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
[00:41:44.845] npm WARN deprecated<EMAIL_ADDRESS>js-IPFS has been deprecated in favour of Helia - please see https://github.com/ipfs/js-ipfs/issues/4336 for details
[00:41:46.029] npm WARN deprecated<EMAIL_ADDRESS>This module has been superseded by the multiformats module
[00:41:46.261] npm WARN deprecated<EMAIL_ADDRESS>Debug versions >=3.2.0 <3.2.7 || >=4 <4.3.1 have a low-severity ReDos regression when used in a Node.js environment. It is recommended you upgrade to 3.2.7 or 4.3.1. (https://github.com/visionmedia/debug/issues/797)
[00:41:46.730] npm WARN deprecated<EMAIL_ADDRESS>Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
[00:41:47.797] npm WARN deprecated<EMAIL_ADDRESS>This client is for the old web3.storage API, sunset on Jan 9 2024. Use the new web3.storage client and API instead: @web3-storage/w3up-client.
[00:42:00.778] npm WARN deprecated<EMAIL_ADDRESS><EMAIL_ADDRESS>is no longer maintained and not recommended for usage due to the number of issues. Because of the V8 engine whims, feature detection in old core-js versions could cause a slowdown up to 100x even if nothing is polyfilled. Some versions have web compatibility issues. Please, upgrade your dependencies to the actual version of core-js.
[00:42:31.638]
[00:42:31.638] ><EMAIL_ADDRESS>postinstall
[00:42:31.638] > husky install
[00:42:31.638]
[00:42:31.740] husky - Git hooks installed
[00:42:31.777]
[00:42:31.777] added 2451 packages, and audited 2453 packages in 2m
[00:42:31.777]
[00:42:31.777] 333 packages are looking for funding
[00:42:31.777]   run `npm fund` for details
[00:42:31.823]
[00:42:31.823] 21 vulnerabilities (2 low, 18 moderate, 1 high)
[00:42:31.823]
[00:42:31.823] To address all issues possible (including breaking changes), run:
[00:42:31.824]   npm audit fix --force
[00:42:31.824]
[00:42:31.824] Some issues need review, and may require choosing
[00:42:31.824] a different dependency.
[00:42:31.824]
[00:42:31.824] Run `npm audit` for details.
[00:42:31.885] Detected Next.js version: 13.5.6
[00:42:31.886] Running "npm run build"
[00:42:32.206]
[00:42:32.207] ><EMAIL_ADDRESS>build
[00:42:32.207] > npm run generate-prisma && next build
[00:42:32.207]
[00:42:32.528]
[00:42:32.528] ><EMAIL_ADDRESS>generate-prisma
[00:42:32.528] > prisma generate --no-engine
[00:42:32.528]
[00:42:33.256] Prisma schema loaded from prisma/schema.prisma
[00:42:33.763]
[00:42:33.763] ✔ Generated Prisma Client (v5.10.2, engine=none) to ./node_modules/@prisma/client in 86ms
[00:42:33.763]
[00:42:33.764] Start using Prisma Client in Node.js (See: https://pris.ly/d/client)
[00:42:33.764] ```
[00:42:33.764] import { PrismaClient } from '@prisma/client'
[00:42:33.764] const prisma = new PrismaClient()
[00:42:33.764] ```
[00:42:33.764] or start using Prisma Client at the edge (See: https://pris.ly/d/accelerate)
[00:42:33.764] ```
[00:42:33.764] import { PrismaClient } from '@prisma/client/edge'
[00:42:33.764] const prisma = new PrismaClient()
[00:42:33.764] ```
[00:42:33.764]
[00:42:33.764] See other ways of importing Prisma Client: http://pris.ly/d/importing-client
[00:42:33.764]
[00:42:33.764] ┌─────────────────────────────────────────────────────────────┐
[00:42:33.764] │  Deploying your app to serverless or edge functions?        │
[00:42:33.764] │  Try Prisma Accelerate for connection pooling and caching.  │
[00:42:33.764] │  https://pris.ly/cli/accelerate                             │
[00:42:33.764] └─────────────────────────────────────────────────────────────┘
[00:42:33.764]
[00:42:35.166] Attention: Next.js now collects completely anonymous telemetry regarding usage.
[00:42:35.166] This information is used to shape Next.js' roadmap and prioritize features.
[00:42:35.166] You can learn more, including how to opt-out if you'd not like to participate in this anonymous program, by visiting the following URL:
[00:42:35.166] https://nextjs.org/telemetry
[00:42:35.166]
[00:42:35.260]    Skipping linting
[00:42:35.260]    Checking validity of types ...
[00:42:52.499]    Creating an optimized production build ...
[00:42:53.014] > [PWA] Compile server
[00:42:53.016] > [PWA] Compile server
[00:42:53.017] > [PWA] Compile client (static)
[00:42:53.017] > [PWA] Auto register service worker with: /vercel/path0/node_modules/next-pwa/register.js
[00:42:53.017] > [PWA] Service worker: /vercel/path0/public/sw.js
[00:42:53.017] > [PWA]   url: /sw.js
[00:42:53.018] > [PWA]   scope: /
[00:42:58.590]
[00:42:58.590] 🌼   daisyUI 4.7.2
[00:42:58.817] ├─ ✔ 2 themes added		https://daisyui.com/docs/themes
[00:42:58.817] ╰─ ❤ Support daisyUI project:	https://opencollective.com/daisyui
[00:42:58.817]
[00:43:16.387]
[00:43:16.387] 🌼   daisyUI 4.7.2
[00:43:16.511] ├─ ✔ 2 themes added		https://daisyui.com/docs/themes
[00:43:16.511] ╰─ ★ Star daisyUI on GitHub	https://github.com/saadeghi/daisyui
[00:43:16.511]
[00:44:21.697]  ⚠ Compiled with warnings
[00:44:21.697]
[00:44:21.697] /_next/static/chunks/pages/_app-43d02b8fab9b6cab.js is 4.18 MB, and won't be precached. Configure maximumFileSizeToCacheInBytes to change this limit.
[00:44:21.697]
[00:44:21.697] ./node_modules/jsonwebtoken/lib/asymmetricKeyDetailsSupported.js
[00:44:21.698] A Node.js API is used (process.version at line: 3) which is not supported in the Edge Runtime.
[00:44:21.698] Learn more: https://nextjs.org/docs/api-reference/edge-runtime
[00:44:21.698]
[00:44:21.698] Import trace for requested module:
[00:44:21.698] ./node_modules/jsonwebtoken/lib/asymmetricKeyDetailsSupported.js
[00:44:21.698] ./node_modules/jsonwebtoken/lib/validateAsymmetricKey.js
[00:44:21.698] ./node_modules/jsonwebtoken/verify.js
[00:44:21.698] ./node_modules/jsonwebtoken/index.js
[00:44:21.698] ./src/lib/server-utils/jwt.ts
[00:44:21.698]
[00:44:21.698] ./node_modules/jsonwebtoken/lib/psSupported.js
[00:44:21.698] A Node.js API is used (process.version at line: 3) which is not supported in the Edge Runtime.
[00:44:21.698] Learn more: https://nextjs.org/docs/api-reference/edge-runtime
[00:44:21.698]
[00:44:21.698] Import trace for requested module:
[00:44:21.698] ./node_modules/jsonwebtoken/lib/psSupported.js
[00:44:21.698] ./node_modules/jsonwebtoken/verify.js
[00:44:21.698] ./node_modules/jsonwebtoken/index.js
[00:44:21.699] ./src/lib/server-utils/jwt.ts
[00:44:21.699]
[00:44:21.699] ./node_modules/jsonwebtoken/lib/rsaPssKeyDetailsSupported.js
[00:44:21.699] A Node.js API is used (process.version at line: 3) which is not supported in the Edge Runtime.
[00:44:21.699] Learn more: https://nextjs.org/docs/api-reference/edge-runtime
[00:44:21.699]
[00:44:21.699] Import trace for requested module:
[00:44:21.699] ./node_modules/jsonwebtoken/lib/rsaPssKeyDetailsSupported.js
[00:44:21.699] ./node_modules/jsonwebtoken/lib/validateAsymmetricKey.js
[00:44:21.699] ./node_modules/jsonwebtoken/verify.js
[00:44:21.699] ./node_modules/jsonwebtoken/index.js
[00:44:21.699] ./src/lib/server-utils/jwt.ts
[00:44:21.699]
[00:44:21.699] ./node_modules/jws/lib/data-stream.js
[00:44:21.699] A Node.js API is used (process.nextTick at line: 25) which is not supported in the Edge Runtime.
[00:44:21.699] Learn more: https://nextjs.org/docs/api-reference/edge-runtime
[00:44:21.699]
[00:44:21.699] Import trace for requested module:
[00:44:21.700] ./node_modules/jws/lib/data-stream.js
[00:44:21.700] ./node_modules/jws/lib/sign-stream.js
[00:44:21.700] ./node_modules/jws/index.js
[00:44:21.700] ./node_modules/jsonwebtoken/decode.js
[00:44:21.700] ./node_modules/jsonwebtoken/index.js
[00:44:21.700] ./src/lib/server-utils/jwt.ts
[00:44:21.700]
[00:44:21.700]    Collecting page data ...
[00:44:29.734]    Generating static pages (0/40) ...
[00:44:29.914] /vercel/path0/node_modules/@coinbase/wallet-sdk/dist/lib/ScopedLocalStorage.js:12
[00:44:29.914]         localStorage.setItem(this.scopedKey(key), value);
[00:44:29.914]         ^
[00:44:29.914]
[00:44:29.914] ReferenceError: localStorage is not defined
[00:44:29.914]     at ScopedLocalStorage.setItem (/vercel/path0/node_modules/@coinbase/wallet-sdk/dist/lib/ScopedLocalStorage.js:12:9)
[00:44:29.914]     at new CoinbaseWalletSDK (/vercel/path0/node_modules/@coinbase/wallet-sdk/dist/CoinbaseWalletSDK.js:42:23)
[00:44:29.915]     at Object.getProvider (file:///vercel/path0/node_modules/@wagmi/connectors/dist/esm/coinbaseWallet.js:68:23)
[00:44:29.915]     at async reconnect (file:///vercel/path0/node_modules/@wagmi/core/dist/esm/actions/reconnect.js:50:27)
[00:44:29.915]
[00:44:29.915] Node.js v18.18.2
[00:44:29.915] /vercel/path0/node_modules/@coinbase/wallet-sdk/dist/lib/ScopedLocalStorage.js:12
[00:44:29.915]         localStorage.setItem(this.scopedKey(key), value);
[00:44:29.915]         ^
[00:44:29.915]
[00:44:29.915] ReferenceError: localStorage is not defined
[00:44:29.915]     at ScopedLocalStorage.setItem (/vercel/path0/node_modules/@coinbase/wallet-sdk/dist/lib/ScopedLocalStorage.js:12:9)
[00:44:29.915]     at new CoinbaseWalletSDK (/vercel/path0/node_modules/@coinbase/wallet-sdk/dist/CoinbaseWalletSDK.js:42:23)
[00:44:29.915]     at Object.getProvider (file:///vercel/path0/node_modules/@wagmi/connectors/dist/esm/coinbaseWallet.js:68:23)
[00:44:29.915]     at async reconnect (file:///vercel/path0/node_modules/@wagmi/core/dist/esm/actions/reconnect.js:50:27)
[00:44:29.915]
[00:44:29.915] Node.js v18.18.2
[00:44:29.915] /vercel/path0/node_modules/@coinbase/wallet-sdk/dist/lib/ScopedLocalStorage.js:12
[00:44:29.915]         localStorage.setItem(this.scopedKey(key), value);
[00:44:29.915]         ^
[00:44:29.916]
[00:44:29.916] ReferenceError: localStorage is not defined
[00:44:29.916]     at ScopedLocalStorage.setItem (/vercel/path0/node_modules/@coinbase/wallet-sdk/dist/lib/ScopedLocalStorage.js:12:9)
[00:44:29.916]     at new CoinbaseWalletSDK (/vercel/path0/node_modules/@coinbase/wallet-sdk/dist/CoinbaseWalletSDK.js:42:23)
[00:44:29.916]     at Object.getProvider (file:///vercel/path0/node_modules/@wagmi/connectors/dist/esm/coinbaseWallet.js:68:23)
[00:44:29.916]     at async reconnect (file:///vercel/path0/node_modules/@wagmi/core/dist/esm/actions/reconnect.js:50:27)
[00:44:29.916]
[00:44:29.916] Node.js v18.18.2
[00:44:29.990] Static worker unexpectedly exited with code: 1 and signal: null
[00:44:30.071] Static worker unexpectedly exited with code: 1 and signal: null
[00:44:30.156] Static worker unexpectedly exited with code: 1 and signal: null
[00:44:34.479] /vercel/path0/node_modules/@coinbase/wallet-sdk/dist/lib/ScopedLocalStorage.js:12
[00:44:34.480]         localStorage.setItem(this.scopedKey(key), value);
[00:44:34.480]         ^
[00:44:34.481]
[00:44:34.481] ReferenceError: localStorage is not defined
[00:44:34.481]     at ScopedLocalStorage.setItem (/vercel/path0/node_modules/@coinbase/wallet-sdk/dist/lib/ScopedLocalStorage.js:12:9)
[00:44:34.481]     at new CoinbaseWalletSDK (/vercel/path0/node_modules/@coinbase/wallet-sdk/dist/CoinbaseWalletSDK.js:42:23)
[00:44:34.482]     at Object.getProvider (file:///vercel/path0/node_modules/@wagmi/connectors/dist/esm/coinbaseWallet.js:68:23)
[00:44:34.482]     at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[00:44:34.482]     at async reconnect (file:///vercel/path0/node_modules/@wagmi/core/dist/esm/actions/reconnect.js:50:27)
[00:44:34.483]
[00:44:34.483] Node.js v18.18.2
[00:44:35.166] /vercel/path0/node_modules/@coinbase/wallet-sdk/dist/lib/ScopedLocalStorage.js:12
[00:44:35.167]         localStorage.setItem(this.scopedKey(key), value);
[00:44:35.167]         ^
[00:44:35.167]
[00:44:35.167] ReferenceError: localStorage is not defined
[00:44:35.167]     at ScopedLocalStorage.setItem (/vercel/path0/node_modules/@coinbase/wallet-sdk/dist/lib/ScopedLocalStorage.js:12:9)
[00:44:35.167]     at new CoinbaseWalletSDK (/vercel/path0/node_modules/@coinbase/wallet-sdk/dist/CoinbaseWalletSDK.js:42:23)
[00:44:35.167]     at Object.getProvider (file:///vercel/path0/node_modules/@wagmi/connectors/dist/esm/coinbaseWallet.js:68:23)
[00:44:35.171]     at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[00:44:35.171]     at async reconnect (file:///vercel/path0/node_modules/@wagmi/core/dist/esm/actions/reconnect.js:50:27)
[00:44:35.171]
[00:44:35.171] Node.js v18.18.2
[00:44:35.514] /vercel/path0/node_modules/@coinbase/wallet-sdk/dist/lib/ScopedLocalStorage.js:12
[00:44:35.514]         localStorage.setItem(this.scopedKey(key), value);
[00:44:35.514]         ^
[00:44:35.514]
[00:44:35.514] ReferenceError: localStorage is not defined
[00:44:35.515]     at ScopedLocalStorage.setItem (/vercel/path0/node_modules/@coinbase/wallet-sdk/dist/lib/ScopedLocalStorage.js:12:9)
[00:44:35.515]     at new CoinbaseWalletSDK (/vercel/path0/node_modules/@coinbase/wallet-sdk/dist/CoinbaseWalletSDK.js:42:23)
[00:44:35.515]     at Object.getProvider (file:///vercel/path0/node_modules/@wagmi/connectors/dist/esm/coinbaseWallet.js:68:23)
[00:44:35.515]     at async reconnect (file:///vercel/path0/node_modules/@wagmi/core/dist/esm/actions/reconnect.js:50:27)
[00:44:35.515]
[00:44:35.515] Node.js v18.18.2
[00:44:39.696] /vercel/path0/node_modules/@coinbase/wallet-sdk/dist/lib/ScopedLocalStorage.js:12
[00:44:39.696]         localStorage.setItem(this.scopedKey(key), value);
[00:44:39.696]         ^
[00:44:39.696]
[00:44:39.696] ReferenceError: localStorage is not defined
[00:44:39.696]     at ScopedLocalStorage.setItem (/vercel/path0/node_modules/@coinbase/wallet-sdk/dist/lib/ScopedLocalStorage.js:12:9)
[00:44:39.696]     at new CoinbaseWalletSDK (/vercel/path0/node_modules/@coinbase/wallet-sdk/dist/CoinbaseWalletSDK.js:42:23)
[00:44:39.696]     at Object.getProvider (file:///vercel/path0/node_modules/@wagmi/connectors/dist/esm/coinbaseWallet.js:68:23)
[00:44:39.696]     at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[00:44:39.697]     at async reconnect (file:///vercel/path0/node_modules/@wagmi/core/dist/esm/actions/reconnect.js:50:27)
[00:44:39.697]
[00:44:39.697] Node.js v18.18.2
[00:44:40.071] /vercel/path0/node_modules/@coinbase/wallet-sdk/dist/lib/ScopedLocalStorage.js:12
[00:44:40.071]         localStorage.setItem(this.scopedKey(key), value);
[00:44:40.071]         ^
[00:44:40.071]
[00:44:40.071] ReferenceError: localStorage is not defined
[00:44:40.072]     at ScopedLocalStorage.setItem (/vercel/path0/node_modules/@coinbase/wallet-sdk/dist/lib/ScopedLocalStorage.js:12:9)
[00:44:40.072]     at new CoinbaseWalletSDK (/vercel/path0/node_modules/@coinbase/wallet-sdk/dist/CoinbaseWalletSDK.js:42:23)
[00:44:40.072]     at Object.getProvider (file:///vercel/path0/node_modules/@wagmi/connectors/dist/esm/coinbaseWallet.js:68:23)
[00:44:40.072]     at process.processTicksAndRejections (node:internal/process/task_queues:95:5)
[00:44:40.072]     at async reconnect (file:///vercel/path0/node_modules/@wagmi/core/dist/esm/actions/reconnect.js:50:27)
[00:44:40.072]
[00:44:40.072] Node.js v18.18.2
[00:44:40.614] /vercel/path0/node_modules/@coinbase/wallet-sdk/dist/lib/ScopedLocalStorage.js:12
[00:44:40.614]         localStorage.setItem(this.scopedKey(key), value);
[00:44:40.614]         ^
[00:44:40.614]
[00:44:40.614] ReferenceError: localStorage is not defined
[00:44:40.614]     at ScopedLocalStorage.setItem (/vercel/path0/node_modules/@coinbase/wallet-sdk/dist/lib/ScopedLocalStorage.js:12:9)
[00:44:40.614]     at new CoinbaseWalletSDK (/vercel/path0/node_modules/@coinbase/wallet-sdk/dist/CoinbaseWalletSDK.js:42:23)
[00:44:40.614]     at Object.getProvider (file:///vercel/path0/node_modules/@wagmi/connectors/dist/esm/coinbaseWallet.js:68:23)
[00:44:40.614]     at async reconnect (file:///vercel/path0/node_modules/@wagmi/core/dist/esm/actions/reconnect.js:50:27)
[00:44:40.614]
[00:44:40.614] Node.js v18.18.2
[00:44:45.387] /vercel/path0/node_modules/@coinbase/wallet-sdk/dist/lib/ScopedLocalStorage.js:12
[00:44:45.387]         localStorage.setItem(this.scopedKey(key), value);
[00:44:45.387]         ^
[00:44:45.387]
[00:44:45.388] ReferenceError: localStorage is not defined
[00:44:45.388]     at ScopedLocalStorage.setItem (/vercel/path0/node_modules/@coinbase/wallet-sdk/dist/lib/ScopedLocalStorage.js:12:9)
[00:44:45.388]     at new CoinbaseWalletSDK (/vercel/path0/node_modules/@coinbase/wallet-sdk/dist/CoinbaseWalletSDK.js:42:23)
[00:44:45.388]     at Object.getProvider (file:///vercel/path0/node_modules/@wagmi/connectors/dist/esm/coinbaseWallet.js:68:23)
[00:44:45.388]     at async reconnect (file:///vercel/path0/node_modules/@wagmi/core/dist/esm/actions/reconnect.js:50:27)
[00:44:45.388]
[00:44:45.388] Node.js v18.18.2
[00:44:45.388] /vercel/path0/node_modules/@coinbase/wallet-sdk/dist/lib/ScopedLocalStorage.js:12
[00:44:45.388]         localStorage.setItem(this.scopedKey(key), value);
[00:44:45.388]         ^
[00:44:45.389]
[00:44:45.389] ReferenceError: localStorage is not defined
[00:44:45.390]     at ScopedLocalStorage.setItem (/vercel/path0/node_modules/@coinbase/wallet-sdk/dist/lib/ScopedLocalStorage.js:12:9)
[00:44:45.390]     at new CoinbaseWalletSDK (/vercel/path0/node_modules/@coinbase/wallet-sdk/dist/CoinbaseWalletSDK.js:42:23)
[00:44:45.390]     at Object.getProvider (file:///vercel/path0/node_modules/@wagmi/connectors/dist/esm/coinbaseWallet.js:68:23)
[00:44:45.390]     at async reconnect (file:///vercel/path0/node_modules/@wagmi/core/dist/esm/actions/reconnect.js:50:27)
[00:44:45.390]
[00:44:45.390] Node.js v18.18.2
[00:44:45.576]
[00:44:45.576] > Build error occurred
[00:44:45.579] Error: Jest worker encountered 4 child process exceptions, exceeding retry limit
[00:44:45.579]     at ChildProcessWorker.initialize (/vercel/path0/node_modules/next/dist/compiled/jest-worker/index.js:1:11580)
[00:44:45.579]     at ChildProcessWorker._onExit (/vercel/path0/node_modules/next/dist/compiled/jest-worker/index.js:1:12545)
[00:44:45.579]     at ChildProcess.emit (node:events:517:28)
[00:44:45.580]     at ChildProcess.emit (node:domain:489:12)
[00:44:45.580]     at ChildProcess._handle.onexit (node:internal/child_process:292:12) {
[00:44:45.580]   type: 'WorkerError'
[00:44:45.580] }
[00:44:45.756] Error: Command "npm run build" exited with 1
[00:44:47.297]

@PaulNext For your first question i don't really know. I can' see any of the code you've written so i have no clue. As said a reproducible example would be awesome just a github code or codesandbox is perfect.
For the second question you're getting these error logs because you didn't add the ssr value to your getDefaultConfig or createConfig function for wagmi.
 Please feel free to raise another issue if you're still facing with another problem 🙏


User Story: Create Read Functionality on Pilots and Mechs

Context
As a battletech player
I need a way to fetch information about pilots and mechs
so that I can see which units are available for the campaign
Acceptence Criteria

Create List View of Pilots and Mechs
Create Detail View of Pilots and their Mech

Tasks

[x] Build Index landing Page for navigation
[x] Build List View for all pilots and their mechs
[x] Build a detailed View for any given pilot and their mech

Base dB models tweaked to allow for a stock of pilots and mechs, as well as an Active pairing of pilot to mech.
Working branch  for in Progress work

Read views complete


Remove 'Download Generator' from App version

Currently, when you open the app version, it shows you a link to download the app again.
Lets hide this if we can on the app version.

Fixed #10


Update DOCKER.md

The first line under ## Development commands: deploying to Docker Hub could be rephrased to The following commands apply to deploying to Docker Hub.
Before submitting this PR, please make sure:

[ ] Your code builds clean without any errors or warnings
[ ] You are using approved title ("feat/", "fix/", "docs/", "refactor/")

A description of the changes proposed in the pull request:
Tests performed by the developer:
Tips for QA testing:

Thank you @nikspz

@nikspz please how can i be added a contributor

it will show up after these changes are merged to the master branch in the
next release
On Sat, Jul 1, 2023, 3:44 AM notabombe @.***> wrote:

@nikspz https://github.com/nikspz please how can i be added a
contributor
—
Reply to this email directly, view it on GitHub
https://github.com/hummingbot/hummingbot/pull/6400#issuecomment-1615843736,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/AANWHVT3MHNAQA34QY5ZY2TXN75RFANCNFSM6AAAAAAZS7I5EE
.
You are receiving this because you commented.Message ID:
@.***>


[FR] Custom parameters for BOM-Items

Is your feature request the result of a bug?
-
Problem
I am using InvenTree to manage electrical parts and PCB's (by BOM).
The offered solution "PartParameters" / "PartParameterTemplates" is great but seems to be missing for BOM-Items.
A similar feature would be great for adding part-independent parameters to BOM-Items (e.g.: alternative part(s) with preference, is_fitted, etc. ).
Suggested solution
As described in the "Problem"-section: A similar feature to the PartParameters / PartParameterTemplates for BOM-Items would be great!
Describe alternatives you've considered
If there is a workaround for this, I would consider this an option.
Examples of other systems
-
Do you want to develop this?
If you can give me a starting point, I can give it a try by myself. But your help would be much appreciated! 😄

@lekalt A lot cof this an be done with the current system. Could you please give a real-life example of BOM using those parameters?

A worked example would be great to help understand what you're trying to achieve :)

Thank you very much for your fast reply and sorry for the time it took for mine...
Here is the requested example:

ID
Category
Description
BOM Position
Alternative category
Preference
Fitted
Type
Quantity
Value
Specification
Manufacturer
Manufacturer number
Casing
Designator

100
Resistor
Resistor 1k2, 0805
1
C
0
yes
SMD
1
1k2
125mW/1%

0805
R1

101
Resistor
Resistor 75R, 0805
2
C
0
yes
SMD
1
75R
125mW/1%

0805
R2

102
Capacitor
Ceramic Capacitor 10nF / 50V / 0805
3
C
0
yes
SMD
2
10nF
50V/X7R/10%

0805
C1, C2

103
Hall sensor
Detector TLI 4906L, THT
4
A
0
yes
THT
1

Infineon
TLI4906L
SSO-3
IC1

104
Connector
Connector ZIF 10pol.
5
A
0
yes
SMD
1

Amphenol FCI
SFW10R-1STE9LF

ST1

105
Connector
Connector SMD 4pol.
6
A
0
yes
SMD
1

Würth Elektronik
620 104 131 822

ST2

106
Connector
Connector JST PH, 4 polig, 2mm Pitch
6
A
1
yes
SMD
1

JST
S4B-PH-SM4-TB

ST2

107
PCB
PCB
7
A
0
yes
PCB
1

Leiton
141000621

@lekalt All information shown can already be exported, make sure to toggle all options:

@eeintech I toggled all options. Still I am missing an option for an Item e.g. BOM-Position 6:

ID
Category
Description
BOM Position
Alternative category
Preference
Fitted
Type
Quantity
Value
Specification
Manufacturer
Manufacturer number
Casing
Designator

105
Connector
Connector SMD 4pol.
6
A
0
yes
SMD
1

Würth Elektronik
620 104 131 822

ST2

106
Connector
Connector JST PH, 4 polig, 2mm Pitch
6
A
1
yes
SMD
1

JST
S4B-PH-SM4-TB

ST2

Three things are important here:

ID106 is an alternative Part. Every part comes with a preference (1). The item with the lowest number is to prefer
ID106's category is "A" (which is a code for the manufacturer). This is part independent - it only depends on the BOM
I need a column for the "BOM Position" which is used to refer on changes, etc.

At the moment I don’t see any way to meet these requirements. Am I missing something?

@lekalt Here's is how I see it:

Alternative parts should be on the same line, with the same ID. Which is why you can have multiple supplier/manufacturer parts per part in InvenTree. What you are trying to do is prioritize them in order of appearance by column, it shouldn't be by row. I think that supplier parts exported to BOM are currently sorted by date they were created. Could be a nice-to-have feature to sort them by another field, like a priority field. But honestly that's a lot of work that can be done manually on the spreadsheet after export.
No idea what this manufacturer category field refers to, never seen it in before. Can you point towards documentation or reading that explain the use of "category" for suppliers or manufacturers?
I am not grasping that one either, how is this number used in practice? How can one single digit code "changes, etc."? What do you get from knowing this number is 6 instead of any other digit?

@eeintech Thank's for your ideas!
Probably this explains my problem better:
https://www.altium.com/documentation/altium-designer/bom-management-with-activebom-ad#!including-an-alternative-part
I need custom parameters in the BOM independent from the part. The alternative parts aren't the same part from different manufacturers. The only thing the parts have in common is the "BOM Position".
-> The modifications and additional parameters can/should only be made in the BOM, not at the part itself.
I think two additional features in InvenTree could make this possible:

A alternative part Parameter which links two parts only in a single BOM (same "BOM Position", new row -> different ID)
The possibility to add custom parameters (e.g.: manufacturer category, priority, ...)

Is there any chance to implement this?
Thank you very much for your effort!!! 😄

The concept of an "alternative part" is one that has been discussed here before. I think there would be a good case for it, although it would be somewhat difficult (not impossible) to implement.
Can you explain a bit more what "category" and "priority" mean in the context of a BOM here?

@lekalt Honestly all those features you are referring to shouldn't be in InvenTree becausee in-depth BoM management tools and processed like sourcing splits is its own beast. What you want is to use your CAD tool or a paid PLM tool to generate your final BoMs. And then those BoMs are imported straight into InvenTree.
No need to add parameters or anything of this sort, the BoM in InvenTree should be a frozen image of your project's BoM including the mixins from your CAD/PLM tool.

@eeintech I am with you in this, this is a PLM function for sure. The question is if we can support this with plugins that add functions on top of BOMs / parts.

@matmair Anything can be done with time and effort, however InvenTree has to pick its battles. And I don't know that this one is worth fighting for at this moment, a lot of other aspects sound more important IMO.

For instance, support for part revisions would be a much greater addition. It was in the back of my mind for a while now, maybe one day I'll give it a shot as it's quite annoying to have to spin-off a new/duplicate part each time for each project/circuit revision.

@eeintech my suggestion was not that one of the core contributors does it but I would be willing to assist @lekalt or anyone else willing to implement it - preferably as a plugin.

@lekalt alternative parts are implemented now, can we close this?

Closing due to inactivity, but feel free to ping us again @lekalt


Tasks alters the DOM XPath to child tasks such that other plugins cannot get the text for those Tasks

Please check that this issue hasn't been reported before.

[X] I searched previous Bug Reports didn't find any similar reports.

Expected Behavior
With Tasks enabled, another plugin should be able to get the Task Text to act on it.
Current behaviour
With Tasks enabled, another plugin cannot get the Task Text to act on it.
Steps to reproduce
Detailed instructions are in the Index file in the attached vault.
TTS Test Vault.zip
Which Operating Systems are you using?

[X] Android
[ ] iPhone/iPad
[ ] Linux
[ ] macOS
[X] Windows

Obsidian Version
v1.5.8
Tasks Plugin Version
v6.1.0
Checks

[X] I have tried it with all other plugins disabled and the error still occurs

Possible solution
In https://github.com/obsidian-tasks-group/obsidian-tasks/blob/9f18c772106fbce10487731a3eb65e1874a41f2d/src/Renderer/TaskLineRenderer.ts#L46 : the test convenience method of adding the task appears to be breaking the DOM.

Thanks @thesamim.
Here are the instructions extracted from the zip, to time for anyone passing by...

Instructions
login
Please see email sent separately.
monitor
Please open developer console and filter for logs with "### " to reduce the clutter.
Test Tasks

[ ] Parent Task link #ticktick %%[ticktick_id:: 65e789d630cc7a8b64ca5abb]%%

[ ] Child Task link #ticktick %%[ticktick_id:: 65e789de30cc7a8b64ca5abd]%%

[ ] GrandChild Task link #ticktick %%[ticktick_id:: 65e789e830cc7a8b64ca5abf]%%

Testing
Scenario 1:
With Tasks and DataView Enabled. Close the tasks.
Expected Result: In the console log, should get  the Task text for all three levels..
Actual Result: Only get the Task text for the first level (Parent Task), but not the other two levels.
Scenario 2:
From Community Plugins, disable Tasks. Reopen then close the tasks.
Expected Result: In the console log, should get  the Task text for all three levels..
Actual Result: We get the Task text for all three levels.
Scenario 3:
From Community Plugins, disable Dataview AND Tasks. Reopen then close the tasks.
Expected Result: In the console log, should get  the Task text for all three levels..
Actual Result: We get the Task text for all three levels.
Scenario 4:
From Community Plugins, Enable Dataview AND disable Tasks. Reopen then close the tasks.
Expected Result: In the console log, should get  the Task text for all three levels..
Actual Result: We get the Task text for all three levels.
Conclusion:
Tasks is changing the DOM layout, such that:

Child tasks do appear is children of the parent task
BUT: Tasks is modifying the DOM path such that is not possible to get back to the Task text.
If there's a way to get the Task text based on the clicked element I have not found it.

Thanks Clare.
From: Clare Macrae @.>
Sent: Tuesday, March 5, 2024 4:25 PM
To: obsidian-tasks-group/obsidian-tasks @.>
Cc: thesamim @.>; Mention @.>
Subject: Re: [obsidian-tasks-group/obsidian-tasks] Tasks alters the DOM XPath to child tasks such that other plugins cannot get the text for those Tasks (Issue #2690)
Thanks @thesamim https://github.com/thesamim .
Here are the instructions extracted from the zip, to time for anyone passing by...

Instructions
login
Please see email sent separately.
monitor
Please open developer console and filter for logs with "### " to reduce the clutter.
Test Tasks

[ ] Parent Task link https://ticktick.com/webapp/#p/inbox123312580/tasks/65e789d630cc7a8b64ca5abb  #ticktick %%[ticktick_id:: 65e789d630cc7a8b64ca5abb]%%

[ ] Child Task link https://ticktick.com/webapp/#p/inbox123312580/tasks/65e789de30cc7a8b64ca5abd  #ticktick %%[ticktick_id:: 65e789de30cc7a8b64ca5abd]%%

[ ] GrandChild Task link https://ticktick.com/webapp/#p/inbox123312580/tasks/65e789e830cc7a8b64ca5abf  #ticktick %%[ticktick_id:: 65e789e830cc7a8b64ca5abf]%%

Testing
Scenario 1:
With Tasks and DataView Enabled. Close the tasks.
Expected Result: In the console log, should get the Task text for all three levels..
Actual Result: Only get the Task text for the first level (Parent Task), but not the other two levels.
Scenario 2:
From Community Plugins, disable Tasks. Reopen then close the tasks.
Expected Result: In the console log, should get the Task text for all three levels..
Actual Result: We get the Task text for all three levels.
Scenario 3:
From Community Plugins, disable Dataview AND Tasks. Reopen then close the tasks.
Expected Result: In the console log, should get the Task text for all three levels..
Actual Result: We get the Task text for all three levels.
Scenario 4:
From Community Plugins, Enable Dataview AND disable Tasks. Reopen then close the tasks.
Expected Result: In the console log, should get the Task text for all three levels..
Actual Result: We get the Task text for all three levels.
Conclusion:
Tasks is changing the DOM layout, such that:

Child tasks do appear is children of the parent task
BUT: Tasks is modifying the DOM path such that is not possible to get back to the Task text.
If there's a way to get the Task text based on the clicked element I have not found it.

—
Reply to this email directly, view it on GitHub https://github.com/obsidian-tasks-group/obsidian-tasks/issues/2690#issuecomment-1979739453 , or unsubscribe https://github.com/notifications/unsubscribe-auth/ABIRYKP4HH4FCQKVH6HKRUDYWZA3VAVCNFSM6AAAAABEH46LF2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNZZG4ZTSNBVGM .
You are receiving this because you were mentioned.Message ID: @.***>

Just to add that the "Login" instruction refers to going to the TickTickSync plugin and entering the credentials there.
I did Scenario 1 and got not console output at all, and not the stated expected output.
I was logged in.

Is this really the minimal reproduction? Why are 4 combinations required to go through?
And what has dataview got to do with it?

Possible solution
In
https://github.com/obsidian-tasks-group/obsidian-tasks/blob/9f18c772106fbce10487731a3eb65e1874a41f2d/src/Renderer/TaskLineRenderer.ts#L46
: the test convenience method of adding the task appears to be breaking the DOM.

Just to note that following the history back, that behaviour was introduced in 54682d4f89cc42efda9d3f9050f9e40596365bf5 on 28/12/2022.
The previous release was 1.20.0 - so you could try downloading that and test the theory that the making of the code testable was the cause.
This page links to the areas of the Tasks code that adjust the re-rendering of code:
https://publish.obsidian.md/tasks-contributing/Code/How+does+Tasks+handle+status+changes
One thing that it shows is that the code path is quite different depending on whether it's source, live preview or reading mode.
So one way to narrow down the cause might be to test the behaviour you observed, and see if it works or does not work in any particular modes.

Is this really the minimal reproduction? Why are 4 combinations required to go through?

And what has dataview got to do with it?

Trying to be thorough. The only scenarios that matter are 1 and 2.
Don't understand why you're not getting output.
Here's what I see:

The previous release was 1.20.0 - so you could try downloading that and test the theory that the making of the code testable was the cause.

Will do.

One thing that it shows is that the code path is quite different depending on whether it's source, live preview or reading mode.

Tried Source Mode and Live Preview. Made no difference to the results.
In Reading Mode: TickTickSync does not get the click event at all. Haven't dug into that yet, just rely on the periodic Sync to catch us up. But I sure would like to know the answer to that too.

Can you think of a simple way of recording the change in the DOM?
I did some manual testing recently by saving HTML like this... I was going it to make sure that some refactoring of untested code did not change the behaviour:

Maybe that gives some ideas about how you could save info from the development environment, to produce diff-able files that you could attach here...

I speculate that you may have encountered a consequence of one of the know limitations of Tasks:
https://publish.obsidian.md/tasks/Support+and+Help/Known+Limitations

Trying to be thorough. The only scenarios that matter are 1 and 2.

Same question - what has dataview got to do with it?

(This arose from https://github.com/obsidian-tasks-group/obsidian-tasks/discussions/2685)

For my money, this would be the ideal kind of reproduction - taking Dataview and TickTickSync out of the equation - and showing what it is that Tasks breaks:

Here is how to see the DOM with no plugins enabled
And here is how to see the DOM with just the Tasks plugin enabled

And here is a diff between the two, and look, that line there is a critical diff that prevents other plugins, in the following way...

Apparently nothing. I was just trying to prove that Dataview, as another plugin that queries Tasks, was not affecting the Tasks behaviours.
From: Clare Macrae @.>
Sent: Tuesday, March 5, 2024 4:57 PM
To: obsidian-tasks-group/obsidian-tasks @.>
Cc: thesamim @.>; Mention @.>
Subject: Re: [obsidian-tasks-group/obsidian-tasks] Tasks alters the DOM XPath to child tasks such that other plugins cannot get the text for those Tasks (Issue #2690)
Trying to be thorough. The only scenarios that matter are 1 and 2.
Same question - what has dataview got to do with it?
image.png (view on web) https://github.com/obsidian-tasks-group/obsidian-tasks/assets/4840096/a8a67054-d67a-49b3-b4ac-3f8fd9cab5c1
—
Reply to this email directly, view it on GitHub https://github.com/obsidian-tasks-group/obsidian-tasks/issues/2690#issuecomment-1979777003 , or unsubscribe https://github.com/notifications/unsubscribe-auth/ABIRYKKFMJOLOVD65I3VZA3YWZEVBAVCNFSM6AAAAABEH46LF2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNZZG43TOMBQGM .
You are receiving this because you were mentioned.Message ID: @.***>

In essence: All that TickTickSync is doing in these scenarios is reporting results. If you can see the console log, you can see the difference in the DOM traverses. So, enabling Tasks and disabling tasks and looking at the console log accomplishes just what you’ve described.
To be super clear: I have removed ALL processing from the checkbox handler because I had no reliable way of interacting with tasks with Tasks is enabled. ALL it is doing is reporting the DOM paths it finds.
From: Clare Macrae @.>
Sent: Tuesday, March 5, 2024 5:03 PM
To: obsidian-tasks-group/obsidian-tasks @.>
Cc: thesamim @.>; Mention @.>
Subject: Re: [obsidian-tasks-group/obsidian-tasks] Tasks alters the DOM XPath to child tasks such that other plugins cannot get the text for those Tasks (Issue #2690)
For my money, this would be the ideal kind of reproduction - taking Dataview and TickTickSync out of the equation - and showing what it is that Tasks breaks:

Here is how to see the DOM with no plugins enabled
And here is how to see the DOM with just the Tasks plugin enabled

And here is a diff between the two, and look, that line there is a critical diff that prevents other plugins, in the following way...
—
Reply to this email directly, view it on GitHub https://github.com/obsidian-tasks-group/obsidian-tasks/issues/2690#issuecomment-1979785469 , or unsubscribe https://github.com/notifications/unsubscribe-auth/ABIRYKIAEPG24FFKVR6MQRTYWZFJJAVCNFSM6AAAAABEH46LF2VHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTSNZZG44DKNBWHE .
You are receiving this because you were mentioned.Message ID: @.***>

In essence: All that TickTickSync is doing in these scenarios is reporting results. If you can see the console log, you can see the difference in the DOM traverses. So, enabling Tasks and disabling tasks and looking at the console log accomplishes just what you’ve described.

OK, without any screenshots in the bug report I wasn't aware of that.
Unfortunately I'm not seeing any console output, so I'm a bit stumped about how to move forward.
Thank for your efforts in reporting it.

Actually, if you can create two separate screenshots showing:

Just the console output when only TickTickSync is enabled
Just the console output when only TickTickSync and Tasks are enabled, would it save others from going through the reproduction steps?

Trivia: When replying by email, it really helps if people delete the text being replied too, for readability here.
I've been going through deleting all the quoted text, so the flow is easier to read in future... just thought I'd mention it.

Just to note that I haven't been involved in any of the code that adjusts the DOM - it was all written before I took over maintaining the Tasks plugin.
So if this ticket can make it clear what exactly Tasks is changing or losing from the DOM, that would affect plugin developers, it will likely also inform future ideas to address some of the other known limitations of rendering of tasks by this plugin.
I am currently firmly in "I don't know what I don't know" in this area. Hence the value for information to be clear and directly visible.

Actually, if you can create two separate screenshots showing:

Just the console output when only TickTickSync is enabled
Just the console output when only TickTickSync and Tasks are enabled

... would it save others from going through the reproduction steps?

D'oh - or even the text from the console, as then the captured information information would be useful for future searches....

Genius!
Testing: With and Without Tasks, click on the tasks. Save html render from both. Save the logs from both.
Finding: So, it's not an HTML structural difference apparently. It looks like the only difference is in CSS. That may cause behavioral changes. I don't know.
TTSLogs.zip
Attached files in the zip file:

Console logs:

obsidian.md-with-Tasks-Disabeled.log
obsidian.md-with-Tasks-Enabled.log

HTML files:

withoutTasks.html
WithTasks.html
differencereport.html

Finding: So, it's not an HTML structural difference apparently. It looks like the only difference is in CSS. That may cause behavioral changes. I don't know.

Good, thank you, that's really helpful to know.
I am sure that the CSS would not change the behaviour you are seeing.
Your screenshot in https://github.com/obsidian-tasks-group/obsidian-tasks/issues/2690#issuecomment-1979768530 and your description of this issue seem to show the "DOME XPath" is involved...
Just like seeing the raw HTML was useful, "seeing" the DOM will be useful too.
So I would really appreciate it if you could see if you could find a way to save the DOM for the two scenarios - only Tasks installed, and no plugin installed.
Being able to diff those in a text editor would be super useful.
As well as making clear all the differences, it might point to an alternative implementation in Tasks, ultimately eventually leading to a solution for TickTickSync and others too...

My searches for how to export and save the DOM were unsuccessful, and now I'm going to be "Away from Keyboard" for a couple of days.

So I would really appreciate it if you could see if you could find a way to save the DOM for the two scenarios - only Tasks installed, and no plugin installed.
Being able to diff those in a text editor would be super useful.

Hi @thesamim, have you made any progress on investigations with this?
Is the ticket still needed?

Hi @claremacrae ,
I have an idea on how to accomplish this, but have not had time to implement it.
Yes, the ticket is still needed.

Hi @thesamim - that’s a bit Fermat”s Last Theorem!
Please could you record the idea here so the info is not lost?

Hi @thesamim - that’s a bit Fermat”s Last Theorem!
Please could you record the idea here so the info is not lost?

In a vault, install the sample plugin only.
Create a document with tasks as follows

[ ] Task 1

[ ] Task 1 Child

[ ]  Task 1 Grand Child

Using the sample plugin, add to onClickEvent a method to extract the current DOM layout. Write it to file.
Invoke the onclick event.
save the resulting file.
In the same vault, install the Tasks plugin.
Repeat.
Compare the two resulting files.
highlight the differences in layout.

Great - thanks.

No idea if this helps, but there was just an announcement on Discord of this plugin release, and it talks about inspecting the DOM tree and being useful for general development...
https://github.com/iamrecursion/obsidian-pkvs/releases/tag/1.1.0

Nice!!! Will explore. Thanks!

Pardon the long delay.
At the end of the day, all I want is to be able to get the Task text and the Task status. So if there's a different way to do that, please let me know.
Started with the sample plugin and did some "With Tasks Enabled" and "With Tasks Disabled" testing.
Methodology:
In the attached Vault, there is one file "Task Test" that has a hierarchy of tasks.

Disable Tasks plugin
Check each task as done. (Parent Task, Child Task, Grand Child Task)
Check each task as not done. (Parent Task, Child Task, Grand Child Task)
save Log.
Enable Tasks plugin
Repeat steps 2 - 4

Results:

The HTML rendering is exactly the same. In the attached Zip File, TaskPlugin_dom.html is exactly the same as NoTaskPlugin_dom.html)
The DOM parsing is the same for the top level task, but not for the sub tasks. In the attached Zip file, compare TaskPlugin_Results.log and NotaskPlugin_Results.log.

With the Tasks Plugin enabled, looking for the closest DIV, am not able to get the Task Text. Screen Shot of differences.

Also see differenceReport.html in the zip file for full compare.
In the zip file:

Testing Vault: testingVault.zip
Sample Code source code: sample.zip
NoTaskPlugin_dom.html and TaskPlugin_dom.html : the html of the note. No difference.
NoTaskPlugin_Results.log and TaskPlugin_Results.log: the logs from the above testing.
differenceReport.html: the difference report between the two results (generated from BeyondCompare.)

obsidian-tasks_issues_2690.zip
Here are the two relevant bits of code:
Capture the whole DOM as HTML:
	const ribbonIconEl = this.addRibbonIcon('dice', 'Sample Plugin', async (evt: MouseEvent) => {
	    // Called when the user clicks the icon.
            // console.log(document.body.innerHTML)
            let toWrite = 'E:\\temp\\dom.html';

            fs.writeFile(toWrite, document.body.innerHTML, { encoding: 'utf8' }, (err) => {
                console.log("Write Result: ", err)
            })
	});

Log relevant information when a checkbox is clicked:
	this.registerDomEvent(document, 'click', async (evt: MouseEvent) => {
            let {target} = evt;
            // const markDownView = this.app.workspace.getActiveViewOfType(MarkdownView);
            // const file = markDownView?.app.workspace.activeEditor?.file;
            // const fileName = file?.name;
            // const filepath = file?.path;

            if (target &&  target.type === 'checkbox') {
                const clickedTarget = evt.target as HTMLInputElement;
                console.log("IS: ", clickedTarget,
                    "\nClass Name",clickedTarget.className,
                    "\ntype",clickedTarget.type,
                    "\nChecked",clickedTarget.checked);

                const parent = clickedTarget.parentElement;
                console.log("Parent Element",parent)
                const grandParent = parent.parentElement;
                console.log("GrandParent",grandParent)

                target = evt.target as HTMLElement;
                const elementSearch = 'div';
                const taskElement = target.closest(elementSearch);
                if (taskElement) {
                    const lineText = taskElement.textContent;
                    if (lineText) {
                        console.log("Got Task: ", lineText);
                    } else {
                        console.log("No Line Text");
                    }
                } else {
                    console.log("Task Element not found.");
                }
            }
        });

Please let me know if you need anything else.

Please let me know if you need anything else.

tl;dr Yes, if you wish to pair together for a few sessions, please email me to set up some dates.
Hi @thesamim, FYI the Tasks plugin is in the fortunate position of:

major pull requests coming in at a faster rate than I can handle them
and currently my having at least 4 pairing sessions a week with contributors

The above are entirely driving where my time is going on the plugin right now, there is just virtually no other time available to work on it.
Additionally, as I mentioned somewhere above, fixing this is likely to require a significant re-write of the Tasks rendering code, which predates my involvement in the plugin.
This means that there is zero chance of this issue being addressed in the foreseeable future, unless anyone wishes to commit to a few weekly sessions of pairing on it with me - which would push it up the priority list for my time.
I should have some time for pairing in May - so if you would like to work on this together, over a few pairing sessions to try and understand what's going on and if we can can find a workaround, please email me to set up a schedule.


Add java dependencies removal in module mechanism

Add the possibility to ask for a dependency removal in the module mechanism (create an explicit RemoveDirectJavaDependency). Use case: you want to remove mockito and junit direct dependencies when adding spring boot starter test

Perfect use case

Should be straightforward to do, I'll take it but after https://github.com/jhipster/jhipster-lite/pull/2463


Question: Publish/broadcast and/or push capability

Hello
,
Apologies for question here.

Is there a capability to push a message/notification when the balance gets to 0? e.g. Use TigerBeetle for counting stock/inventory (decrementing) and when a particular stock item gets to e.g. 0, then pushing a notification to a cache or web page with this information?

Also,
2) Is there a broadcast capability that one or multiple users can subscribe to a inventory items balance and get pushed new values as they change? E.g. a page may be subscribing to 100 or more balances and could be millions of users with any given combinations of products on screens showing real time balances (stock items remaining).
Want to understand if capabilities exist, and if theres any limitation to scaling as in number of balances internally that can be monitored and max number of subscribes etc as well.. what would the first bottleneck be before we have to spin up a 2nd instance etc..
Thank you.

Thanks for the questions!

Is there a capability to push a message/notification when the balance gets to 0? e.g. Use TigerBeetle for counting stock/inventory (decrementing) and when a particular stock item gets to e.g. 0, then pushing a notification to a cache or web page with this information?

TigerBeetle doesn't have any broadcast/event system, but you can implement this feature in your application by building atop TigerBeetle's primitives.
First, for counting inventory, the account would have one of the balance limit flags set (flags.debits_must_not_exceed_credits or flags.credits_must_not_exceed_debits) to ensure that the inventory account's balance is non-negative.
When you remove items out of the inventory, you would use a linked sequence of transfers like this:
// Transfer A tries to move a single item out of the inventory...:
{ id = A, debit_account_id = (inventory account), credit_account_id = (control account), amount = 1, linked = true }
// ...And then transfer B puts the item back, so that the inventory is untouched:
{ id = B, debit_account_id = (control account), credit_account_id = (inventory account), amount = 1, linked }
// Finally, transfer C moves items out of the inventory to their destination:
{ id = C, debit_account_id = (inventory account), credit_account_id = (destination account), amount = (number of items) }

So in your application, any time you move money out of the inventory (transfer C) you would also send transfers A+B in the same batch. If transfer A fails (e.g. error.exceeds_credits), then you know that the inventory is empty, and your application can trigger whatever behavior it needs to. Likewise, if you are moving multiple values simultaneously in C, then C might fail even as A/B succeed (i.e. "there is a nonzero amount of inventory, but not enough to satisfy this particular request").

Is there a broadcast capability that one or multiple users can subscribe to a inventory items balance and get pushed new values as they change? E.g. a page may be subscribing to 100 or more balances and could be millions of users with any given combinations of products on screens showing real time balances (stock items remaining).

No broadcast capability; any pub/sub mechanics would need to be implemented outside of TigerBeetle.
If the inventory accounts set flags.history, then you can use get_account_balances as a change-data-capture stream (by polling it with successive timestamps). Then your application could distribute those updates to the users/connections monitoring the respective accounts.
(I think this would also work as an alternate solution to your first question.)

Want to understand if capabilities exist, and if theres any limitation to scaling as in number of balances internally that can be monitored and max number of subscribes etc as well.. what would the first bottleneck be before we have to spin up a 2nd instance etc..

There is effectively no limit to the total number of balances (i.e. the number of accounts). That is, the only limit is the disk capacity. (And accounts are quite small.)


First-in first-served registration

We are developing RSKFifs that register names under first-in first-served model.
This contract must register a given name:

for a given owner
following commit-reveal model to prevent front running
allowing to buy names for a fixed RIF price using

ERC-20 approve + transfer
ERC-677 transferAndCall

with registration permission in rsk owner defined in _https://github.com/rnsdomains/rns-fifs/issues/5_

I'm moving ERC-677 transfers to a new issue.


UART_READ接收不到串口数据

1. SDK version（SDK 版本）
{
2.102
}

2. In what kind of operation problems appear, and how to reproduce the problem ?（什么样的操作步骤问题会出现，是否是稳定复现，如何复现问题？）
{
Arduino TX,RX连接A9G pubing板子的UART1，API_EVENT_ID_UART_RECEIVED事件里用UART_READ接收不到Arduino发过来的数据
}

There's two method to receive uart data

using event

UART_Config_t config = {
.baudRate = UART_BAUD_RATE_115200,
.dataBits = UART_DATA_BITS_8,
.stopBits = UART_STOP_BITS_1,
.parity   = UART_PARITY_NONE,
.rxCallback = NULL,
.useEvent = true,
};
2 using call back function
UART_Config_t config = {
.baudRate = UART_BAUD_RATE_115200,
.dataBits = UART_DATA_BITS_8,
.stopBits = UART_STOP_BITS_1,
.parity   = UART_PARITY_NONE,
.rxCallback = myCallbackFunction,
.useEvent = false,
};
Try demo/uart and short RX1 and TX1 pin together

UART_Config_t config = {
.baudRate = UART_BAUD_RATE_115200,
.dataBits = UART_DATA_BITS_8,
.stopBits = UART_STOP_BITS_1,
.parity   = UART_PARITY_NONE,
.rxCallback = OnUart1ReceivedData,
.useEvent = false,
};
UART_Init(UART1,config);
uint8_t temp[20];
uint8_t buffer[50];
        sprintf(temp,"hello:%d,1234567890<PHONE_NUMBER>\n", ++times);
    	UART_Write(UART1,temp,strlen(temp)+1);

void OnUart1ReceivedData(UART_Callback_Param_t param)
{
memset(rxbuffer,0,sizeof(rxbuffer));
uint32_t len = UART_Read(UART1,rxbuffer,param.length,200);
Trace(1,"uart1 received data,length:%d,read:%d,data:%s",param.length,len,rxbuffer);
}
uart1 received data,length:33,read:-2011735367,data: what's the problem?????

RX1 and TX1 pin are connected to together yet

Please, at least add possibility to change timeout between bytes for UART1. I have an dumb device wich freeze byte stream just for about 10 ms in one packet transfer. As result - OS twice call into callback function while just one incomming packet transfer. I can cobmine data and check time for determine end of transfer packet, but cant come up with how do this pretty and simple. And.. thanks for your work! :) It`s really cool device.


Fix write quorum bugs, undo reverts

Fix two bugs in the write quorum logic, add regression tests.

Coverage increased (+0.09%) to 77.146% when pulling c419d4203c9e7762335558b445ed7e4b5d483cc9 on bl/write-quorum-fix into 9ff36a79eff5f3c143dcf0473b6e883b0a0c9b11 on master.

Coverage increased (+0.01%) to 77.063% when pulling f28f42d9f5604ab49b6c85a02f3b02e655e58f00 on bl/write-quorum-fix into 9ff36a79eff5f3c143dcf0473b6e883b0a0c9b11 on master.

Coverage increased (+0.002%) to 77.054% when pulling 9c2a230e6f50019fa3932f7959c7a1daaf73134b on bl/write-quorum-fix into 9ff36a79eff5f3c143dcf0473b6e883b0a0c9b11 on master.

Coverage increased (+0.01%) to 77.191% when pulling ca708328547cfed732853b6b70867ee87e24af84 on bl/write-quorum-fix into d86fc9edbf93a73725685641ad60ecb361c6d110 on master.

Coverage decreased (-0.1%) to 77.067% when pulling 21457fb0fdf7819cd4f850fb462f3f4b7d1f08af on bl/write-quorum-fix into d86fc9edbf93a73725685641ad60ecb361c6d110 on master.

Coverage decreased (-0.005%) to 77.174% when pulling 21457fb0fdf7819cd4f850fb462f3f4b7d1f08af on bl/write-quorum-fix into d86fc9edbf93a73725685641ad60ecb361c6d110 on master.

Coverage increased (+0.01%) to 77.174% when pulling 0c1a848f78ed77a91ba7e57e435bf10df2b08911 on bl/write-quorum-fix into f17fb3ab654b3276843d5f9f1719f8135c3b0c95 on master.

Coverage decreased (-0.1%) to 77.033% when pulling 133d3813684b70d7245c74351a858f1e06280444 on bl/write-quorum-fix into f17fb3ab654b3276843d5f9f1719f8135c3b0c95 on master.

Coverage increased (+0.2%) to 78.012% when pulling 920e717e877bf655564d0869596800f17c81831a on bl/write-quorum-fix into 2ace7a0e5ccebb5c7afe318359c7b6109d9fde89 on master.

Coverage increased (+0.06%) to 77.911% when pulling df99bef8d56187a9353eec563f147f867f1eb3d3 on bl/write-quorum-fix into 2ace7a0e5ccebb5c7afe318359c7b6109d9fde89 on master.

Coverage increased (+0.06%) to 77.911% when pulling df99bef8d56187a9353eec563f147f867f1eb3d3 on bl/write-quorum-fix into 2ace7a0e5ccebb5c7afe318359c7b6109d9fde89 on master.

Coverage increased (+0.2%) to 78.012% when pulling 1a4b83be0e4d8a3284dfa5513b6052ef3d1ea0ed on bl/write-quorum-fix into 2ace7a0e5ccebb5c7afe318359c7b6109d9fde89 on master.

Coverage increased (+0.1%) to 78.003% when pulling a6517cb0b582748d5c9a6d57571d6c1f100c2288 on bl/write-quorum-fix into 2ace7a0e5ccebb5c7afe318359c7b6109d9fde89 on master.

Finished review round, probably only an iteration away from getting this merged 👍 .

Coverage decreased (-0.08%) to 77.827% when pulling 437b9c4ae8d48ba2fa4aa7d9827feeab1781e7ad on bl/write-quorum-fix into cf1ffe8e8ddebbd68d604d81ed0040164a644e27 on master.

Coverage decreased (-0.08%) to 77.827% when pulling 437b9c4ae8d48ba2fa4aa7d9827feeab1781e7ad on bl/write-quorum-fix into cf1ffe8e8ddebbd68d604d81ed0040164a644e27 on master.


Correct typo in contributing.md

Corrected a typo in contributing.md
Before:
Congratulations, you now have a local copy of the Food for Good repo!
After:
Congratulations, you now have a local copy of the Meeting for Good repo!

@tks for the PR @maulikdarji
Please fill free to a contribute more now that you read the contribution guide with so much attention! ;=)

@jrogatis thanks, this was my first contribution :)


Import mega-linter.yml

Import mega-linter.yml, to test mega-linter.
Include file mentioend at https://megalinter.io/latest/install-github/, but at least currently, do not commit directly to the PR, but create a new PR, to be tested/reviewed.
Fix #147.

Looking at configuring megalinter, I tend to like a lot how it's easy to identify how to configure or disable linters, there is a direct link in the test output to the megalinter documentation for a given linter, providing information on the linter home page, it's configuration and so on, such as: https://megalinter.io/v6/descriptors/copypaste_jscpd/
It's very convenient.

It finally works :tada:  :)

What will happen to the super-linter? do we keep it also?

I was expecting to still keep it for some time, till we have more experience and can drop one of the two


Alternative for mocking requests to the Mindee server

Current mock libraries don't support multipart/form-data for mocking request. As a makeshift solution, access to the root url of the API could be facilitated to re-route requests to a server.

Fixed in #69 :sunglasses: : Until a credible mocking lib releases a stable support for multipart/form-data, the simplest solution is to give access to the root url of an endpoint to allow for direct piping into a private testing server.


Add Italian language

@Belim
Pllease merge. Thanks.

@Belim
I was prepared an update for English/Italian (using Japanese strings).
After I red that Japanese language is not updated I closed the PR. Sorry.


Do not assume no color on windows.

recent windows 10 can support colour (it is even enabled in logrus)
however the default formatter does not use colour and so the default log
format is different on windows to other OSes when logging to the
terminal.  This removed the hard code no colour for windows terminals to
be consistent with other OSes
fixes #763

@jtnord there have been back and forth pull request on this topic.
IIRMC, the last pull request desactived coloring on windows, because color support in the terminal depending on the windows version can not been guaranteed.
That said, I'm not a windows expert at all.
Before merging that, I would like you check the last closded pull request on this topic in order to assess what has been done before.

@jtnord what about this one #864 ?

Windows 10 has according to this site more than 50% of the windows desktop market and given the updates are pushed pretty hard, and the version that has ANSI support is pretty old now it would suggest that the switch over point to flip the behaviour is here or very close.  (see also this page for an old breakdown of versions
I guess whilst we can endlessly debate the use of color vs no color the issue we have is that this drives not the use of colour but the output format, and this change does not address that, it was just a simple enough fix for my needs (#763)

This issue is pretty misleading as proposed.
First of all Windows 10 is not the most popular Windows by all measurements,
this site still shows Windows 7 as having that spot:
https://netmarketshare.com/operating-system-market-share.aspx?id=platformsDesktopVersions
Secondly, even with Windows 10 ANSI colors are not enabled by default:
https://superuser.com/questions/413073/-/1300251

@dgsb the reason for my initial PR on this topic was - as i stated there - not that windows 10 was uncapable of supporting colours, it just was not supported by default, you had to turn it on manually (as in the thread linked by @cup). While definitely is possible to use colours, if you know what you are doing, it will not work for most users that have not explicitly enabled it.
People that know, that they enabled it can still use forceColor to have colours, but i think logrus should  by default match with the default windows behaviour.
Another fix could be to just check the registry for the key, but i don't think that would be worth the effort and costs

https://github.com/sirupsen/logrus/pull/822

After looking at this more closely I am actually a fan of this. Windows 10 ANSI
colors are disabled by default:
https://superuser.com/questions/413073/-/1300251
but they still work if the application specifies it, which Logrus does:
https://github.com/sirupsen/logrus/blob/f0375eb5b588893ff556c71dee32d98e57a9b777/terminal_windows.go#L16
For earlier Windows versions it would help if #965 was fixed as well. Currently
with Windows 8.1 this is needed:
package main
import "github.com/mattn/go-colorable"
import "github.com/sirupsen/logrus"
func main() {
   logrus.SetFormatter(&logrus.TextFormatter{ForceColors: true})
   logrus.SetOutput(colorable.NewColorableStdout())
   logrus.Info("aaaaa bbbbb")
}

and this for Windows 10:
package main
import "github.com/sirupsen/logrus"
func main() {
   logrus.SetFormatter(&logrus.TextFormatter{ForceColors: true})
   logrus.Info("aaaaa bbbbb")
}

If this issue was fixed as well as #965, this could be used for Linux,
Windows 10 and Windows 8.1:
package main
import "github.com/sirupsen/logrus"
func main() {
   logrus.Info("aaaaa bbbbb")
}

I hadn't noticed this PR already existed, but I just opened #974 which addresses the old Windows version issue by detecting when EnableVirtualTerminalProcessing fails, and falling back to no colors in that case. It should allow colors on new Windows versions without impacting output on old versions.


Deployments fail on 0.10.0 for projects previously deployed with older versions.

Deployments fail because DeployedResources now depends on the existence of the lambda_functions key which does not exist for deployments made with older versions.
    @classmethod
    def from_dict(cls, data):
        # type: (Dict[str, Any]) -> DeployedResources
        return cls(
            data['backend'],
            data['api_handler_arn'],
            data['api_handler_name'],
            data['rest_api_id'],
            data['api_gateway_stage'],
            data['region'],
            data['chalice_version'],
            data['lambda_functions'],
        )

Confirmed.  The fix is pretty easy, but I'm not sure if we can tackle upgrade tests as part of this fix.  It's probably something we should look at post 1.0.


F# Documentation on namespaces and namespace syntax lacks some details

Originally reported in visualfsharp repo: https://github.com/Microsoft/visualfsharp/issues/3485.
When I found out that a file can contain multiple namespaces (I have the policy of having one namespace per file) I looked up the documentation and found a few key points missing:

The syntax does not include the syntax for qualified modules, which can also declare a namespace (though this is explained later on, the subject is namespaces and the syntax should be complete)
The main syntax bulb should show the full syntax, or show two variants (pre and post 4.1), my preference is to just show the new syntax in full and add a remark that the rec keyword is supported from F# 4.1.
The introduction says that once you have a namespace declaration, the entire file will be in that namespace. This suggests that there can be only namespace declaration per file and raises the wrong assumptions for readers not going through the all sections: it is in fact only until the next namespace declaration (a remark can link to the section on nested namespaces).
I wouldn't object, or in fact, welcome, a clear enumeration on the syntax peculiarities, right after the intro-line under Remarks, for instance:

Namespaces cannot be nested (link to section on nested namespaces)
Namespaces can be preceded by comments, but XML doc or simple documentation comments are allowed but ignored
Namespaces can be preceded by compiler directives
Namespaces can be recursive (link to that section)
Namespaces need not be unique, they can span multiple files or even projects
A qualified module declaration (i.e., implicit namespace) cannot have other namespace or module declarations at the top-level
A nested module cannot have an implicit namespace

I'd be happy to fix this myself (provided there's some consensus here). I'd just need a pointer to where I find this in the source (sorry, it'll be my first commit, a little new to that).

As per the comment by @cartermp over there, I'll try fix this myself by creating a PR for this.

Sounds great @abelbraaksma.  Let me know if you need any help!

@abelbraaksma Do you still have plans to submit a PR on this? If not, we'll unassign and open it up for others to work on.

@BillWagner, I actually forgot about this. Thanks for the pointer. Yes, I can work on this, in a few weeks I've finished a big project and I should have more time on my hands. Of course, if meanwhile someone else wants to start on it, by all means, don't let me stop you ;).


Fixed Get-LogWinEvent, updated README.MD

Fixed issue with Get-LogWinEvent to deal with issue #199. Also updated README.MD to provide guidance on some of the newer features integrated in to Kansa.

Functionally speaking, yes.
There’s a check to see if the user specified any event IDs. If so, the function will iterate through each specified log for the requested IDs.
If there’s no specified event IDs, the function will query each specified event log and return all log entries.


meta-lxatac-software: move conf-notes.txt to template directory

Otherwise it will not be found and used by oe-setup-builddir and user information about buildable targets is missing.
Fixes 27572845 ("meta-lxatac-software: move config templates to separate folder")

Thanks! I never noticed that the conf notes went missing. Having them back should be quite helpful to new users.


made all of the edits still getting error

(videollama2) PS C:\Users\strau\Downloads\DeepSpeed-0.14.0\DeepSpeed-0.14.0> .\build_win.bat
Administrative permissions required. Detecting permissions...
Success: Administrative permissions confirmed.
DS_BUILD_OPS=1
test.c
LINK : fatal error LNK1181: cannot open input file 'aio.lib'
[WARNING]  async_io requires the dev libaio .so object and headers but these were not found.
[WARNING]  If libaio is already installed (perhaps from source), try setting the CFLAGS and LDFLAGS environment variables to where it can be found.
Traceback (most recent call last):
File "C:\Users\strau\Downloads\DeepSpeed-0.14.0\DeepSpeed-0.14.0\setup.py", line 193, in
ext_modules.append(builder.builder())
^^^^^^^^^^^^^^^^^
File "C:\Users\strau\Downloads\DeepSpeed-0.14.0\DeepSpeed-0.14.0\op_builder\builder.py", line 633, in builder
assert_no_cuda_mismatch(self.name)
File "C:\Users\strau\Downloads\DeepSpeed-0.14.0\DeepSpeed-0.14.0\op_builder\builder.py", line 101, in assert_no_cuda_mismatch
raise CUDAMismatchException(
op_builder.builder.CUDAMismatchException: >- DeepSpeed Op Builder: Installed CUDA version 12.1 does not match the version torch was compiled with 11.8, unable to compile cuda/cpp extensions without a matching cuda version.
(videollama2) PS C:\Users\strau\Downloads\DeepSpeed-0.14.0\DeepSpeed-0.14.0>

You are using the wrong version of torch made for cuda 11.8 instead of 12.1 as seen in the log.

op_builder.builder.CUDAMismatchException: >- DeepSpeed Op Builder: Installed CUDA version 12.1 does not match the version torch was compiled with 11.8, unable to compile cuda/cpp extensions without a matching cuda version.