xcbuild refactor

Refactors xcbuild to better emulate the real Xcodebuild. Hoping to use this to get rid of some of the "no-xcode" patches that exist in Nixpkgs.

Success on x86_64-linux (full log)
Attempted: xcbuild
Partial log (click to expand)
building path(s) ‘/nix/store/hnay13k4djxn30lyaccfm7yqqw5zmadc-xcode-select’
building path(s) ‘/nix/store/fqf6lvx1n2xfvjjwcrsfn5jqnsw11bdh-Platforms’
building path(s) ‘/nix/store/iivsi2ak9wi6p0i3awrf011rc7kxvwk2-xcrun’
building path(s) ‘/nix/store/i5kls4ym31b6qrgf1c9ars5d0f117ylg-xcodebuild-0.1.2-pre’
shrinking RPATHs of ELF executables and libraries in /nix/store/i5kls4ym31b6qrgf1c9ars5d0f117ylg-xcodebuild-0.1.2-pre
patching script interpreter paths in /nix/store/i5kls4ym31b6qrgf1c9ars5d0f117ylg-xcodebuild-0.1.2-pre
/nix/store/i5kls4ym31b6qrgf1c9ars5d0f117ylg-xcodebuild-0.1.2-pre/bin/xcrun: interpreter directive changed from "/usr/bin/env sh" to "/nix/store/8zkg9ac4s4alzyf4a8kfrig1j73z66dw-bash-4.4-p23/bin/sh"
/nix/store/i5kls4ym31b6qrgf1c9ars5d0f117ylg-xcodebuild-0.1.2-pre/bin/xcode-select: interpreter directive changed from "/usr/bin/env sh" to "/nix/store/8zkg9ac4s4alzyf4a8kfrig1j73z66dw-bash-4.4-p23/bin/sh"
checking for references to /tmp/nix-build-xcodebuild-0.1.2-pre.drv-0 in /nix/store/i5kls4ym31b6qrgf1c9ars5d0f117ylg-xcodebuild-0.1.2-pre...
/nix/store/i5kls4ym31b6qrgf1c9ars5d0f117ylg-xcodebuild-0.1.2-pre

Success on aarch64-linux (full log)
Attempted: xcbuild
Partial log (click to expand)
building '/nix/store/cvxgvr63rna4zsbqkbzhwmdf12ys539j-SDKs.drv'...
building '/nix/store/q9678dx338xzn9k151zv2czcz9xmjl97-Platforms.drv'...
building '/nix/store/9bjjnxga50khbg3k476aviwrixlir7ac-xcrun.drv'...
building '/nix/store/917s1d885pyn5jk883q4pfvblxwyr290-xcodebuild-0.1.2-pre.drv'...
shrinking RPATHs of ELF executables and libraries in /nix/store/rh4f9c9nnq7qc2c7b0923d49p8vimici-xcodebuild-0.1.2-pre
patching script interpreter paths in /nix/store/rh4f9c9nnq7qc2c7b0923d49p8vimici-xcodebuild-0.1.2-pre
/nix/store/rh4f9c9nnq7qc2c7b0923d49p8vimici-xcodebuild-0.1.2-pre/bin/xcrun: interpreter directive changed from "/usr/bin/env sh" to "/nix/store/p0vy17dp9jk2mvqsxsqnb14s3797lay7-bash-4.4-p23/bin/sh"
/nix/store/rh4f9c9nnq7qc2c7b0923d49p8vimici-xcodebuild-0.1.2-pre/bin/xcode-select: interpreter directive changed from "/usr/bin/env sh" to "/nix/store/p0vy17dp9jk2mvqsxsqnb14s3797lay7-bash-4.4-p23/bin/sh"
checking for references to /build in /nix/store/rh4f9c9nnq7qc2c7b0923d49p8vimici-xcodebuild-0.1.2-pre...
/nix/store/rh4f9c9nnq7qc2c7b0923d49p8vimici-xcodebuild-0.1.2-pre

Success on x86_64-darwin (full log)
Attempted: xcbuild
Partial log (click to expand)
building '/nix/store/2mkpn4b2xlv8ka5irfy7z2yizqvjhb11-SDKs.drv'...
building '/nix/store/s597d30001q8plycprlgzzdwqqdwhws0-version.plist.drv'...
building '/nix/store/kaxz24y97c65mi8r8nnqysyp7gjg00q7-xcode-select.drv'...
building '/nix/store/yls4jpsx0ijwpc3cac10j54vxdc8inil-Platforms.drv'...
building '/nix/store/lx15lna7s90ak2zj237ll14g6fs4vxrq-xcrun.drv'...
building '/nix/store/cya0kqsx1b96xh4jh18mms4r36bws26w-xcodebuild-0.1.2-pre.drv'...
patching script interpreter paths in /nix/store/7qq00xrh2ncj0aix75p39akdvi8fdvnc-xcodebuild-0.1.2-pre
/nix/store/7qq00xrh2ncj0aix75p39akdvi8fdvnc-xcodebuild-0.1.2-pre/bin/xcode-select: interpreter directive changed from "/usr/bin/env sh" to "/nix/store/q2wqq1k20v8kc3vckapqf5nws30brnni-bash-4.4-p23/bin/sh"
/nix/store/7qq00xrh2ncj0aix75p39akdvi8fdvnc-xcodebuild-0.1.2-pre/bin/xcrun: interpreter directive changed from "/usr/bin/env sh" to "/nix/store/q2wqq1k20v8kc3vckapqf5nws30brnni-bash-4.4-p23/bin/sh"
/nix/store/7qq00xrh2ncj0aix75p39akdvi8fdvnc-xcodebuild-0.1.2-pre

@grahaamcofborg build darwin.adv_cmds unixtools

Success on aarch64-linux (full log)
Attempted: unixtools
The following builds were skipped because they don't evaluate on aarch64-linux: darwin.adv_cmds
Partial log (click to expand)
/nix/store/i1y673pinr5s11cncq32rxm9w7sqwlmi-quota-1003.1-2008
/nix/store/vw8201wl0w2agdj0z3y6byvspvn3c1av-route-1003.1-2008
/nix/store/h47937jhmw2p2w2xfw2s8lmssg046svn-script-1003.1-2008
/nix/store/x59ljw2cff9a6578bxd9519g4r0rhnqq-sysctl-1003.1-2008
/nix/store/b3chahpsm400n4c2jva25zak30mnpz2i-top-1003.1-2008
/nix/store/qxj271ljcpynhmkqb3rrvbdlpmnvlc9g-umount-1003.1-2008
/nix/store/v4ll1czym454xx10lp0r8rkrrffr7wy6-utillinux-compat-1003.1-2008
/nix/store/44rppvribxw5z3syrhava7z8rcsqhh6j-wall-1003.1-2008
/nix/store/m7lq0j1pcrf2i5h69js2626h7kygyl71-whereis-1003.1-2008
/nix/store/iwsmrih0b45pw3qjkgz9hmblkfn283fc-write-1003.1-2008

Success on x86_64-linux (full log)
Attempted: unixtools
The following builds were skipped because they don't evaluate on x86_64-linux: darwin.adv_cmds
Partial log (click to expand)
/nix/store/ym1il7bp772p4brdqid09aal14j864kd-quota-1003.1-2008
/nix/store/fx1jls0ww261lbifg74qqq4a0i8jhh8s-route-1003.1-2008
/nix/store/zs61iaqbb7gamnmj5plyjpbh2sn8dk3v-script-1003.1-2008
/nix/store/6qs9xp2fj1l8z9xf48slr0lz67lynbvg-sysctl-1003.1-2008
/nix/store/i3h8wlbxxfjpsm6a333i0gjkyg6yi0rf-top-1003.1-2008
/nix/store/hm07rg2l45sdpyxcg3x88qnzv3ah2r5j-umount-1003.1-2008
/nix/store/gp6d5daxi5rlrklpwg91c4f9ykym9v1b-utillinux-compat-1003.1-2008
/nix/store/4j2462ka0h370r7p7hnxjy6ir2gqb3l8-wall-1003.1-2008
/nix/store/jzzfak5cy9crbkvybmmxzhm03dwirzm4-whereis-1003.1-2008
/nix/store/8jkmsijazvznv22kk9nz2991qaldk46w-write-1003.1-2008

Success on x86_64-darwin (full log)
Attempted: darwin.adv_cmds
The following builds were skipped because they don't evaluate on x86_64-darwin: unixtools
Partial log (click to expand)
    export PATH=/nix/store/g09k9js3anfbcg43zqs4yq8zvcdcw7y4-Platforms/MacOSX.platform/Developer/usr/bin:/nix/store/g09k9js3anfbcg43zqs4yq8zvcdcw7y4-Platforms/MacOSX.platform/usr/local/bin:/nix/store/g09k9js3anfbcg43zqs4yq8zvcdcw7y4-Platforms/MacOSX.platform/usr/bin:/nix/store/g09k9js3anfbcg43zqs4yq8zvcdcw7y4-Platforms/MacOSX.platform/usr/local/bin:/nix/store/k20kg2m6b1qnrm95b87fis5767cmaziy-Toolchains/XcodeDefault.xctoolchain/usr/bin:/nix/store/k20kg2m6b1qnrm95b87fis5767cmaziy-Toolchains/XcodeDefault.xctoolchain/usr/libexec:/nix/store/7qq00xrh2ncj0aix75p39akdvi8fdvnc-xcodebuild-0.1.2-pre/usr/bin:/nix/store/7qq00xrh2ncj0aix75p39akdvi8fdvnc-xcodebuild-0.1.2-pre/usr/local/bin:/nix/store/7qq00xrh2ncj0aix75p39akdvi8fdvnc-xcodebuild-0.1.2-pre/Tools:/nix/store/7qq00xrh2ncj0aix75p39akdvi8fdvnc-xcodebuild-0.1.2-pre/bin:/nix/store/k20kg2m6b1qnrm95b87fis5767cmaziy-Toolchains/XcodeDefault.xctoolchain/usr/bin:/nix/store/ckq71kkymh1ji2b44xn80wmr7fmi6wr5-clang-wrapper-5.0.2/bin:/nix/store/bcl9zj60h52p47dy85s326mdrqx52417-clang-5.0.2/bin:/nix/store/5q51r2d0xzs4hi8rb661drpf83mhm4b4-coreutils-8.29/bin:/nix/store/qk4fdnzkr8r0gihgyps7x07cpyffvkmy-cctools-binutils-darwin-wrapper/bin:/nix/store/7ddbq63v97nk8gkbf7gcsfmby37h6gbl-cctools-binutils-darwin/bin:/nix/store/qr7cj3ip4anzjqx4xgs228jb22zjvc7g-ncurses-6.1-dev/bin:/nix/store/3mrldk4v82yjzh2ycnx8wnycpqmahar8-ncurses-6.1/bin:/nix/store/58xlgxhyzypr382m9fln821adlz4v2kr-findutils-4.6.0/bin:/nix/store/7v2pjilrdvy68a6xrvw72yifqx395x42-diffutils-3.6/bin:/nix/store/kbgg9i4gd3f0n2418yww8s4grqx37gak-gnused-4.5/bin:/nix/store/g9b1s04vm9fwb67hr5zfva3lq52wjdrc-gnugrep-3.1/bin:/nix/store/9plisrv0jva3wq0m5fj2b4nfr42p1858-gawk-4.2.1/bin:/nix/store/cj0pwxwmzfsq4mwjfsiw1aqgq7458v1q-gnutar-1.30/bin:/nix/store/dglgzx6kc2r0ifmxcsrkcr9xy1rnihgj-gzip-1.9/bin:/nix/store/d7nz5zrga643vj72vwnqf4zkig8wlxm9-bzip2-<IP_ADDRESS>.1-bin/bin:/nix/store/bgx7fdb9rjwwq4dcyw08a300w43mw5hh-gnumake-4.2.1/bin:/nix/store/q2wqq1k20v8kc3vckapqf5nws30brnni-bash-4.4-p23/bin:/nix/store/va635mxp5cxn3ad1a4dpbp574p49m0mg-patch-2.7.6/bin:/nix/store/0l4wbb28gzc42gsd1xvsmmwc0770aqkc-xz-5.2.4-bin/bin
    /nix/store/k20kg2m6b1qnrm95b87fis5767cmaziy-Toolchains/XcodeDefault.xctoolchain/usr/bin/dsymutil /private/tmp/nix-build-adv_cmds-osx-10.11.6.drv-0/adv_cmds-163/Products/Release/whois -o /private/tmp/nix-build-adv_cmds-osx-10.11.6.drv-0/adv_cmds-163/Products/Release/whois.dSYM

** BUILD SUCCEEDED **
installing
post-installation fixup
gzipping man pages under /nix/store/xlj670qap1y8ypj2yncizknwpzm34iq9-adv_cmds-osx-10.11.6/share/man/
strip is /nix/store/k20kg2m6b1qnrm95b87fis5767cmaziy-Toolchains/XcodeDefault.xctoolchain/usr/bin/strip
stripping (with command strip and flags -S) in /nix/store/xlj670qap1y8ypj2yncizknwpzm34iq9-adv_cmds-osx-10.11.6/bin
patching script interpreter paths in /nix/store/xlj670qap1y8ypj2yncizknwpzm34iq9-adv_cmds-osx-10.11.6

@grahamcofborg build unixtools.procps unixtools.utillinux unixtools.nettools

Success on x86_64-linux (full log)
Attempted: unixtools.procps, unixtools.utillinux, unixtools.nettools
Partial log (click to expand)
building path(s) ‘/nix/store/4jj9kkch64ldxvgrn279sxigfgf34wsq-hexdump-1003.1-2008’
building path(s) ‘/nix/store/zs61iaqbb7gamnmj5plyjpbh2sn8dk3v-script-1003.1-2008’
building path(s) ‘/nix/store/hm07rg2l45sdpyxcg3x88qnzv3ah2r5j-umount-1003.1-2008’
building path(s) ‘/nix/store/jzzfak5cy9crbkvybmmxzhm03dwirzm4-whereis-1003.1-2008’
building path(s) ‘/nix/store/8jkmsijazvznv22kk9nz2991qaldk46w-write-1003.1-2008’
building path(s) ‘/nix/store/gp6d5daxi5rlrklpwg91c4f9ykym9v1b-utillinux-compat-1003.1-2008’
created 10 symlinks in user environment
/nix/store/yfkf5cx23pij9m4qpcirf5ib4ra1mfk7-procps-compat-1003.1-2008
/nix/store/gp6d5daxi5rlrklpwg91c4f9ykym9v1b-utillinux-compat-1003.1-2008
/nix/store/6ivc5apsky13dbg143m02kvdh68w07cf-nettools-compat-1003.1-2008

Success on aarch64-linux (full log)
Attempted: unixtools.procps, unixtools.utillinux, unixtools.nettools
Partial log (click to expand)
/nix/store/jdpf2nfv2pz5c11dgdq1s2mhw64595ln-procps-compat-1003.1-2008
/nix/store/v4ll1czym454xx10lp0r8rkrrffr7wy6-utillinux-compat-1003.1-2008
/nix/store/4sb9bp1a4qxskbmk56dp6860cd1rns9k-nettools-compat-1003.1-2008

Success on x86_64-darwin (full log)
Attempted: unixtools.procps, unixtools.utillinux, unixtools.nettools
Partial log (click to expand)
building '/nix/store/8i3x32qhqdg8xwm6a799kpdykh212mba-top-1003.1-2008.drv'...
building '/nix/store/c6rinwmknnq9n5f045qq5ywzc9zc4pd0-whereis-1003.1-2008.drv'...
building '/nix/store/rsykld71gfqjyxs4mmpp62w9k55b07xm-procps-compat-1003.1-2008.drv'...
created 3 symlinks in user environment
building '/nix/store/ndxdmvymrr2xx0x61ycs22bfvhks2dh9-write-1003.1-2008.drv'...
building '/nix/store/32z95wpigr62145zs4smcj70n2ibkjfm-utillinux-compat-1003.1-2008.drv'...
created 10 symlinks in user environment
/nix/store/m7zkn6k0prq358w8npi18ac9q14zaq49-procps-compat-1003.1-2008
/nix/store/wynnis9wq308qxmq8i2mmpskv40y7y0v-utillinux-compat-1003.1-2008
/nix/store/8rymfs7j9rv2194n2djxjjl20alrhif8-nettools-compat-1003.1-2008

Success on aarch64-linux (full log)
Attempted: xcbuild
Partial log (click to expand)
/nix/store/rh4f9c9nnq7qc2c7b0923d49p8vimici-xcodebuild-0.1.2-pre

Success on x86_64-linux (full log)
Attempted: xcbuild
Partial log (click to expand)
building '/nix/store/kbcmr54pn9divdpags6lwwcl3jp3anpb-Toolchains.drv'...
building '/nix/store/syrd7q813vxnwrzw3mdg37wqjr6dl9al-Platforms.drv'...
building '/nix/store/iamrgdx9l7ldabhw952jld2ca4zlxcn8-xcrun.drv'...
building '/nix/store/qk7k31qa07rj5kng5c5dd8pb214zbxn2-xcodebuild-0.1.2-pre.drv'...
shrinking RPATHs of ELF executables and libraries in /nix/store/i5kls4ym31b6qrgf1c9ars5d0f117ylg-xcodebuild-0.1.2-pre
patching script interpreter paths in /nix/store/i5kls4ym31b6qrgf1c9ars5d0f117ylg-xcodebuild-0.1.2-pre
/nix/store/i5kls4ym31b6qrgf1c9ars5d0f117ylg-xcodebuild-0.1.2-pre/bin/xcode-select: interpreter directive changed from "/usr/bin/env sh" to "/nix/store/8zkg9ac4s4alzyf4a8kfrig1j73z66dw-bash-4.4-p23/bin/sh"
/nix/store/i5kls4ym31b6qrgf1c9ars5d0f117ylg-xcodebuild-0.1.2-pre/bin/xcrun: interpreter directive changed from "/usr/bin/env sh" to "/nix/store/8zkg9ac4s4alzyf4a8kfrig1j73z66dw-bash-4.4-p23/bin/sh"
checking for references to /build in /nix/store/i5kls4ym31b6qrgf1c9ars5d0f117ylg-xcodebuild-0.1.2-pre...
/nix/store/i5kls4ym31b6qrgf1c9ars5d0f117ylg-xcodebuild-0.1.2-pre

@matthewbauer ❤

Success on x86_64-darwin (full log)
Attempted: xcbuild
Partial log (click to expand)
/nix/store/7qq00xrh2ncj0aix75p39akdvi8fdvnc-xcodebuild-0.1.2-pre


update 2.16.2

Linter check found the following problems:
The following problems have been found:
ERROR: /tmp/abs_12v0r5siwg/clone/recipe/meta.yaml:29: remove_python_pinning: On arch specific packages, python deps should not be constrained.
WARNING: /tmp/abs_12v0r5siwg/clone/recipe/meta.yaml:77: documentation_overspecified: Using doc_url and doc_source_url is overspecified
Errors were found

Linter check found the following problems:
The following problems have been found:
WARNING: /tmp/abs_a1tb71ake2/clone/recipe/meta.yaml:79: documentation_overspecified: Using doc_url and doc_source_url is overspecified
Warnings were found


Support Python 3.12 and drop support for EOL Python 3.7

All checks 🟢 over on my fork: https://github.com/edgarrmondragon/tap-rest-api-msdk/actions/runs/9581170283


Desktop info not working properly

Desktop info is shown in bottom right instead of left, and hiding entire "Network Information" and "Storage" categories does not work.
Version <IP_ADDRESS>892 (<IP_ADDRESS>892).
Config snippet as follows - desktop info is shown and single items are hidden properly, so it works partially.
			<key>ShowDesktopInfo</key> 			<true/> 			<key>DesktopInfoBackgroundColor</key> 			<string>#000000</string> 			<key>DesktopInfoBackgroundOpacity</key> 			<real>0.5</real> 			<key>DesktopInfoLevel</key> 			<integer>5</integer> 			<key>DesktopInfoHideItems</key> 			<array> 				<string>Model</string> 				<string>Processor</string> 				<string>Network Information</string> 				<string>Memory</string> 				<string>OSBuild</string> 				<string>OSVersion</string> 				<string>Storage</string> 			</array> 			<key>DesktopInfoFontSize</key> 			<integer>16</integer> 			<key>DesktopPosition</key> 			<string>BottomLeft</string>

Update: installed the release <IP_ADDRESS>909 version which fixed the hiding issue but not the alignment issue.

I could swear the config info was wrong in the wiki an hour ago because I double-checked it. But LowerLeft works, and wiki shows correct information as well, this one is case closed then.

I just updated :D I will close this


Create responsive UI for login page

Created a responsive UI for the Login page. I'm not a UI guy, so I'm not sure if this is the right way to go about overriding react-bootstrap or reformatting the page between mobile and not.
Let me know what you guys think!

Mobile view

Desktop view

looks good

Looks good!


SEO: Compress images

The SEO guide recommends images should be under 100KB, and pointed to a list of images to be shrunk in the Docs.
I went over the list and managed to get all of them down to 100KB without noticeable loss of quality, except in one case. This is the list of changes:

URL: https://flashbots-docs-git-gkoscky-resize-images-flashbots.vercel.app/brand-assets

flashbots_logo_dark.jpg

brand asset; kept as-is

flashbots_logo_light.jpg

brand asset; kept as-is

URL: https://flashbots-docs-git-gkoscky-resize-images-flashbots.vercel.app/flashbots-auction/overview

block-builder-flow.png

Resized to 1000px wide; 114KB → 65KB

mevboost-searcher-bundle-flow.png

Resized to 1000px wide; 275KB → 80KB

searcher-architecture.png

Resized to 1000px wide; 112KB → 74KB

validator-flow.png

Resized to 800px wide; 161KB → 93KB

URL: https://flashbots-docs-git-gkoscky-resize-images-flashbots.vercel.app/flashbots-mev-boost/introduction

mev-boost-integration-overview.png

Moved from Github to Docs; Converted from PNG to JPG
Resized to 960px wide; 320KB → 75KB

URL: https://flashbots-docs-git-gkoscky-resize-images-flashbots.vercel.app/flashbots-mev-boost/relay

Z1AtQpw.png

Moved from Imgur to Docs; Converted from PNG to JPG
Renamed mev-boost-relay-spec.jpg
Resized to 960px wide; 848KB → 99KB

URL: https://flashbots-docs-git-gkoscky-resize-images-flashbots.vercel.app/flashbots-mev-share/searchers/tutorials/flash-loan-arbitrage/bot

qpepe5.png

Resized to 800px wide; 272KB → 95KB

URL: https://flashbots-docs-git-gkoscky-resize-images-flashbots.vercel.app/flashbots-mev-share/searchers/tutorials/limit-order/sending-bundles

mario-finish.png

Converted from PNG to JPG; 415KB → 100KB

limit-order-logs-1.png

Removed; Replaced with plain text

limit-order-logs-2.png

Removed; Replaced with plain text

URL: https://flashbots-docs-git-gkoscky-resize-images-flashbots.vercel.app/flashbots-mev-share/searchers/tutorials/limit-order/using-events

mev-share-events.png

Removed; Replaced with plain text

URL: https://flashbots-docs-git-gkoscky-resize-images-flashbots.vercel.app/flashbots-protect/quick-start

mm_rpc.png

Converted from PNG to JPG; 200KB → 102KB
Image lost transparency
Any more compression and the image would lose too much quality

Task: Image Issues
Following the SEO guide here: https://docs.google.com/spreadsheets/d/13Xa_TKfuKrWzrK0zCgJNnQPXFK95hiBxqnLWE7cvHN8/edit#gid=236344903

Thanks a ton!


Metrics and autoscaler support

I'm creating this issue to wrap up my rough idea for metrics and autoscaler.
Kubernetes do vertical and horizontal scale based on metrics collected from Node, like based on CPU or Memory, which can also based on customized metrics, horizontal-pod-autoscale explained it clearly. @bpradipt raised issue and suggest to use admission mutation webhook and advertises extended resources to do resource management. With this extended resources in place, we can implement a customized metrics apiserver and collect these data, so that it can be used by the scaler. An custom-metrics-apiserver example can be found in custom-metrics-apiserver.
The open problem is how to collect metrics data, these data is actually the CPU/Memory used by PeerPod and reflecting to the advertises extended resources described in  issue . I think it can be collected by adaptor in Node or the individual PeerPod. One approach might be as following:

Resource Management define advertises extended resources and map Pod CPU/Memory resources to that  advertises extended resources via webhook
Add a custom-metrics-apiserver to collect these advertises extended resources as customized-metrics
A service in PeerPod report these customized-metrics per Pod to custom-metrics-apiserver
Specify the customized-metrics as HorizontalPodAutoscaler of the deployment replicas

@huoqifeng is this issue still relevant or can be closed?
If it's still relevant to what release do you think we should map it to (mid-November, end-December, mid-February etc...)?

I'd like set it to end-December

Added it to the CoCo releases project, drop V0.3.0 priority medium

@huoqifeng should this issue be in-progress?
Do you think it can converge on time for the V0.3.0 release on the 22nd of January?

https://github.com/kubernetes-sigs/controller-runtime/blob/222fb669e109f4bffdf7fc14a2ac02a2a6e496ba/pkg/manager/manager_test.go#L1187-L1225
found a code sample to create and use Metrics in webhook.

@SamYuan1990 @huoqifeng  any ideas on this issue ?

Given that moving it out of the current release 0.6.0

@huoqifeng @bpradipt I wonder both the horizontal and vertical autoscalers work as expected with the current mutating webhook solution because the autoscalers:

rely on the CPU and memory pod metrics which are handled by the kata agent, and
update the original pod spec which is not yet mutated.

Is my understanding correct?

@huoqifeng @bpradipt I wonder both the horizontal and vertical autoscalers work as expected with the current mutating webhook solution because the autoscalers:
* rely on the CPU and memory pod metrics which are handled by the kata agent, and

* update the original pod spec which is not yet mutated.

Is my understanding correct?

I don't think so but @bpradipt might correct me. The mutating webhook solution today can calculate the total virtual CPU/Memories on a node and record what PeerPods consumed and decide whether a new PeerPod can be scheduled to this node. But can not collect/report CPU/Memory metrics that will be used for autoscaling. We'll need a mechanism to collect PeerPods metrics and leverage it for horizontal scaling.

@huoqifeng The autoscalers ask the metrics server to collect CPU and memory usage of a pod. The request is eventually forwarded to kubelet -> container runtime -> kata-shim -> kata-agent. I think kata-agent uses the cgroups crate and can collect CPU and memory metrics of the containers in a peer pod.


Update C++ linter to use gcc default version of C++

Now that C++17 has been out for a while, I think it is a better default for the C++ linter to not force C++14 and instead use the system default. I'm on Ubuntu 22.04 and the system default C++ version is now c++17 (actually gnu++17).
https://github.com/zyedidia/micro/blob/2898f1590d7a0588c5ae27753b2d68bd2607156a/runtime/plugins/linter/linter.lua#L69
I can submit a PR assuming it is just removing the flag from linter.lua.

I think that would be good change, at this point defaulting to c++14 is just weird. The other option to consider would be to default to the latest C++ version so it at least never complains about valid code (because of backwards compatibility guarantees), but I think using the system default is more sensible as it doesn't need to be updated every time there's a new C++ version.
If users want to specify a certain C++ version they can add makeLinter() in their init.lua.

This change was already recommended in #2962 too (see this comment).

Maybe if this PR is small it can be accepted quicker.


Active Power Regulation

Hi,
i want to throttle the inverter dynamicaly via the Active Power Regulation.

I have no knowledge about the inverters' hardware and design, so I'm not able to answer this question. You should rather ask Deye support about that. From my experience with electronics I can say that, EEPROM is not the only possible option. Other alternative is a battery backed RAM, or a combination of both RAM and EEPROM with automatic data backup to EEPROM in an event of AC or DC power loss.


Syft version is [not provided] in most formats

Most formats do not record the version of Syft used. The version is reported as [not provided].
For instance, with cyclonedx-json:
$ docker sbom --version
sbom-cli-plugin 0.6.0, build 741c56e0db8c65d853f18e0a9b23287d33b30e05

$ docker sbom alpine:latest --format cyclonedx-json | jq -r .metadata.tools
[
  {
    "vendor": "anchore",
    "name": "syft",
    "version": "[not provided]"
  }
]

Looking at the upstream code, I think this is down to the fact that some/most formats don't respect the Descriptor.Version field in the SBOM and just use version.FromBuild().Version which won't be populated when using syft as a library.
Here's a table comparing all the formats. A 🟢 indicates that it reports the expected version; a 🔴 indicates a missing version.

Format
Pass/Fail
Notes

syft-json
🟢

cyclonedx-xml
🔴

cyclonedx-json
🔴

github-0-json
🔴
Reports 0.0.0-dev

spdx-tag-value
🔴

spdx-json
🔴

table
🟢
N/A

text
🟢
N/A

@ribbybibby thank you for reporting this problem and researching possible root causes. As you mentioned this is a Syft issue, so I will continue this thread on https://github.com/anchore/syft/issues/1010.


Remove the "I'm developing a custom solution based on PDF.js core library. Can you help me?" section from the FAQ

Configuration:

Web browser and its version: Firefox 116.0.3
Operating system and its version: Windows 11, version 22H2
PDF.js version: v3.9.179
Is a browser extension: No

Steps to reproduce the problem:

Post an issue on this github page requesting any form of help that is currently unsupported by pdf.js
View immediate response by devs declining requested help.

What is the expected behavior?
Good faith attempt at help as described in the "I'm developing a custom solution based on PDF.js core library. Can you help me?" section from the FAQ.
What went wrong?
Devs do not provide good faith attempt at help as described in the "I'm developing a custom solution based on PDF.js core library. Can you help me?" section from the FAQ.

We're trying to help users as much as we can, sorry to hear you feel like we aren't.

I know by looking at opened issues for the past several years that you likely will not respond to this, and by that same method, I know that you have canned responses for anything outside of current pdfjs functionality.
Why put this in the faq when a cursory glance at github issues shows that you do not support anything outside of current pdfjs functionality?

Maybe your cursory glance was too cursory. Our job is literally to add support for additional functionality requested by users. You can take a look at many of the issues in https://github.com/mozilla/pdf.js/issues?page=1&q=is%3Aissue+is%3Aclosed+sort%3Acomments-desc+label%3Afeature or bugs on Bugzilla or ideas on Mozilla Connect.

Please read the issue. I'm not talking about adding functionality requested by users. I am specifically referring to custom solutions based on the PDF.js core library, as specified in the FAQ. Apologies for not being clear, I should have specifically referenced custom solutions instead of "current pdfjs functionality".
Clearly there is a scope disconnect between the roles of requesting additional functionality within PDF.js and requesting assistance for custom solutions based on the PDF.js core library. This wouldn't be an issue if there was adequate documentation.


Possibility to set MessageProperties in the AMQP contract DSL

Is your feature request related to a problem? Please describe.
When defining a contract for AMQP messaging, we have a need to be able to specify message-properties other than headers to be enforced.
For example we'd like to have the MessageProperty "type" as a part of the contract. At the moment it seems like the header 'amqp_receivedRoutingKey' is interpreted and added as the 'receivedRoutingKey' property, but there's no way of injecting other properties.
Describe the solution you'd like
An extension to the contract DSL, enabling the option for outputMessage to have a field 'messageProperties' where properties can be added in a similar way as headers are today. Making the contract definition looking something like the following:
Contract.make {
    description('Description')
    label('some_label')
    input {
        triggeredBy('test()')
    }
    outputMessage {
        sentTo('exchange-name')
        headers {
          header 'contentType', applicationJson()
          header 'amqp_receivedRoutingKey', 'my-routingKey'
        }
        messageProperties {
          messageProperty 'type', 'TYPE'
          messageProperty 'messageId', 'MESSAGE-ID'
          messageProperty 'timestamp', 'TIMESTAMP'
        }
        body ([
          some: 'body'
        ])
    }
}

Resulting in the three properties: type, messageId & timestamp being populated in the message's org.springframework.amqp.core.MessageProperties and values enforced by generated tests and the contract verifier.
Describe alternatives you've considered
Another, inferior, option would be to support the other message properties the same way amqp_receivedRoutingKey.

So with the metadata feature added in 3.0.0 we'll be able to push those things to maybe
Contract.make {
    description('Description')
    label('some_label')
    input {
        triggeredBy('test()')
    }
    outputMessage {
        sentTo('exchange-name')
        headers {
          header 'contentType', applicationJson()
          header 'amqp_receivedRoutingKey', 'my-routingKey'
        }
        body ([
          some: 'body'
        ])
    }
   metadata("amqp": [
      outputMessage:  [
        messageProperties: [
          'type':  'TYPE'
          'messageId': 'MESSAGE-ID'
          'timestamp': 'TIMESTAMP'
          ]
        ]
   ])
}

that way if there's such an entry in the metadata then we'd apply it for amqp based messages. WDYT?

Related issue https://github.com/spring-cloud/spring-cloud-contract/issues/1465

That sounds good. As of today we have basically overridden the
org.springframework.cloud.contract.verifier.messaging.amqp.SpringAmqpStubMessages.send(...) method in order to inject custom properties, similar to how amqp_receivedRoutingKey is handled. So the solution above will be a great improvement.
Thanks :)

BTW could you show your implementation?

Sure, it's basically a hack solving three specific properties that we had the need for. So contract definition:
Contract.make {   description('Description')   label('uniquie-label')   input {     triggeredBy('test()')   }   outputMessage {     sentTo('exchange')     headers {       header 'contentType', applicationJson()       header 'amqp_receivedRoutingKey', 'r-key'       header 'amqp_messageId', $(value(consumer("1234"), producer(optional(anyNonEmptyString()))))       header 'amqp_timestamp', $(value(consumer('2018-11-16T16:42:25.460Z'), producer(optional(anyNonBlankString()))))       header 'amqp_type', 'ROAMCAP_WARNING'     }     body([...])   } }
TestConfiguration, overriding the MessageVerifier bean:
@Bean   @Primary   public MessageVerifier<Message> contractVerifierMessageExchange() {     return new CustomMessageVerifier(this.rabbitTemplate,         new CustomMessageListenerAccessor(this.rabbitListenerEndpointRegistry,             this.simpleMessageListenerContainers, this.bindings),         this.rabbitProperties);   }
Custom messageListenerAccessor:
public class CustomMessageListenerAccessor extends MessageListenerAccessor {   public CustomMessageListenerAccessor(RabbitListenerEndpointRegistry rabbitListenerEndpointRegistry,                                        List<SimpleMessageListenerContainer> simpleMessageListenerContainers,                                        List<Binding> bindings) {     super(rabbitListenerEndpointRegistry, simpleMessageListenerContainers, bindings);   } }
And finally an extension of SpringAmqpStubMessages, overriding the send method to inject our custom properties:
`@Override
public  void send(T payload, Map<String, Object> headers, String destination) {
Message message = org.springframework.amqp.core.MessageBuilder
.withBody(((String) payload).getBytes(Charset.defaultCharset()))
.andProperties(MessagePropertiesBuilder.newInstance()
.setContentType(fetchHeaderValue(headers, "contentType"))
.copyHeaders(headers).build())
.build();
if (headers != null && headers.containsKey(DEFAULT_CLASSID_FIELD_NAME)) {
message.getMessageProperties().setHeader(DEFAULT_CLASSID_FIELD_NAME,
headers.get(DEFAULT_CLASSID_FIELD_NAME));
}
if (headers != null && headers.containsKey(AmqpHeaders.RECEIVED_ROUTING_KEY)) {
message.getMessageProperties().setReceivedRoutingKey(
fetchHeaderValue(headers, AmqpHeaders.RECEIVED_ROUTING_KEY));
}
String type = getHeaderValue(headers, AmqpHeaders.TYPE);
if (!StringUtils.isEmpty(type)) {
  message.getMessageProperties().setType(type);
  message.getMessageProperties().getHeaders().remove(AmqpHeaders.TYPE);
}

String messageId = getHeaderValue(headers, AmqpHeaders.MESSAGE_ID);
if (!StringUtils.isEmpty(messageId)) {
  message.getMessageProperties().setMessageId(messageId);
  message.getMessageProperties().getHeaders().remove(AmqpHeaders.MESSAGE_ID);
}

String timestamp = getHeaderValue(headers, AmqpHeaders.TIMESTAMP);
if (!StringUtils.isEmpty(timestamp)) {
  for (String f : ACCEPTED_FORMATS) {
    try {
      Date date = new SimpleDateFormat(f, Locale.getDefault()).parse(timestamp);
      message.getMessageProperties().setTimestamp(date);
      message.getMessageProperties().getHeaders().remove(AmqpHeaders.TIMESTAMP);
      break;
    } catch (ParseException e) {
      log.warn("Failed to parse sendTime '{}', using dateformat {}. " +
          "Will not set message property timestamp", timestamp, DATE_FORMAT_NO_ZONE);
    }
  }

}

super.send(message, destination);

}`

So essentially we could assume that in metadata under amqp we could search for messageProperties that we would bind to org.springframework.amqp.MessageProperties class? That we would then set on the message if it's there in metadata.
Since I'm not an expert in AMQP... what else do you think could be set in metadata that would be useful in contract tests? For sure, since we're sending a message to an exchange, I see an option to pass a queue name to which the exchange should be bound (that can be useful when connecting to a real rabbitmq instance). Anything else that comes to your mind?

Exactly, mapping present fields from the amqp metadata, messageProperties, to its corresponding field in MessageProperties class would be great.
Would the queue in that instance be a temporary queue, setup and torn down by the test? Otherwise, in my mind, it should be up to the application(s) that's being tested to ensure queue creation along with correct exchange bindings. And for the contract to define, and enforce, the exchange and routing-key combination, since that's what's central for both the producer and consumer of a rabbit message. But maybe I'm missing your point, it's been a while since I worked with this.
Currently I can only come to think of one thing, and that's the routing key definition. I think it's kind of misleading to have it as an header, 'amqp_receivedRoutingKey', like today. Maybe it would be clearer to have it as a separate entry in the amqp metadata, something like below?
metadata("amqp": [
      outputMessage:  [
        routingKey: 'my-routing-key'
        messageProperties: [
          'type':  'TYPE'
          'messageId': 'MESSAGE-ID'
          'timestamp': 'TIMESTAMP'
          ]
        ]
   ])

Would the queue in that instance be a temporary queue, setup and torn down by the test? Otherwise, in my mind, it should be up to the application(s) that's being tested to ensure queue creation along with correct exchange bindings. And for the contract to define, and enforce, the exchange and routing-key combination, since that's what's central for both the producer and consumer of a rabbit message. But maybe I'm missing your point, it's been a while since I worked with this.

In general that's correct, however if you're doing polyglot testing (e.g. your app is written in python), we'd like to ensure that for the sake of tests, we can generate a queue to which the exchange will be automatically bound.

Currently I can only come to think of one thing, and that's the routing key definition. I think it's kind of misleading to have it as an header, 'amqp_receivedRoutingKey', like today. Maybe it would be clearer to have it as a separate entry in the amqp metadata, something like below?

Sounds perfect. I'll add it

Come to think of it it doesn't make sense to have a separate entry for routingKey since there's a field in MessageProperties called receivedRoutingKey which in fact is set when dealing with the amqp headers.

In general that's correct, however if you're doing polyglot testing (e.g. your app is written in python), we'd like to ensure that for the sake of tests, we can generate a queue to which the exchange will be automatically bound.

Ok, thanks for the explanation!

One more thing. Should we have message properties and all of the routing keys for separately input and output messages? I guess so...
I would think that makes the most sense, and flexability!

Come to think of it it doesn't make sense to have a separate entry for routingKey since there's a field in MessageProperties called receivedRoutingKey which in fact is set when dealing with the amqp headers.
Ok, I'm sure that's correct, it's just that it in my mind semantically makes more sense to have it named routingKey since the "receivedRoutingKey" is only set for the receiver of a message. But that's no big deal :)


dataall-pipeline-main CodePipeline timed out

My dataall-pipeline-main CodePipeline timed out at the dataall-<env>-dbmigration-stage step after 45min (configured timeout).
How do I proceed?
And what is it migrating?  This is a fresh install in a new account. Thanks.
[Container] 2022/07/24 05:56:48 Running command aws codebuild start-build --project-name dataall-datamesh-dbmigration --profile buildprofile --region us-east-1 > codebuild-id.json
--
13 |
14 | [Container] 2022/07/24 05:56:49 Running command aws codebuild batch-get-builds --ids $(jq -r .build.id codebuild-id.json) --profile buildprofile --region us-east-1 > codebuild-output.json
15 |
16 | [Container] 2022/07/24 05:56:49 Running command while [ "$(jq -r .builds[0].buildStatus codebuild-output.json)" != "SUCCEEDED" ] && [ "$(jq -r .builds[0].buildStatus codebuild-output.json)" != "FAILED" ]; do echo "running migration"; aws codebuild batch-get-builds --ids $(jq -r .build.id codebuild-id.json) --profile buildprofile --region us-east-1 > codebuild-output.json; echo "$(jq -r .builds[0].buildStatus codebuild-output.json)"; sleep 5; done
17 | running migration
18 | IN_PROGRESS
19 | running migration
20 | IN_PROGRESS
21 | running migration
22 | IN_PROGRESS
...

the dataall-<env>-dbmigration-stage step in the pipeline trigger the codebuild project (dataall-datamesh-dbmigration) in the deployment account to run an alembic migration (in case you have changed the DB schema in backend/dataall/db/models)
the timeout can be related to a networking issue , Are you using the same account for tooling and deployment ? are you using an existing VPC ? and can you check the logs of the triggered codebuild project - dataall-datamesh-dbmigration - in the deployment account ?

Same account for tooling and deployment.  Fresh account, so whatever VPC is setup by the installer is what is used.  We did not specify an existing VPC.
I noticed that the alembic pip install is not pinned to a specific version - and the version of alembic changed recently (1.8.x major release).  Not sure if this would cause an issue.  Should this pip install he pinned?
we pasted some of the logs above from the code build project.  Should we paste the full log?  Or what else should we check?
can this step be skipped?  We have a demo coming up later this week - and we don’t have a UI or anything to show.
@AmineIzanami please advise on how we can move forward with the demo.
thanks!

If by fresh account, you mean a fresh AWS Account, you are probably facing a soft limit for the number of concurrent build projects that you can run at once, it is adjustable. You can visit "Service Quotas" Service in your AWS account and request to unlock that soft limit; I believe that should fix your issue.

I opened a support ticket and asked for a quota increase for AWS CodeBuild Concurrently running builds. This solved the issue. Thanks @AmineIzanami !


linter and elm-make not working in windows when elm installed via NPM

Hi,
Had some issues getting the linting on save to work.
After som digging and debugging of the extension I found that the problem was I installed elm via npm.
Which only gives an elm-make.cmd file in C:\Users\someuser\AppData\Roaming\npm.
Saving the file gives the following error "The 'elm-make' compiler is not available.  Install Elm from http://elm-lang.org/." from https://github.com/sbrink/vscode-elm/blob/master/src/elmLinter.ts#L69
I tested changing https://github.com/sbrink/vscode-elm/blob/master/src/elmLinter.ts#L45 to
const make: cp.ChildProcess = cp.spawn('elm-make.cmd', [filename, '--report', 'json', '--output', '/dev/null'], { cwd: cwd }); which works. But that would not work for every case.
Removing the npm installed elm and installing with the installer and everything works perfectly

Fixed by #63

Fixed by #63


[Manual] - Error message is displayed after opening of "Profile" screen in offline mode

Commit number: bc9d25e
Preconditions: Test user is signed in
Steps to reproduce:

Open "Home" screen
Turn off network connection on device under test
Open "Profile" screen

Actual Result: The "Unknown error occurred" message is displayed on the screen
Expected Result: No error  message is displayed to the user. Notification about offline mode "You can still post while offline." is displayed on the screen.
NOTE: The same issue for "Search" screen

@JaroslawRomanovich implemented

Verified in build from commit number 949aa726711635969e6cb57e2adf4ac9951e3a17


[BUG] Cannot Set a Bucket Size When Initiate a New Logger

The bucket size was always set default bucket size(5000) when created.
I have checked Logger.mo and noticed that, at line 80, the roll_over condition use Default bucket size instead of the setting one.

Thanks for the report! Should be fixed now in 95e43be3fcc285121b5bb1357bfd617efc2b2234


Missing images in 01-admin slides

There are images missing from the images folder for the presentation.
The affected lines are Line 49 and Line 58.
I did not add the images itself via a pull request due to the question whether the individual licensing of the images, especially the drill seargent, is not fully known.

Thanks for pointing this out. This has happened because initially I did not intent to upload this presentation to github. I only uploaded it to Github due to the projector problems. But now that it is there, it should be complete. I will add the images to the repository.
If the google search tools can be trusted, all of the images that I used are licensed under CCA (and labeled free for reuse). Unfortunately I could not find a good way to find the correct attribution using google. This is why most of the images that I use are from wikipedia - where the necessary attribution is always given together with the images.


MatchParen highlighting makes it look like cursor jumped to matching parenthesis

Essentially https://github.com/lifepillar/vim-solarized8/issues/11
So use
hi MatchParen      ctermfg=208  ctermbg=233 cterm=bold
" Original:
"hi MatchParen      ctermfg=233  ctermbg=208 cterm=bold

Shouldn't the fix also alter line 63 ?
From
hi MatchParen      guifg=#000000 guibg=#FD971F gui=bold

to
hi MatchParen      guifg=#FD971F guibg=#000000 gui=bold

I struggled with this one for a while. I think this is specifically a poor interaction with Cursor styles that have guibg=fg guifg=bg and/or ctermbg=fg ctermfg=bg.
What seems to happen is that MatchParens styles which give the character a background color have the bg and fg inverted by the Cursor, making it seem like the cursor isn't there.
Changing either MatchParen to not set a background or Cursor to not flip background and foreground seems to fix it.


chore(requirements): sorted requirements.txt

requirements sorted as per jasper repository
#93  is resolved

Please do not remove any dependency mentioned there. Also, please do not give them custom name but according to the action module that they are a part of. For example because of that, pyvona and pygame would go under core dependencies.

@tanay1337  I have not removed any dependencies , I think you can check now .

There should be space after '#' and the module names aren't quite apt. For now, this matches the requirements of the issue more closely. Thanks for your effort :)


Add a notion of "committed/complete" vs "in progress"

When creating new datasets and uploading one or more chunks of data, it may be useful to have a way to communicate to clients, "This data is in progress" vs "This data is committed/complete."
I'm invoking the word "commit" here but I want to be clear I'm not proposing adding a data versioning system --- not a commit history like git --- just an indication that a dataset is "done". This does not preclude updating it in the future; it merely signals that it is in a coherent and complete form.

I think this will be a very useful feature.
Here are a few loose thoughts on the subject, elaborating on the states that you've referred to...

Committed: Many file formats allow a "complete" file to be appended to at some later time.  So, in some sense the file is never truly complete...but it might be complete enough to read and understand.  A log file is one example that comes to mind.
Finalized: For some datasets, completion can be readily defined.  E.g., a bluesky run that contains a 'stop' document.

In-Progress: While the run is in progress, it will frequently be useful to inspect the incomplete dataset as new events get recorded.  I'm not sure whether there is really a need to distinguish this from the "Committed" state.  The key distinction might potentially be intention: Whether a dataset is actively being collected or simply has the possibility of being updated at some unplanned time.

Incomplete: I suspect there will also be cases where an incomplete file has no discernible meaning. Maybe a large file that is being downloaded in chunks?

One issue I see with an "in-progress" flag is what happens when an exception occurs.  Will that dataset always be flagged as "in-progress", so that the client continues to be under the impression that it will get be finalized some day?
What should the default state be?  Perhaps no flag should be implicitly set, so it is left to the client which policy to implement?

I think the suggestion of a default "null" state --- as in, server does not know whether it is complete or not --- is an interesting suggestion. All of the above makes sense to me.


Change requirements that lead to the Pharma recommendation being shown

Currently, the pharma recommendation will only be shown if a patient has an open BP goal for more than 3 months and their average is still above goal. Discuss possible changes to this with collaborators.

Decision was to remove the waiting period. That's tracked in #160


Updating the react-native run-ios command to use UDID

Updating the react-native run-ios command to launch the simulator based off the UUID and to retrieve the list of simulators with the --json flag and therefore removing the reliance on regex parsing and the local-cli/runIOS/parseIOSSimulatorsList.js.
This solves a few problems:

When trying to launch an iOS simulator with just the name when you have other simulators that are similarly named.
For example, you may have a simulator called 'iPhone 6' and one called 'iPhone 6 + 38mm Apple Watch'.
If you try and run xcrun instruments -w "iPhone 6" you will get an error Instruments Usage Error : Ambiguous device name/identifier 'iPhone 6'.

If there is a simulator with brackets in it's name (e.g. "iPhone 6 (test 2)") the regex will parse the contents of the contents of the brackets as the UDID.
This isn't an issue prior to this change for launching the simulator, if that was the only simulator starting with 'iPhone6' as the (test 2) would be stripped from the name. The UDID is used for building the project so it would have failed there too.

It won't launch unavailable simulators. Because we can accurately get the status of each simulator, we can filter out ones that are not in the available state.
This could be extended to check if they are already booted, or to use the default one as the booted one.

All in all, this feels like a must more robust way of parsing the output of the list of simulators.
Tests
I have tested this with the following setup of simulators:

"iPhone 4s" (9.2)
"iPhone 5" (9.2)
"iPhone 6" (9.2)
"iPhone 6" (9.2) + Apple Watch - 38mm
"iPhone 6s" (9.2)
"iPhone 6 (Plus)" (9.2)

This would previously not work because running xcrun instruments -w "iPhone 6" would match all of the above that start with "iPhone 6" and throw an error.

CC: @mkonicek @frantic going to test it & leave the feedback since I can reproduce it already in my projects.

Why remove the test (parseIOSSimulatorsList-test.js)? Since you updated the parsing code can you also update the test please?

@mkonicek I've also removed the parseIOSSimulatorsList.js. Hence removing parseIOSSimulatorsList-test.js.

The command that gets the simulator list now returns JSON. We don't need to use regex (inside parseIOSSimulatorsList.js)

Sorry for the lack of clarity. I meant adding a test for the new parsing code.

I've moved the code that picks the simulator to a separate file and added tests for the function.

Cool, thanks for adding the tests. Good idea with using the --json arg. Just nits now, almost good to go.

@mkonicek I've fixed those things up

There still seem to be quite a few styling issues here - would be so cool to get that shipped soon since its' finally going to allow running on iPhone 6s (currently there's naming collision)

Is there a link to a code style guide??

Tests are green on master now. I restarted the build to make sure this passes all tests:
https://travis-ci.org/facebook/react-native/builds/113004514
The style guide is very simple, assumed if (foo) { is obvious, we should probably add it or make ESLint catch it:
https://github.com/facebook/react-native/blob/master/CONTRIBUTING.md#style-guide

@icodethings Have you addressed all feedback? I can't tell what changed from the "updated the pull request" notification.
Is the test failure related? Travis is green now so it should be possible to have green tests on this PR. Maybe you need to rebase?
https://travis-ci.org/facebook/react-native/builds

@mkonicek There was one thing around moving the JSON blobs in the test to the top of the document that you can see in the changed files.
Other than that, I've just done a rebase and pushed so we should see test come green soon!

cc @frantic For final review. Looks good to me in general, also has a test now.

I first run iPhone 6s Plus Simulator, then run Visual Studio Code DEBUG IOS success.
I hope to help you.
In Xcode 7.3, react native 0.22.2.

@icodethings do you have any updates for this pull request? It's been a while so we wanted to check in and see if you've looked at the requested changes.

@icodethings Just checking if you have time to update this PR. It would be great to ship this!

@icodethings @jsierles any way we can get some traction on this so we can merge it in?

It looks like the last comments are mostly nits and a comment about the readability of the test.
I'll merge this because quite a few people need the feature.
@facebook-github-bot shipit

Thanks for importing. If you are an FB employee go to Phabricator to review internal test results.

It needs rebasing though. @icodethings, @mbraude, @jsierles, @grabbou would you be up for sending a new PR which is just this PR rebased, and using Flow instead of types in JS docs as frantic suggested?
I'll close this PR just so it doesn't stay open indefinitely (there have been no updates from author in a while). A new PR is definitely welcome, this fixes a bug many people will run into!


Event date filtering

Make event date filter show recent events for a couple of days after the event. The current dates events were dropping off

We can change this to:
const today = new Date();
const threeDaysAgo = new Date(today);
threeDaysAgo.setDate(threeDaysAgo.getDate() - 3);

OG intention was to say "tomorrow"
but added a couple of days as a buffer so event is still up as a reference. We can check with DCC to find out their preference on timing.

Would be good in the future to just leave a comment in the code since we may not have the capacity to get back to this right away and future us will probably forget.

I have the updated code in my local instance already. Will submit a follow up PR later today.


Flashlights die way too quickly

Fixed by https://github.com/space-wizards/space-station-14/pull/1773


I noticed that we are still walking our own tail early

Looks like snakes start as a certain length but confined to a single square.
Example game: https://play.battlesnake.com/g/bfdf1a16-8713-4b11-93b5-13faa751eefc/
and Battlesnake docs say:

At the beginning of each game every Battlesnake will be the same size and occupy a single square. This is naturally very uncomfortable for them, and as they make their first few moves they will stretch out to their full length.

The TestTailWalkable test is going to fail here because by default it will assume it is Turn: 0. We can update the test to force it to be Turn: 3 but that won't play nice with the code that is currently in place to check if we ate.
https://github.com/es-na-battlesnake/snakes/blob/1b343d792c6863b5217dc8cfea9e6be666de8f5c/snakes/go/pathy-snake/pathing.go#L331-L343
The way the above code works it assumes we are always starting on turn zero. If we force the test to start on turn 3 then the above code will always assume we just ate.
We might need a better way to determine if we ate on the previous turn or not

We can probably just change:
https://github.com/es-na-battlesnake/snakes/blob/1b343d792c6863b5217dc8cfea9e6be666de8f5c/snakes/go/pathy-snake/pathing.go#L335
to
if len(state.You.Body) > prevLength && prevLength != 0 {

Actually we can't do https://github.com/es-na-battlesnake/snakes/pull/130#issuecomment-1035698856 because the prevLength isn't getting reset by anything in that setup. That why I had chosen to go off of Turn instead of what it was currently set to....

This is fine to merge if we want to tackle the test case later.

"Fixed" the test by adding in some Hacky code that looks for turn 9999999.  I guess we can use this going forwards if we have other unique things that need testing.


Update permission usage so get_permission_last_used API works properly

In the transition from master to slim, controller left out update_permission_usage. This means that a permission_usage_object is never created in the current slim code and postrecovery just uses the account creation date as the last used time. Effectively the current state of the slim code would mean that after 30 days since the time an account was created, the only safeguard against lost password recovery is a 7 day delay.
The slim code should be fixed to track permission usage. Clearly, our unit tests on this are not very good, since recovery_tests are currently passing with the faulty code; so that needs to be improved as well. We should also just review the whole recovery mechanism altogether given all the changes we have recently made to deferred transactions, authorization checks and delays.

This test needs to be updated to validate that the new intrinsics get_permission_last_used() work properly and that we properly set the permission used timestamps.
We removed the native 'postrecovery' messages in favor of WASM based implementations.

@arhag and @brianjohnson5972 please coordinate, I think you are both working on this

If @arhag is working this, then please remove me and assign yourself.  @heifner pointed me to this since it wasn't marked as assigned.

PR #2893 fixes the issue of the last used time of permissions not being updated. With that fix and the get_permission_last_used intrinsic, contracts have enough tools to be able to implement account recovery. We still need to reimplement account recovery as a WASM contract and of course add proper tests for it, but that is a separate issue (#2894). So I am closing this one.


[錯誤回報]

哪個指令出錯了？
The link of "功能列表" in README.md is invalid.
如果可行的話，請告訴我重現該錯誤的步驟
https://seriaati.github.io/shenhe_website/features.html
請貼上「除錯用訊息」
It shows 404 not found when visit.
如果方便的話，請留下你的 dc tag
꧁AAAA꧂#2713

Thanks for reporting this, it is fixed now.


Compose Test not working with ComposeUIViewController in iOS

Describe the bug
Following the Testing Compose Multiplatform UI article, I decided to reintroduce the UI tests in my project. I'm facing some issues in iOS because it seems that no nodes are found regardless of the parameters. In Android, the tests are working as expected.
If I run the sample in the documentation, it works fine. However, since I want to run integration tests, I need the "full app" to run with the DI and Navigation graph.
// UiTest.kt
@OptIn(ExperimentalTestApi::class)
fun uiTest(block: ComposeUiTest.() -> Unit) = runComposeUiTest {
    setContent { RenderApp() }
    block()
}

@Composable
expect fun RenderApp()

// --------

// UiTest.ios.kt
@Composable
actual fun RenderApp() {
    MainViewController()
}

// UiTest.android.kt
@Composable
actual fun RenderApp() {
    AlkaaMultiplatformApp()
}

@BeforeTest
fun setup() {
    initKoin(appModule = module)
}

@AfterTest
fun tearDown() {
    stopKoin()
}

@Test
fun test_titleChangesWhenBottomIconIsSelected() = uiTest {
    HomeSection.entries.forEach { section ->
        val title = resourcesProvider.getString(section.title.desc())

        // Click on each item and validate the title
        onNodeWithContentDescription(label = title, useUnmergedTree = true).performClick()
        onAllNodesWithText(title)[0].assertExists()
    }
}

// Error on iOS

kotlin.AssertionError: Failed to inject touch input.
Reason: Expected exactly '1' node but could not find any node that satisfies: (ContentDescription = 'Tasks' (ignoreCase: false))

I tried multiple other asserts, but all of them fails in iOS and works in Android.
Initially, I tried to implement the tests using Maestro, but the XCTest didn't find any view in my application. After spending some time, I found that we need to implement accessibilitySyncOptions to make them visible. I thought that this could be related to the issue in Compose Test but now the tests works in Maestro and fails in Compose.
@OptIn(ExperimentalComposeApi::class)
@Suppress("Unused", "FunctionName")
fun MainViewController() = ComposeUIViewController(
    configure = {
        accessibilitySyncOptions = AccessibilitySyncOptions.Always(AccessibilityDebugLoggerImpl())
    }
) {
    AlkaaMultiplatformApp()
}

Affected platforms

iOS

Versions

Kotlin version*: 1.9.23
Compose Multiplatform version*: 1.6.2
OS version(s)* (required for Desktop and iOS issues): macOS Sonoma 14.4.1
OS architecture (x86 or arm64): arm64
Device (model or simulator for iOS issues): iPhone 15 - iOS 17.4.1
JDK (for desktop issues): 17

To Reproduce
Steps and/or the code snippet to reproduce the behavior:

Go to Alkaa's PR
Run gradle shared:connectedAndroidTest
Test passes
--
Run gradle :shared:iosSimulatorArm64Test
Test fails - no nodes with text or content description found

Additional context
In Jetpack Compose, I had similar tests where I could load the "full app" in the Composable and create integration tests. I don't have too much knowledge in iOS, so I'm not sure if I'm missing something or if this is a bug in the platform. Either way, the existing code is working as expect in Android.

Does it work without Koin? Without resources?

That's a very good question... No, it also fails with the exact same error. However, in Android it crashes because at some point the Koin Graph is needed to get the injections. Which leads me to think that something else is happening and my iOS' MainViewController is not being rendered.
$ gradle shared:connectedAndroidTest

java.lang.IllegalStateException: KoinApplication has not been started
at org.koin.core.context.GlobalContext.get(GlobalContext.kt:36)
at org.koin.compose.KoinApplicationKt.getKoinContext(KoinApplication.kt:52)
at org.koin.compose.KoinApplicationKt.access$getKoinContext(KoinApplication.kt:1)

The sample code runs fine even with Koin and resources, though:
@BeforeTest
fun setup() {
    initKoin(appModule = module)
}

@AfterTest
fun tearDown() {
    stopKoin()
}

@Test
fun test_titleChangesWhenBottomIconIsSelected() = uiTest {
    val title = resourcesProvider.getString(HomeSection.Tasks.title.desc())
    setContent {
        var text by remember { mutableStateOf(title) }
        Text(
            text = text,
            modifier = Modifier.testTag("text")
        )
        Button(
            onClick = { text = "Compose" },
            modifier = Modifier.testTag("button")
        ) {
            Text("Click me")
        }
    }

    onNodeWithTag("text").assertTextEquals(title)
    onNodeWithTag("button").performClick()
    onNodeWithTag("text").assertTextEquals("Compose")
}

Wait, the testing framework only works with Compose UI. It won't work with native elements such as UIViewController.

But if I update the coding to directly call the AlkaaMultiplatformApp() directly in iOS, I face the following issue:
kotlin.IllegalStateException: CompositionLocal UIViewController not provided

That's my iOS's MainViewController:
@OptIn(ExperimentalComposeApi::class)
@Suppress("Unused", "FunctionName")
fun MainViewController(): UIViewController = ComposeUIViewController(
    configure = {
        accessibilitySyncOptions = AccessibilitySyncOptions.Always(AccessibilityDebugLoggerImpl())
    },
) {
    AlkaaMultiplatformApp()
}

Is there a way to use it directly and provide this custom CompositionLocal?

You need to remove the direct dependency on UIViewController from your test code.

Got it. The reason was the WindowSizeClass inside my AppState class. Removing caused another problems with UNUserNotificationCenter.currentNotificationCenter() but definitely not related to ComposeUIViewController as I reported. Thank you for the help!


Disable "bot niceness"

I want to be able to make spam with other bots so how could I go about turning this feature off?

It is intentionally not easy to disable :) You would have to fork the gem and edit out the code in question.


Some dialogs ("Email Settings", "Unenroll") not keyboard navigable.

Expected Behavior
Dialog buttons should be actionable via keyboard.
Current Behavior
Dialog buttons not keyboard navigable
Steps to Reproduce
This issue seems to affect both the "Email Settings" and "Unenroll" dialogs on dashboard page.

Visit https://mitxonline.mit.edu/dashboard/
Click (or navigate via keyboard) to the ... icon on one of the course cards.
From the dropdown menu, click "Unenroll" (or "Email Settings")
Navigate the dialog with keyboard controls. With any of the buttons focused, press "Enter". The button should activate but it does not.

Possible Solution
This should be double checked, but:

The button elements all seem to be real buttons (using a <div role="button"> is one source of similar issues)
The event handlers seem to be attached with onClick, not with something like onPointerUp, which would also cause this.

Button element click handlers should be firing on "click" events, so I'm confused. Perhaps there is some other keyboard-only event handler that is interfering with the events?

Could be related to https://github.com/jaredpalmer/formik/issues/2468.

@ChristopherChudzicki, I've created a branch with changes which do the following:

Pressing escape closes the modal (worked as before).
Pressing enter submits the modal, regardless of which button is focused via keyboard navigation.

I think the functionality of #2 above is correct based on what I read here: https://accessibility.asu.edu/articles/forms.  The accessibility requirements for a modal containing a form are difficult to narrow down.


cannot use rootFeatures in nested lexical editor (BlocksFeature)

Link to reproduction
No response
Payload Version
v3.0.0-beta.65
Node Version
v21.7.1
Next.js Version
15.0.0-canary.58
Describe the Bug
When nesting lexical editors via the BlocksFeature, the rootFeatures argument that is being passed to the nested lexicalEditor is empty, whereas the documentation said it should contain the features of the root editor.
https://payloadcms.com/docs/beta/lexical/overview#integrating-new-features
Reproduction Steps
use this config and the Error will be thrown.
export default buildConfig({
  editor: lexicalEditor({
    features({ defaultFeatures, rootFeatures }) {
      return [
        ...defaultFeatures,
        BlocksFeature({
          blocks: [
            {
              slug: 'my-block',
              fields: [
                {
                  name: 'content',
                  type: 'richText',
                  editor: lexicalEditor({
                    features({ defaultFeatures, rootFeatures }) {
                      if (!rootFeatures.length) {
                        throw new Error('Root features are empty')
                      }
                      return [
                        ...rootFeatures,
                        BlocksFeature({
                          blocks: [],
                        }),
                      ]
                    },
                  }),
                },
              ],
            },
          ],
        }),
      ]
    },
  }),

Adapters and Plugins
richtext-lexical

This is expected and effectively an issue with the way your code is structured. Using rootFeatures WITHIN the root editor config would infinitely, recursively reference itself. rootFeatures being empty here is preventing Node.js from throwing a Maximum call stack exceeded error.

I know, but I find it a bit unpractical, it would be nice if above example would work, it's a very common use case. and the docs are a bit misleading:
"If this field is the root richText editor, or if the root richText editor is not a lexical editor, this array will be empty."
-> is it the really the root richText editor or a nested richText editor defined inside the root editor? ...


RemoveChatButtons: Add support for removing the new Start An Activity button

Is your feature request related to a problem? Please describe.
The Add an Activity button is new and also an eyesore.
Describe the solution you'd like
The ability to remove it from the chat bar buttons would be good.
Describe alternatives you've considered
N/A
Additional context
As seen here.

To jump in on this since it is related. With the same update the Start An Activity button was added, the gif button was removed so if there is anyway to get that back as well would be much appreciated.

I will add the option as soon as I get the activities button, unfortunately I didn't manage to encounter it yet. As for the GIF button being removed, it seems to be the case that the activities button replaces the gif button when it's there which will annoy the hell out of me when I encounter it because it's one of the 2 buttons that I actually use.
If I encounter it I will try to add an option to remove it and put the gif button back (unless it's hidden of course) unfortunately I can not say when that will happen.

The Add an Activity button is new and also an eyesore.

you can add this in custom css to hide it :slightly_smiling_face:
#app-mount > div.appDevToolsWrapper-1QxdQf > div > div.app-3xd6d0 > div > div.layers-OrUESM.layers-1YQhyW > div > div.container-1eFtFS > div > div > div.sidebar-1tnWFu > section > div.wrapper-3Hk9OB > div > div.actionButtons-2vEOUh > button:nth-child(3) {
    display: none;
}


missing dash_extensions/async-lottie.js ?

Hi,
I was trying to run the websocket example.
However I had this error:
FileNotFoundError: [Errno 2] No such file or directory: '..../anaconda3/lib/python3.7/site-packages/dash_extensions/async-lottie.js'
I installed dash-extensions via pip. Do I need to build/install anything else?
Thanks

I've had the same problem here as well.

Something seems to have gone wrong in the build process. Please revert to 0.0.58 for now.

I believe this issue has been resolved. Please try with dash-extensions==0.0.60.

Problem fixed for me. Thanks, @emilhe !


Create status bar v2

Details
Adds new data types to the LHN and creates the new status bar.
Fixed Issues
$ https://github.com/Expensify/App/issues/46585
$ https://github.com/Expensify/App/issues/46582
$ https://github.com/Expensify/App/issues/47101
Tests

Navigate to the Search page
Click through the different data types in the LHN
Click through the different status types in the Search status bar
Verify that the search results are updated accordingly

[x] Verify that no errors appear in the JS console

Offline tests
N/A
QA Steps
Same as tests

[x] Verify that no errors appear in the JS console

PR Author Checklist

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

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

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

[x] Android: Native
[x] Android: mWeb Chrome
[x] iOS: Native
[x] iOS: mWeb Safari
[x] MacOS: Chrome / Safari
[x] MacOS: Desktop

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

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

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

[x] I verified all numbers, amounts, dates and phone numbers shown in the product are using the localization methods
[x] I verified any copy / text that was added to the app is grammatically correct in English. It adheres to proper capitalization guidelines (note: only the first word of header/labels should be capitalized), and is either coming verbatim from figma or has been approved by marketing (in order to get marketing approval, ask the Bug Zero team member to add the Waiting for copy label to the issue)
[x] I verified proper file naming conventions were followed for any new files or renamed files. All non-platform specific files are named after what they export and are not named "index.js". All platform-specific files are named for the platform the code supports as outlined in the README.
[x] I verified the JSDocs style guidelines (in STYLE.md) were followed

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

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

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

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

[x] If the PR modifies code that runs when editing or sending messages, I tested and verified there is no unexpected behavior for all supported markdown - URLs, single line code, code blocks, quotes, headings, bold, strikethrough, and italic.
[x] If the PR modifies a generic component, I tested and verified that those changes do not break usages of that component in the rest of the App (i.e. if a shared library or component like Avatar is modified, I verified that Avatar is working as expected in all cases)
[x] If the PR modifies a component related to any of the existing Storybook stories, I tested and verified all stories for that component are still working as expected.
[x] If the PR modifies a component or page that can be accessed by a direct deeplink, I verified that the code functions as expected when the deeplink is used - from a logged in and logged out account.
[x] If the PR modifies the UI (e.g. new buttons, new UI components, changing the padding/spacing/sizing, moving components, etc) or modifies the form input styles:

[x] I verified that all the inputs inside a form are aligned with each other.
[x] I added Design label and/or tagged @Expensify/design so the design team can review the changes.

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

Screenshots/Videos

Android: Native

Android: mWeb Chrome

iOS: Native
https://github.com/user-attachments/assets/b8a70ab9-6117-43f1-9086-c9fedf9f4c63

iOS: mWeb Safari
https://github.com/user-attachments/assets/dc655a54-858a-47b3-971e-096f1c6e945f

MacOS: Chrome / Safari

https://github.com/user-attachments/assets/dc51701f-23b0-4873-a124-3742bddecb2b

MacOS: Desktop

Here are the list of issues to be addressed in this PR:

https://github.com/Expensify/App/issues/47741
https://github.com/Expensify/App/issues/47746
https://github.com/Expensify/App/issues/47684
https://github.com/Expensify/App/issues/47752

https://github.com/Expensify/App/issues/47752
This one is expected, discussion here. We still haven't build support for delete in the regular report view, but we'll allow users to delete them from the Search page.

I'm working on some backend changes to fix https://github.com/Expensify/App/issues/47741 atm. I'll get to the android bugs once that's done

https://github.com/Expensify/App/issues/47741 is being fixed in this API PR

Ok, only the android bugs remaining. I'll try to debug that now.

Hmm I can't reproduce either of the android bugs. @rayane-djouah are you able to?

I removed the horizontal bounce. Maybe that'll fix the issue you can reproduce. I'm running a new adhoc build so we can test this again.

@rayane-djouah could you test those bugs on the latest build please?

@rayane-djouah I discussed it with the internal team and we deemed the two android bugs as not a blocker for this PR. We'll address them in follow ups.

Two things I'd love to see fixed:

The flashing in and out of the filter bar. Once its loaded in it should stay put
When you tap Paid the filter bar resets its position which shouldn't happen. It should maintain the scroll position which is at the end

cc @shawnborton
https://github.com/user-attachments/assets/8eb35e72-d355-4b09-9f29-914d7d3dd9d6

Yup, definitely agree with Jon's comments above.

We'll address the android bugs in a follow up.

:hand: This PR was not deployed to staging yet because QA is ongoing. It will be automatically deployed to staging after the next production release.

🚀 Deployed to staging by https://github.com/deetergp in version: 9.0.26-1 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅

🚀 Deployed to production by https://github.com/puneetlath in version: 9.0.26-6 🚀

platform
result

🤖 android 🤖
success ✅

🖥 desktop 🖥
success ✅

🍎 iOS 🍎
success ✅

🕸 web 🕸
success ✅


Verify that build/deploy works correctly with HubFlow branching model

A few of the GA4GH Cloud WS repos strongly encourage use of the Hubflow by contributors. The main impact relevant to this package is the prescribed naming of branches — i.e.:

Create a "feature" branch for each update that you're working on (either in the main repo or your fork depending on the previous step). These branches should start with "feature/issue-[number]-[some-description]". For example "feature/issue-123-improving-the-docs". Most devs will use the HubFlow command line tools to do this however, if you make a feature branch in GitHub's UI, then please make sure you follow this naming convention.

Other branch prefix options include release/ and hotfix/. Nominally, this would result in the branch "type" being an explicit part of the docs URL in GH Pages. That is, instead of https://ga4gh.github.io/<repoName>/preview/issue-123-improving-the-docs/docs it would be https://ga4gh.github.io/<repoName>/preview/feature/issue-123-improving-the-docs/docs.
I want to double check two things:

That I'm not mangling branch names in anyway that would break this URL pattern.
That there aren't any uncaught conditions that would result in unrelated parts of the GH Pages content getting overwritten or deleted by mistake.

I'm using Hubflow for one of my repo and have successfully run gh-openapi-docs on a branch named feature/<something>. Note that the openapi specification files and the folder docs have been saved to preview/feature/<something>/. I was positively surprise to see this operation succeed. I haven't reviewed the code yet to understand how gh-openapi-docs interacts with the branch gh-pages of a repo, but at least I can confirm that the documentation was successfully built locally in the case described above.


Syncronize my work with the new repository.

Bringing what I have up to date, though it's not complete.

Codecov Report

Merging #418 into newinternal will increase coverage by 0.14%.
The diff coverage is n/a.

@@                Coverage Diff                @@
##             newinternal     #418      +/-   ##
=================================================
+ Coverage           9.94%   10.09%   +0.14%
- Complexity             0     1660    +1660
=================================================
  Files                128      128
  Lines               7862     7857       -5
=================================================
+ Hits                 782      793      +11
+ Misses              7080     7064      -16

Impacted Files
Coverage Δ
Complexity Δ

includes/DataObjects/Request.php
9.35% <ø> (+0.32%)
38% <ø> (+38%)
:white_check_mark:

includes/DataObject.php
35.89% <ø> (+28.2%)
11% <ø> (+11%)
:white_check_mark:

Continue to review full report at Codecov.

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

Travis is blocking this PR by #419 now.


[UI] The custom address surrounded by '*%'  in registry credentials page

What kind of request is this (question/bug/enhancement/feature request):
bug
Steps to reproduce (least amount of steps as possible):

Click Add Registry button in registry credentials page
Choose custom options and input a address(eg. myluckystar.xyz) in address section when add registry
Click Save button
Result:
Go to registry credentials page, the address  was surrounded by '*%'

Environment information

Rancher version (rancher/rancher/rancher/server image tag or shown bottom left in the UI):
rancher/rancher:latest
Installation option (single install/HA):
single install

Cluster information

Cluster type (Hosted/Infrastructure Provider/Custom/Imported):
Imported
Machine type (cloud/VM/metal) and specifications (CPU/memory):
VM(2core/2g)
Kubernetes version (use kubectl version):

Client Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.3", GitCommit:"b3cbbae08ec52a7fc73d334838e18d17e8512749", GitTreeState:"clean", BuildDate:"2019-11-14T04:24:29Z", GoVersion:"go1.12.13", Compiler:"gc", Platform:"darwin/amd64"}
Server Version: version.Info{Major:"1", Minor:"16", GitVersion:"v1.16.2", GitCommit:"c97fe5036ef3df2967d086711e6c0c405941e14b", GitTreeState:"clean", BuildDate:"2019-10-15T19:09:08Z", GoVersion:"go1.12.10", Compiler:"gc", Platform:"linux/amd64"}

Docker version (use docker version):

Client: Docker Engine - Community
 Version:           18.09.9
 API version:       1.39
 Go version:        go1.11.13
 Git commit:        039a7df9ba
 Built:             Wed Sep  4 16:50:02 2019
 OS/Arch:           linux/amd64
 Experimental:      false

Server: Docker Engine - Community
 Engine:
  Version:          18.09.9
  API version:      1.39 (minimum version 1.12)
  Go version:       go1.11.13
  Git commit:       039a7df9ba
  Built:            Wed Sep  4 16:55:50 2019
  OS/Arch:          linux/amd64
  Experimental:     false

The bug is reproduced with Rancher server rancher\rancher:v2.3.3
Steps:
Add a registry.
Choose custom options and input a address(eg. myluckystar.xyz) in address section.
Save.

Result:

The bug fix is validated in Rancher server rancher\rancher:master-head version 552eb2896


Display average rating of user in ProfileActivity

Suggestion / Feature Request
Exactly what it says
Display 3 average ratings, overall, movies and tv shows
While calculating average ignore unrated movies or tv shows

can I create cards to show the rating using html css and bootstrap?

assign this to me, I can calculate average with some JS

Hey @yashsarnaik22 , this is an android application so we would prefer to have all functionality written using native android tech like kotlin rather than web tech like js 😅

Hey @ken1000minus7 is that means we need to create two horizontal cards in profileActivity.  Then show 3 movies in one card, and tv shows on other, selected by average rating of 3-5 ?

You need to display the overall average rating of all the items in the user's list and below that u need to show two ratings, the average rating of all movies in the user list and the average rating of all the tv shows in the user's list

pls assign

Lessgo


fix danglingRowLock issues around recover previous transaction / do not ...

fix danglingRowLock issues around recover previous transaction / do not recover tx if primary row lock is changed by different transaction.

LGTM!!


(maint) fix -F/-C/-R options for benchmark tool

This fixes an argument ordering error that caused the -F, -C, and -R flags to have the same
effect as the default case.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://jenkins.puppetlabs.com/job/platform_puppetdb_intn-sys_pr/860/


Addition of pre-commit

@dexhunter
Since this repo contains python code, I thought maybe we can have a sort of rule check in the form of pre-commit config, which can help us maintain the code quality before someone raises a PR. The already existing lint test configurations can be used for having a pre-commit.
If it's something that you feel we can add, please let me know. I can work on this!
Thank you!

I think we already have this feature, you can check the config here


desock assistance

Hey Zardus.
I'm working on ftp from csaw2015: https://github.com/ctfs/write-ups-2015/tree/master/csaw-ctf-2015/reverse/ftp-300
Uploading ftp.zip…
When I run: LD_PRELOAD=./desock.so:./defork.so ./ftp
I can manually enter USER blankwall then PASS cookie to get the expected functionality.
Quite awesome!
% LD_PRELOAD=./desock.so:./defork.so ./ftp
[+] Creating Socket
[+] Binding
[+] Listening
[+] accept loop
[+] socket fd: 4
Welcome to FTP server
USER blankwall
Please send password for user blankwall
PASS cookie
logged in
^C

Unfortunately, if I make a file to emulate the way fuzzers interact with the binary and run the program that way, I do not get the expected functionality:
% cat ftp_in
USER blankwall
PASS cookie
% LD_PRELOAD=./desock.so:./defork.so ./ftp < ftp_in
[+] Creating Socket
[+] Binding
[+] Listening
[+] accept loop
[+] socket fd: 4
Welcome to FTP server
Please send password for user blankwall
PASS cookie
^C

I investigated a little and believe the first read(preeny_fd,65536) collects all of ftp_in and writes it to the socket.
FTP only accepts the first line; this leaves PASS cookie on the dup socket.
FTP then writes to STDOUT Please send password for user blankwall\nPASS cookie\n.
Nothing remains for the next FTP read (that expects the password).
How can I mitigate this issue?
Thank you so much for your outstanding tool!
I'm working on a universal way to communicate with ELF binaries through a single file (for fuzzing).
The things I've done and will hopefully push to your project are: injecting argv/argc, redirecting file reads (simple to just LD_PRELOAD a custom read function).

Sorry for the laggy response. Super busy times lately.
The problem you’re describing is common with fuzzers (in fact, Driller
suffers heavily from this, fully externally from preeny). Are you sure that
the FTP server itself doesn’t suffer from this problem (i.e., reads as much
as it can, instead of byte by byte)? In that case, there’s little that we
can do.
Of course, you can try reducing that read() to 1 byte. Most network
applications should be able to adapt to that and keep reading until they’ve
read whatever they’re supposed to. That might be an easy solution.
On Tue, Nov 14, 2017 at 10:51 AM Tim Nosco<EMAIL_ADDRESS>wrote:

Hey Zardus.
I'm working on ftp from csaw2015:
https://github.com/ctfs/write-ups-2015/tree/master/csaw-ctf-2015/reverse/ftp-300
When I run: LD_PRELOAD=./desock.so:./defork.so ./ftp
I can manually enter USER blankwall then PASS cookie to get the expected
functionality.
Quite awesome!
[+] Creating Socket
[+] Binding
[+] Listening
[+] accept loop
[+] socket fd: 4
Welcome to FTP server
USER blankwall
Please send password for user blankwall
PASS cookie
logged in
^C```
Unfortunately, if I make a file to emulate the way fuzzers interact with the binary and run the program that way, I do not get the expected functionality:
USER blankwall
PASS cookie
% LD_PRELOAD=./desock.so:./defork.so ./ftp < ftp_in
[+] Creating Socket
[+] Binding
[+] Listening
[+] accept loop
[+] socket fd: 4
Welcome to FTP server
Please send password for user blankwall
PASS cookie
^C```

I investigated a little and believe the first `read(preeny_fd,65536)` collects all of `ftp_in` and writes it to the socket.
FTP only accepts the first line; this leaves `PASS cookie` on the dup socket.
FTP then writes to STDOUT "Please send password for user blankwall\nPASS cookie".
Nothing remains for the next FTP read (that expects the password).

How can I mitigate this issue?

Thank you so much for your outstanding tool!
I'm working on a universal way to communicate with ELF binaries through a single file (for fuzzing).
The things I've done and will hopefully push to your project are: injecting argv/argc, redirecting file reads (simple to just LD_PRELOAD a custom read function).

—
You are receiving this because you are subscribed to this thread.
Reply to this email directly, view it on GitHub
<https://github.com/zardus/preeny/issues/35>, or mute the thread
<https://github.com/notifications/unsubscribe-auth/ADSzlwDPfi28EyFRrE1NgE9XngYqJ-vjks5s2dMogaJpZM4QdvXm>
.

I also meet this problems, any other ideas about how to solve it? :P

Wow,thanks for your quick reply.
Do you know the root cause of this  problem?The souce code I need to patch is too complex,maybe we can find another way to solve it. :P

PS:I've tried it with the singe byte every time patch,it seems to be run correctly!
But...why,I can't understand that.


Improve 8 puzzle solver.

All given inputs are not solvable for a 8 puzzle problem.
They follow this rule:
https://www.google.com/amp/s/www.geeksforgeeks.org/check-instance-8-puzzle-solvable/amp/
Currently, the solver does not check for this condition before trying to solve.
Implement:

This checker
In case of no solution, inform the user that no solution exists.

Assign me this issue under JWOC 2024.


Example 1.5.1 "then" doesn't seem to work.

I believe that I've identified two issues with the examples.

The completion signatures on the _then_sender fail when the function returns void. (error: invalid parameter type 'std::__success_type<void>::type' {aka 'void'}) Some guidance needs to be given on how to handle void return types!
The _then_receiver relies on base() being a member of the parent class receiver; however, base() isn't part of the specification anywhere. Would it be plausible to have the example static_cast<R&&>(std::move(*this)), or is that somehow wrong. If so, the example needs further exposition on what the example is doing.

The example also fails if the function must take an input value.
Trying to figure this is from compiler messages and reading the stdexec code is almost impossible.
For example, I cannot copy code from __then.hpp into a new file, and attempt to progressively refactor it in order to understand what all the parts do. (The variable names aren't great... the compiler errors unhelpful.)
I think it's important that we have at least a minimal working example that shows how you'd write a then sender.

For anyone who finds this issue, Maikel Nadolski offers a "naive solution" here. It's for exposition only.
https://godbolt.org/z/5qczb9dhh


testing: test with Ruby 2.6

@tbpg I think the firestore gem doesn't work with 2.6 right now.
I followed the instructions for the "add-data" how-to guide on the website (https://cloud.google.com/firestore/docs/manage-data/add-data), meaning creating a new directory with a new Gemfile which contained the following:
source 'https://rubygems.org'

gem 'google-cloud-firestore'

I made an app.rb file which contained the following:
require "google/cloud/firestore"

GCP_PROJECT_ID = 'REDACTED'

firestore = Google::Cloud::Firestore.new project_id: GCP_PROJECT_ID

puts "Created Cloud Firestore client with project ID #{GCP_PROJECT_ID} ."

doc_ref = firestore.doc "users/alovelace"

doc_ref.set({
  first: "Ada",
  last:  "Lovelace",
  born:  1815
})

puts "Added data to the alovelace document in the users collection."

I also used export GOOGLE_APPLICATION_CREDENTIALS="path_to_file" to set the service account file before attempting to run the program.
But, when I run bundle install and then bundle exec ruby app.rb, I get the following error:
Traceback (most recent call last):
        23: from app.rb:1:in `<main>'
        22: from app.rb:1:in `require'
        21: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-cloud-firestore-0.24.2/lib/google/cloud/firestore.rb:17:in `<top (required)>'
        20: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-cloud-firestore-0.24.2/lib/google/cloud/firestore.rb:17:in `require'
        19: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-cloud-firestore-0.24.2/lib/google/cloud/firestore/client.rb:16:in `<top (required)>'
        18: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-cloud-firestore-0.24.2/lib/google/cloud/firestore/client.rb:16:in `require'
        17: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-cloud-firestore-0.24.2/lib/google/cloud/firestore/v1beta1.rb:16:in `<top (required)>'
        16: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-cloud-firestore-0.24.2/lib/google/cloud/firestore/v1beta1.rb:16:in `require'
        15: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-cloud-firestore-0.24.2/lib/google/cloud/firestore/v1beta1/firestore_client.rb:26:in `<top (required)>'
        14: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-cloud-firestore-0.24.2/lib/google/cloud/firestore/v1beta1/firestore_client.rb:26:in `require'
        13: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-gax-1.5.0/lib/google/gax.rb:30:in `<top (required)>'
        12: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-gax-1.5.0/lib/google/gax.rb:30:in `require'
        11: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-gax-1.5.0/lib/google/gax/api_callable.rb:32:in `<top (required)>'
        10: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-gax-1.5.0/lib/google/gax/api_callable.rb:32:in `require'
         9: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-gax-1.5.0/lib/google/gax/errors.rb:32:in `<top (required)>'
         8: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-gax-1.5.0/lib/google/gax/errors.rb:32:in `require'
         7: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-gax-1.5.0/lib/google/gax/grpc.rb:31:in `<top (required)>'
         6: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-gax-1.5.0/lib/google/gax/grpc.rb:31:in `require'
         5: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/grpc-1.18.0-x86_64-linux/src/ruby/lib/grpc/google_rpc_status_utils.rb:16:in `<top (required)>'
         4: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/grpc-1.18.0-x86_64-linux/src/ruby/lib/grpc/google_rpc_status_utils.rb:16:in `require'
         3: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/googleapis-common-protos-types-1.0.2/lib/google/rpc/status_pb.rb:4:in `<top (required)>'
         2: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/googleapis-common-protos-types-1.0.2/lib/google/rpc/status_pb.rb:4:in `require'
         1: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-protobuf-3.6.1-x86_64-linux/lib/google/protobuf.rb:48:in `<top (required)>'
/home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-protobuf-3.6.1-x86_64-linux/lib/google/protobuf.rb:48:in `require': cannot load such file -- google/2.6/protobuf_c (LoadError)
        24: from app.rb:1:in `<main>'
        23: from app.rb:1:in `require'
        22: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-cloud-firestore-0.24.2/lib/google/cloud/firestore.rb:17:in `<top (required)>'
        21: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-cloud-firestore-0.24.2/lib/google/cloud/firestore.rb:17:in `require'
        20: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-cloud-firestore-0.24.2/lib/google/cloud/firestore/client.rb:16:in `<top (required)>'
        19: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-cloud-firestore-0.24.2/lib/google/cloud/firestore/client.rb:16:in `require'
        18: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-cloud-firestore-0.24.2/lib/google/cloud/firestore/v1beta1.rb:16:in `<top (required)>'
        17: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-cloud-firestore-0.24.2/lib/google/cloud/firestore/v1beta1.rb:16:in `require'
        16: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-cloud-firestore-0.24.2/lib/google/cloud/firestore/v1beta1/firestore_client.rb:26:in `<top (required)>'
        15: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-cloud-firestore-0.24.2/lib/google/cloud/firestore/v1beta1/firestore_client.rb:26:in `require'
        14: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-gax-1.5.0/lib/google/gax.rb:30:in `<top (required)>'
        13: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-gax-1.5.0/lib/google/gax.rb:30:in `require'
        12: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-gax-1.5.0/lib/google/gax/api_callable.rb:32:in `<top (required)>'
        11: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-gax-1.5.0/lib/google/gax/api_callable.rb:32:in `require'
        10: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-gax-1.5.0/lib/google/gax/errors.rb:32:in `<top (required)>'
         9: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-gax-1.5.0/lib/google/gax/errors.rb:32:in `require'
         8: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-gax-1.5.0/lib/google/gax/grpc.rb:31:in `<top (required)>'
         7: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-gax-1.5.0/lib/google/gax/grpc.rb:31:in `require'
         6: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/grpc-1.18.0-x86_64-linux/src/ruby/lib/grpc/google_rpc_status_utils.rb:16:in `<top (required)>'
         5: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/grpc-1.18.0-x86_64-linux/src/ruby/lib/grpc/google_rpc_status_utils.rb:16:in `require'
         4: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/googleapis-common-protos-types-1.0.2/lib/google/rpc/status_pb.rb:4:in `<top (required)>'
         3: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/googleapis-common-protos-types-1.0.2/lib/google/rpc/status_pb.rb:4:in `require'
         2: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-protobuf-3.6.1-x86_64-linux/lib/google/protobuf.rb:47:in `<top (required)>'
         1: from /home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-protobuf-3.6.1-x86_64-linux/lib/google/protobuf.rb:50:in `rescue in <top (required)>'
/home/matt/.rbenv/versions/2.6.0/lib/ruby/gems/2.6.0/gems/google-protobuf-3.6.1-x86_64-linux/lib/google/protobuf.rb:50:in `require': cannot load such file -- google/protobuf_c (LoadError)

I tried cloning this samples repo and grabbing its Gemfile.lock, copying it into my test directory, installing its particular version of bundler (1.17.3), switching to Ruby 2.5.0 with rbenv, running bundle install and then running my program again with bundle exec ruby app.rb, and this time it works:
Created Cloud Firestore client with project ID REDACTED .
Added data to the alovelace document in the users collection.

I don't have a ton of Ruby experience, so I don't know exactly what's wrong, but to me the stack trace makes it look like there's an issue with how the latest version of the google-cloud-firestore gem is wired up to its dependency gems. It might have to do with the "proto_c" in the stack trace.

Thank you for trying this out, @welkie. But, this is blocked on https://github.com/googleapis/google-cloud-ruby/issues/2825. Sorry I forgot to update this bug.

Greetings, we're closing this. Looks like the issue got resolved. Please let us know if the issue needs to be reopened.