right click to pan, fix fullscreen fixed container scaling sidebar issue

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

npm package (@latest dist-tag)
GitHub release

Your semantic-release bot :package::rocket:


Clicks limited to smaller region

Hi, first steps on my fire-tv-cube (all updates done). On the main screen I cannot access Settings and Profile .. so somewhat the space I can click in is limited. I also have problems navigating menus and would like to ask for the ideal command line for mouse control .. just in case somebody has already experimented this through.
 How can I uuse adb shell in conjunction?

From the scrcpy directory, click on open_a_terminal_here.bat, this opens a terminal. Execute adb shell … from there.

If you want to know the coordinates easily, run scrcpy -Vdebug (when you click, it will print the coordinates in the console).

so the clicks are registed fine .. but nothing happens when I click on the cogwheel.

Even with adb shell tap <x> <y>? So the clicks are sent to your device, which does not react to them properly. Maybe there is a hidden overlay which capture them or something.
If your device is plugged over USB, can you try in HID mode: scrcpy -KM (you should see the mouse on your device).

device is on my LAN

And if tap would work .. it wouldn't explain why half the cogwheel is allocated to the apps tile.

adb shell input tap 1764 581

(my fault, I forgot input in my last comment)

ok .. still no reaction

Hmm .. so I am the first FireTV Cube user of scrcpy?

I don't know.
But you reproduce the problem without scrcpy (with just adb shell input tap), so it could not be a bug in scrcpy :)

keyboard input works .. how do I simulate the burger key?

Hmm .. so I am the first FireTV Cube user of scrcpy?

No. I also have this problem on TWO Fire TV Cubes. I'm connecting over TCP(?)/IP (NOT USB)
adb disconnect; adb connect XX.XX.XX.XX:5555; scrcpy -b2M -m800 --max-fps 25
If I use the mouse to click on any of the five leftmost icons, I get a response as if I had pressed the big round button on the remote (i.e., as expected).
If I mouse click on the Netflix or other rectangles, the rectangle is selected as if I had moved the cursor using the remote and a second click opens the appropriate app, as if I had pressed the round button on the remote.
If I mouse click on the gear icon at the far right, nothing at all happens.
HOWEVER, if I use the keyboard arrow keys to navigate to the gear icon the settings are displayed and pressing return moves the cursor down to the settings squares.
When in the Netflix app, the mouse doesn't work on anything (that I can see).
The problem also occurs (probably unsurprisingly) when using scrcpy-mobile on iPadOS (see https://github.com/wsvn53/scrcpy-mobile/issues/13).


Field access to path, pathparts and tag - using groupBy

Analytics need access to the path to use meta-information for processing
Work items:

introduce path field
provide field access to analytics (as parameter?) - normally needs along with regular processing. i.e. group-by-path-path[1] to extract serverless function name or region?
update or add new analytic that supports groupBy or concatenation functionality.
i.e.

analytic.countEach(field) groupBy(_meta.path[2])
analytic.stats(field-mem-use) groupBy(_meta.path[1])

fixed


MM-14402 Empty search state for emoji picker

Summary
This PR adds a default empty state for the emoji picker screen
Ticket Link
Fixes https://github.com/mattermost/mattermost-server/issues/14402
Checklist

[x] Has UI changes
[x] Includes text changes and localization file updates

Device Information
This PR was tested on:

iPhone 11 (Simulator)
Pixel 3XL (Simulator)

Screenshots

@avasconcelos114 I think you could use https://reactnative.dev/docs/flatlist#listemptycomponent instead

@enahum You're 100% correct! I separated that component into its own function and passed it along to the ListEmptyComponent prop
Will add the build app label once the build checks pass

Building app in separate branch.

Successfully building:
https://circleci.com/gh/mattermost/mattermost-mobile/9009
https://circleci.com/gh/mattermost/mattermost-mobile/9008

Artifact links:
https://9009-70265724-gh.circle-artifacts.com/0/~/mattermost-mobile/Mattermost_Beta.apk
https://9008-70265724-gh.circle-artifacts.com/0/~/mattermost-mobile/Mattermost_Beta.ipa

@avasconcelos114 Thanks for the review!
I managed to patch these 4 items (though currently unable to test them on Android)

Building app in separate branch.

Successfully building:
https://circleci.com/gh/mattermost/mattermost-mobile/9068
https://circleci.com/gh/mattermost/mattermost-mobile/9067

Artifact links:
https://9068-70265724-gh.circle-artifacts.com/0/~/mattermost-mobile/Mattermost_Beta.ipa
https://9067-70265724-gh.circle-artifacts.com/0/~/mattermost-mobile/Mattermost_Beta.apk

Looks great on iOS @avasconcelos114. That resolved the items I mentioned. I'll approve once I get to testing on Android a little later

Building app in separate branch.

Successfully building:
https://circleci.com/gh/mattermost/mattermost-mobile/9068
https://circleci.com/gh/mattermost/mattermost-mobile/9067

Artifact links:
https://9068-70265724-gh.circle-artifacts.com/0/~/mattermost-mobile/Mattermost_Beta.ipa
https://9067-70265724-gh.circle-artifacts.com/0/~/mattermost-mobile/Mattermost_Beta.apk

Android looks good too. Approving with the following change 'No results found for...' title needs to be semibold on android too.

@matthewbirtch
Ah well, I had set the fontWeight to be the exact same on both platforms, but it seems like on android the font looks a bit different (doesn't seem to be any different than regular font weights)
I guess the decision here is whether to keep the fontWeight value at 600 (as it is currently):

or to increase fontWeight to 700 (which bumps it up to look more bold):

Let me know which of the two would be best! :)

@avasconcelos114 I think we've run in to this issue before. Let's leave it at 600 then. Thanks!

@matthewbirtch Great! thanks for the review 👍
@esethna Would it be alright for me to add this to the v1.35 milestone?

@avasconcelos114
Error trying doing the automated Cherry picking. Please do this manually
+++ Updating remotes...
Fetching upstream
Fetching origin
+++ Updating remotes done...
!!! 'upstream/release-1.35' not found. The second argument should be something like upstream/release-0.21.
    (In particular, it needs to be a valid, existing remote branch that I can 'git checkout'.)

+++ Returning you to the master branch and cleaning up.

/cherry-pick release-1.35


rustup

Let's see if https://github.com/rust-lang/miri/runs/6509923061 reproduces...

This is a bors/infra problem: https://rust-lang.zulipchat.com/#narrow/stream/242791-t-infra/topic/try-based.20merge.20into.20master


[MINOR][SQL] Fix typo in CTAS plan database string

What changes were proposed in this pull request?
Since Spark 1.6.0, there was a redundant '}' character in CTAS string plan's database argument string; default}. This PR aims to fix it.
scala> sc.version
res1: String = 1.6.0

scala> sql("create table t as select 1").explain
== Physical Plan ==
ExecutedCommand CreateTableAsSelect [Database:default}, TableName: t, InsertIntoHiveTable]
+- Project [1 AS _c0#3]
   +- OneRowRelation$

How was this patch tested?
Manual.

Merged build finished. Test PASSed.

Test PASSed.
Refer to this link for build results (access rights to CI server needed):
https://amplab.cs.berkeley.edu/jenkins//job/testing-k8s-prb-make-spark-distribution-unified/5099/
Test PASSed.

Test build #98947 has started for PR 23064 at commit ad971b6.

Merged to master, branch-2.4 and branch-2.3.

Since 2.2.0 was released on July 11 2017, I cherry-picked to branch-2.2, too.


Height in zen-mode doesn't change after decreasing font in kitty

Hello!
After reducing the font in kitty, large gaps appear at the top and bottom in zen-mode.

Screencast:
https://user-images.githubusercontent.com/31193144/141095926-9a996257-9331-46d4-8f45-3554f04e702c.mp4
Is it possible to make the zen-mod open to its full height after decreasing font in kitty?

I believe I have a similar issue, where I use on_open to call xdgtool to toggle my terminal full screen. Perhaps a solution could be to add an on_open_pre callback (used by kitty as well) that is called before zen mode creates the floating windows?

Zen already fixes the layout on the VimResized event:
https://github.com/folke/zen-mode.nvim/blob/9ae43df6ee4d6c3d47aea057086c9e56fca58234/lua/zen-mode/view.lua#L190
So my guess is that Neovim fails to emit that event in this case. I would suggest you set up an autocommand to test the VimResized event and see if it triggers when you change font size. If it doesn't, open a bug report for Neovim instead.

@darteil After you open Zen mode, does running this fix the gaps for you?
:lua require("zen-mode.view").fix_layout(true)

I have a similar issue with Neovide, I want to increase the font size when I enter Zen mode, so I wrote:
on_open = function(win)
  vim.opt.guifont = "SauceCodePro Nerd Font:h12:w57"
end,

This does work, but the height of the Zen floating window is all wrong. When I press zz to center my viewport, it's clear that the floating window extends quite a bit below my window:

Confusingly, running fix_layout(true) at this point has no effect...

@Hubro I tried calling this command in zen mode and without zen mode
:lua require("zen-mode.view").fix_layout(true)
Still the same, no effect. Using a regular nvim v 0.6.1.

Addendum to previous post
https://user-images.githubusercontent.com/31193144/162954166-374a69c7-7b1b-4e1f-b028-38e372702a05.mp4


Add files via upload

@lplegendyt You might miss my previous comment. Please react.
Also please provide us with:

the school official website URL
the school street address, including city and country
an URL of a page on the official website where the school offers an IT-related long-term (>1 year) course
a proof, which shows that the school recognizes the domain you are submitting as an official email domain for the students.

@lplegendyt I am sorry, this request remains unanswered for a while. I have to close it without merging. Please reopen and comment if you have an update regarding the aforementioned issue. Thank you for your understanding!

Oh sry what do you need
URL = https://mühlbachschule.de/
Adress
Schulstraße 12
88433 Schemmerhofen
Germany


[Bug Report] Low PCC of ttnn.global_avg_pool2d after running ttnn.max_pool2d

Describe the bug
The PCC of ttnn.global_avg_pool2d becomes very low (0.7) if we run ttnn.max_pool2d first for some shapes
To Reproduce
Run the example below:
import torch
import ttnn
from tests.ttnn.utils_for_testing import assert_with_pcc

def test_maxpool(device, input_shape, kernel_size, stride, padding, dilation):
    torch_input = torch.rand(input_shape, dtype=torch.bfloat16)
    batch_size, in_c, in_h, in_w = input_shape

    input_tensor = torch.permute(torch_input, (0, 2, 3, 1))
    input_tensor = torch.reshape(input_tensor, (1, 1, -1, in_c))
    input_tensor = ttnn.from_torch(input_tensor, layout=ttnn.ROW_MAJOR_LAYOUT, device=device)
    output_tensor = ttnn.max_pool2d(
        input_tensor,
        batch_size,
        in_h,
        in_w,
        in_c,
        kernel_size,
        stride,
        padding,
        dilation,
    )

    expected_output = torch.nn.functional.max_pool2d(torch_input, kernel_size, stride, padding)

    output_tensor = ttnn.to_torch(output_tensor)
    _, out_c, out_h, out_w = expected_output.shape
    output_tensor = torch.reshape(output_tensor, (batch_size, out_h, out_w, out_c))
    output_tensor = torch.permute(output_tensor, (0, 3, 1, 2))

    assert torch.allclose(output_tensor, expected_output), "mismatch"

def test_global_avg_pool(device, input_shape):
    torch_input_tensor = torch.randn(input_shape, dtype=torch.bfloat16)
    torch_output_tensor = torch.nn.functional.adaptive_avg_pool2d(torch_input_tensor, (1, 1))

    input_tensor = torch.permute(torch_input_tensor, (0, 2, 3, 1))
    input_tensor = ttnn.from_torch(input_tensor, layout=ttnn.TILE_LAYOUT, device=device)
    output_tensor = ttnn.global_avg_pool2d(input_tensor)
    output_tensor = ttnn.to_torch(output_tensor)
    output_tensor = torch.permute(output_tensor, (0, 3, 1, 2))

    assert_with_pcc(torch_output_tensor, output_tensor)

if __name__ == "__main__":
    try:
        device = ttnn.open_device(device_id=0, l1_small_size=4096)
        test_maxpool(device, (1, 192, 56, 56), (2, 2), (2, 2), (0, 0), (1, 1))
        test_global_avg_pool(device, (1, 64, 1, 32))
    finally:
        ttnn.close_device(device)

Expected behavior
The PCC check of ttnn.global_avg_pool2d should pass (> 0.9999)
Please complete the following environment information:

OS: Ubuntu 20.04
Version of software  612744d7e9d8810f20c1458710c7f5eab361bb7e
Card: N300

Additional context
The PCC issue of ttnn.global_avg_pool2d seems to be persistent once ttnn.max_pool2d is run, unless the card is reset

Some observations during debug:
Result of global_avg_pool (SUM reduce) seems bit ND. Most of the time it is a deterministic value, but varies at times. Here is a sequence of 20 runs of maxpool followed by global_avg_pool:
MAXPOOL PCC: 1.0
AVGPOOL PCC: 0.682736883289193
MAXPOOL PCC: 1.0
AVGPOOL PCC: 0.682736883289193
MAXPOOL PCC: 1.0
AVGPOOL PCC: 0.682736883289193
MAXPOOL PCC: 1.0
AVGPOOL PCC: 0.9999999992819725
MAXPOOL PCC: 1.0
AVGPOOL PCC: 0.682736883289193
MAXPOOL PCC: 1.0
AVGPOOL PCC: 0.682736883289193
MAXPOOL PCC: 1.0
AVGPOOL PCC: 0.682736883289193
MAXPOOL PCC: 1.0
AVGPOOL PCC: 0.9999999992819725
MAXPOOL PCC: 1.0
AVGPOOL PCC: 0.682736883289193
MAXPOOL PCC: 1.0
AVGPOOL PCC: 0.682736883289193
MAXPOOL PCC: 1.0
AVGPOOL PCC: 0.682736883289193
MAXPOOL PCC: 1.0
AVGPOOL PCC: 0.9999999992819725
MAXPOOL PCC: 1.0
AVGPOOL PCC: 0.682736883289193
MAXPOOL PCC: 1.0
AVGPOOL PCC: 0.682736883289193
MAXPOOL PCC: 1.0
AVGPOOL PCC: 0.682736883289193
MAXPOOL PCC: 1.0
AVGPOOL PCC: 0.9999999992819725
MAXPOOL PCC: 1.0
AVGPOOL PCC: 0.682736883289193
MAXPOOL PCC: 1.0
AVGPOOL PCC: 0.682736883289193
MAXPOOL PCC: 1.0
AVGPOOL PCC: 0.682736883289193
MAXPOOL PCC: 1.0
AVGPOOL PCC: 0.9999999992819725

The pattern repeats for as many runs as I try, where first 3 runs have bad PCC, and every 4th has good.
I changed to directly use reduce op (mean), instead of avg_pool, and I see exact same thing.
In the output tensor from the reduce (mean) op, I see that of the 64 elements, first 16 are 0s (wrong) followed by 16 correct values, then another 16 0s, followed by another 16 correct values.
My suspicion is that some configuration register might be getting messed up. I tried using the tilize_uninit and pack_untilize_uninit, but those didn't help. Since we are using tilizeA_B_reduce_init, perhaps we need an LLK uninit corresponding to it?
It would be good if someone in LLK team could take a look at this. I am using the following code as the test:
import torch
import ttnn
from tests.ttnn.utils_for_testing import assert_with_pcc, check_with_pcc

def test_maxpool(device, input_shape, kernel_size, stride, padding, dilation):
    torch.manual_seed(0)
    torch_input = torch.rand(input_shape, dtype=torch.bfloat16)
    batch_size, in_c, in_h, in_w = input_shape

    input_tensor = torch.permute(torch_input, (0, 2, 3, 1))
    input_tensor = torch.reshape(input_tensor, (1, 1, -1, in_c))
    input_tensor = ttnn.from_torch(input_tensor, layout=ttnn.ROW_MAJOR_LAYOUT, device=device)
    output_tensor = ttnn.max_pool2d(
        input_tensor,
        batch_size,
        in_h,
        in_w,
        in_c,
        kernel_size,
        stride,
        padding,
        dilation,
    )

    expected_output = torch.nn.functional.max_pool2d(torch_input, kernel_size, stride, padding)

    output_tensor = ttnn.to_torch(output_tensor)
    _, out_c, out_h, out_w = expected_output.shape
    output_tensor = torch.reshape(output_tensor, (batch_size, out_h, out_w, out_c))
    output_tensor = torch.permute(output_tensor, (0, 3, 1, 2))

    assert torch.allclose(output_tensor, expected_output), "mismatch"
    pcc, msg = check_with_pcc(expected_output, output_tensor)
    print(f"MAXPOOL PCC: {msg}")
    assert pcc

def test_global_avg_pool(device, input_shape):
    torch.manual_seed(0)
    torch_input_tensor = torch.randn(input_shape, dtype=torch.bfloat16)
    # torch_output_tensor = torch.nn.functional.adaptive_avg_pool2d(torch_input_tensor, (1, 1))
    torch_output_tensor = torch.mean(torch_input_tensor, dim=-1, keepdim=True)

    input_tensor = torch.permute(torch_input_tensor, (0, 2, 3, 1))
    input_tensor = ttnn.from_torch(input_tensor, layout=ttnn.TILE_LAYOUT, device=device)
    # output_tensor = ttnn.global_avg_pool2d(input_tensor)
    output_tensor = ttnn.mean(input_tensor, dim=-2, keepdim=True)
    output_tensor = ttnn.to_torch(output_tensor)
    output_tensor = torch.permute(output_tensor, (0, 3, 1, 2))

    # torch.save(torch_output_tensor, "torch_output.pt")
    # torch.save(output_tensor, "output.pt")

    # assert_with_pcc(torch_output_tensor, output_tensor)
    pcc, msg = check_with_pcc(torch_output_tensor, output_tensor)
    print(f"AVGPOOL PCC: {msg}")
    assert pcc

if __name__ == "__main__":
    try:
        device = ttnn.open_device(device_id=0, l1_small_size=4096)
        test_maxpool(device, (1, 192, 56, 56), (2, 2), (2, 2), (0, 0), (1, 1))
        test_global_avg_pool(device, (1, 64, 1, 32))
    finally:
        ttnn.close_device(device)

@ttmtrajkovic @rtawfik01 could someone from LLK please take a look if there is anything missing with init/uninit?

Relevant kernels:
maxpool compute: ttnn/cpp/ttnn/operations/pool/generic/device/kernels/compute/max_pool_multi_core.cpp
reduce compute: ttnn/cpp/ttnn/operations/reduction/generic/device/kernels/compute/reduce_h.cpp

Another signal is that this issue happens when the maxpool kernel size is either (1, 1) or (2, 2), with (3, 3) and above output looks good always. The kernel size volume (11, or 22, etc) is used to configure the reduce function to reduce those many rows in a face, so may be some configuration gets stuck?

I adjusted the example to just call reduce directly.
https://github.com/tenstorrent/tt-metal/issues/6991#issuecomment-2559949342
Found the following:
I tried making changes to ttnn/cpp/ttnn/operations/pool/generic/device/kernels/compute/max_pool_multi_core.cpp
After adding
tilize_uninit(in_cb_id,out_cb_id);
pack_untilize_uninit(out_cb_id);

the PCC is still bad on the second call.
After commenting out
pack_untilize_dst_init_short<in_ntiles_c>(
    out_cb_id, num_out_rows, num_faces_in_tile); /* pack 1 row (1x16 or 1x32) */

the PCC is good on the second call.
cc @ncvetkovicTT

Narrowed it down further:
Commented out
tt_metal/include/compute_kernel_api/pack_untilize.h
PACK((llk_pack_untilize_init<block_ct_dim, full_ct_dim, diagonal, narrow_row, row_num_datums>(
    ocb, face_r_dim, num_faces)));

and reduce/test_global_avg_pool worked.

@ncvetkovicTT
Despite the name, the file is a regular program (that has a main section), not a test program.
You need to run with python and not with pytest.
I provided a full example of how to run in my issue: https://github.com/tenstorrent/tt-metal/issues/6991#issuecomment-2559885872

@bbradelTT No update unfortunately, I suspect that y_cnt for either input or output on PACK side is not correctly set. To verify this, it would maybe be helpful to change test_mean to something really simple, like a single tile with arranged values and instead of mean do copy to cb_out only. I tried doing that, but I wasn't successful, could you perhaps provide me an example that is the same as the one above, just instead of mean do copy? If the issue is that only reduce after max_pool fails, then I'll resort to simulation.

A bit more detail: This issue is being tracked together with #6991. They happen only on WH. In the example above there's the same pattern as explained in #6991, where max_pool+mean passes on every 4th attempt. In order to see if the pattern is related to mean, or irrelevant of the op, we should try with a different op after max_pool.

More context: This issue is being tracked together with #6991. They happen only on WH. In the example from the mentioned issue there's the same pattern as explained in #6991, where max_pool+mean passes on every 4th attempt. In order to see if the pattern is related to mean, or irrelevant of the op, we should try with a different op after max_pool.

One bug reported by while enabling max pool. It seems this is also in same line.
https://github.com/tenstorrent/tt-metal/issues/15824

@bbradelTT If I make input_shape for test_maxpool to be (1, 192, 32, 32) and not (1, 192, 56, 56), the test passes always. If I lower 3rd dimension down further to 64, the test passes, but for (1, 32, 32, 32) it passes every 2nd, not every 4th time.
Could you explain a bit what goes on in test_maxpool? I can't figure out how padding works, what actually gets permutet and what is expected input tensor to end up in L1. This is maybe important because whenever we have some LLKs with flags for narrow tiles or partial faces, they end up being false, which leads me to believe that the input is padded, but maybe poorly, because whenever the input shape is (1, C32, H32, W*32) the test passes (values are random, with a fixed seed).

@ncvetkovicTT in regards to what this is related to, I think it's related to reduce_init/reduce_tile
For the basic reduce unit teststtnn/cpp/ttnn/operations/reduction/generic/device/kernels/compute/reduce_w.cpp uses mm_init/matmul_tiles. When that happens, when run after max_pool, the tests pass. However, when I commented out that option and forced reduce_init/reduce_tile to be used, I saw the same behaviour.
That is:

max_pool + reduce_w using matmul - passes on the first attempt
max_pool + reduce_w using reduce - fails on the first attempt (I did not try 4+ attempts, although I'm guessing the same pattern would exist)

You should be able to test via the code in https://github.com/tenstorrent/tt-metal/issues/6991#issuecomment-2559885872 by changing
test_mean(device, 1, 32, 32, -2)

to
test_mean(device, 1, 32, 32, -1)

In terms of what else uses reduce_tile, running grep 'reduce_tile(' -r * in tt-metal shows other ops use reduce_tile as well. E.g. layernorm, groupnorm, and softmax. There are also a lot of tests:
tests/tt_metal/tt_metal/test_kernels/compute/layernorm.cpp:                reduce_tile(cb_x, cb_scaler, wt + j, scaler0, dst0);
tests/tt_metal/tt_metal/test_kernels/compute/layernorm.cpp:                reduce_tile(cb_xmm2, cb_scaler, wt + wtr, scaler0, dst0);
tests/tt_metal/tt_metal/test_kernels/compute/layernorm.cpp:            // reduce_tile(cb_xmm, cb_scaler, wt+wtr, scaler0, dst0);
tests/tt_metal/tt_metal/test_kernels/compute/max_pool.cpp:            reduce_tile(in_cb_id, in_scalar_cb_id, tile_i, 0, dst_i);
tests/tt_metal/tt_metal/test_kernels/compute/rmsnorm.cpp:                reduce_tile(cb_x2, cb_scaler, wt + wtr, scaler0, dst0);
tests/tt_metal/tt_metal/test_kernels/compute/rmsnorm.cpp:            // reduce_tile(cb_xmm, cb_scaler, wt+wtr, scaler0, dst0);
tests/tt_metal/tt_metal/test_kernels/compute/max_pool_multi_core.cpp:            reduce_tile(in_cb_id, in_scalar_cb_id, tile_i, 0, dst_i);
tests/tt_metal/tt_metal/test_kernels/compute/reduce_h.cpp:                reduce_tile(tt::CBIndex::c_0, tt::CBIndex::c_2, 0, 0, reduce_dst_idx);
tests/tt_metal/tt_metal/test_kernels/compute/reduce_hw.cpp:                reduce_tile(tt::CBIndex::c_0, tt::CBIndex::c_2, 0, 0, reduce_dst_idx);
tests/tt_metal/tt_metal/test_kernels/compute/softmax.cpp:            reduce_tile(cb_exps, cb_bcast_scaler, wt, bcast_scaler0, dst0);
tests/tt_metal/tt_metal/test_kernels/compute/reduce_w.cpp:                reduce_tile(tt::CBIndex::c_0, tt::CBIndex::c_2, 0, 0, reduce_dst_idx);

Trying this other stuff out might be a big time sink though.

@ncvetkovicTT maxpool is @mywoodstock 's area of expertise. I don't know the details.

564=224=732
It makes sense that this works every fourth iteration.

@bbradelTT If I make input_shape for test_maxpool to be (1, 192, 32, 32) and not (1, 192, 56, 56), the test passes always. If I lower 3rd dimension down further to 64, the test passes, but for (1, 32, 32, 32) it passes every 2nd, not every 4th time.
Could you explain a bit what goes on in test_maxpool? I can't figure out how padding works, what actually gets permutet and what is expected input tensor to end up in L1. This is maybe important because whenever we have some LLKs with flags for narrow tiles or partial faces, they end up being false, which leads me to believe that the input is padded, but maybe poorly, because whenever the input shape is (1, C_32, H_32, W*32) the test passes (values are random, with a fixed seed).

The algorithm works as follows.

Reader kernel reads data from halo output of input tensor to be processed by compute kernel in height direction(tt::tt_metal::ReduceOpDim::H). For example, for 3x3 kernel, each output row needs 9 input rows. Reader kernel creates these rows. Here note that width dimension of buffer to be processed by compute kernel is input channels.
Compute kernel simply takes this buffer and does reduction using reduce_tile_math, kernel(ttnn/cpp/ttnn/operations/pool/generic/device/kernels/compute/max_pool_multi_core.cpp).
Once reduction is done compute kernel writes data to output buffer using pack_untilize_dst<num_output_tiles>.

Partial tiles are taken care in compute kernel. However, I think that condition won't apply here since the input channels are greater than 32.
Pls do let me know if any further clarification is required.

@nkpatel-tt Thank you for trying to explain, but I am not sure I fully follow. If I put input_shape to be (1, 192, 56, 56), in compute kernel I get:
in_ntiles_hw = 1
in_ntiles_c = 6
window_size_hw = 4
out_h = 28
out_w = 28
nsticks_per_core = 13
but for (1, 192, 64, 64) I get:
in_ntiles_hw = 1
in_ntiles_c = 6
window_size_hw = 4
out_h = 32
out_w = 32
nsticks_per_core = 16
I can't see the difference in parameters between the two shapes in LLKs, that would help me understand what gets configured poorly.

@nkpatel-tt Thank you for trying to explain, but I am not sure I fully follow. If I put input_shape to be (1, 192, 56, 56), in compute kernel I get:
in_ntiles_hw = 1 in_ntiles_c = 6 window_size_hw = 4 out_h = 28 out_w = 28 nsticks_per_core = 13
but for (1, 192, 64, 64) I get:
in_ntiles_hw = 1 in_ntiles_c = 6 window_size_hw = 4 out_h = 32 out_w = 32 nsticks_per_core = 16
I can't see the difference in parameters between the two shapes in LLKs, that would help me understand what gets configured poorly.

Yes that is correct. Let me elaborate

In each iteration of for loop (for (uint32_t i = 0; i < nsticks_per_core; ++i)) at line 114 in compute kernel of max pool, one output stick is calculated. One output stick is 1 X input_channels.
The buffer passed to unpack_tilizeA_B_block at line no. 61 in compute kernel  contains kernel_h X kernel_w rows of input. The output expected is 1 row.
So each core is given several outputs to find max_pool of and reduce operation is called on them one after another.
The configurations can only change in case there is change in input channels, kernel size. In your prints above, in_ntiles_c(6*32 = 192) and window_size_hw(kernel_h*kernel_w) are relevant for config change

I did several experiments with example in this thread and by borys here and for all of the following configurations the result is same, every 4th iteration the PCC is good.

test_maxpool(device, (1, 192, 56, 56), (2, 2), (2, 2), (0, 0), (1, 1)
test_maxpool(device, (1, 192, 64, 64), (2, 2), (2, 2), (0, 0), (1, 1))
test_maxpool(device, (1, 192, 32, 32), (2, 2), (2, 2), (0, 0), (1, 1))
test_maxpool(device, (1, 64, 32, 32), (2, 2), (2, 2), (0, 0), (1, 1))

My set-up

latest main(2a86ff7fdde8561ec6c60f1635937ac2b13e122f)
Board N300 (ran export WH_ARCH_YAML=wormhole_b0_80_arch_eth_dispatch.yaml before doing experiment),


Extract Graph QL Support

Since version 2.0.0, Magento_GraphQL is a fixed requirement.
It would be awesome if this requirement could be optional or the whole Graph QL functionality could be extracted into a separate module.

Dear norgeindian
We will check your proposal with the developers and the product owner.
Thanks for your patience.
Best regards

@andrewrowanwallee, just closing issues without having them fixed and without adding any comment is not a nice action.

@sprankhub this has been static for over a year, the prudent action is to close it

@andrewrowanwallee, just because you ignore the issue for over a year doesn't mean it's fixed :facepalm:
This is just the issue, which is the most obvious, but it also applies to many others you just closed without fixing them.


Converted Object Detection model trained with q-aware training still has fake quantization layers

1. System information

OS Platform and Distribution (e.g., Linux Ubuntu 16.04): Ubuntu 18.04
TensorFlow installation (pip package or built from source): pip
TensorFlow library (version, if pip package or github SHA, if built from source): 1.15

2. Code
I Trained a MobileNetV2SSD using the Object Detection API including this block:
graph_rewriter {
  quantization {
    delay: 0
    weight_bits: 8
    activation_bits: 8
  }
}

Then I exported the model for tflite using the command python object_detection/export_tflite_ssd_graph.py  .
Finally, I converted to tflite using this code:
import tensorflow as tf
from PIL import Image
import numpy as np
import os
import sys

def _representative_dataset_gen():
    images_path = "/work/data/repr_dataset"
    if images_path is None:
        raise Exception(
             "Image directory is None, full integer quantization requires images directory!"
        )
    imagePaths = os.listdir((images_path))
    for p in imagePaths:
        image = Image.open(os.path.join(images_path, p))
        image = image.resize((300, 300))
        image = np.asarray(image)
        image = np.expand_dims(image, axis=1)
        image = image.reshape(1, 300, 300, 3)
        yield [image.astype("float32")]

saved_model_path = sys.argv[1]
input_arrays = ["normalized_input_image_tensor"]
output_arrays = ['TFLite_Detection_PostProcess',
    'TFLite_Detection_PostProcess:1',
    'TFLite_Detection_PostProcess:2',
    'TFLite_Detection_PostProcess:3']
input_shapes = {"normalized_input_image_tensor" : [1, 300, 300, 3]}
converter = tf.lite.TFLiteConverter.from_frozen_graph(saved_model_path,input_arrays,
     output_arrays, input_shapes)
converter.allow_custom_ops = True
converter.optimizations = [tf.lite.Optimize.DEFAULT]
converter.representative_dataset = _representative_dataset_gen

tflite_model_quant = converter.convert()
with open('quantized.tflite', "wb") as tflite_file:
     tflite_file.write(tflite_model_quant)

3. Failure after conversion
The converted model includes quantization/dequantization/fake quantization layers:

As a result, the inference time on an embedded system equipped with a NPU+NNAPI delegate is very high. I don't think this is normal. Is there a way to fix it?

@ethkim could you triage this issue?

@FSet89,
TensorFlow 1.x is not actively supported. Could you please update TensorFlow to the latest stable version v2.4.1 and check if you are facing the same issue. Thanks!

Is the quantization-aware training supported in the Object Detection API in TF2 (I mean the graph-rewrite block in the config file)

@FSet89,
TensorFlow 1.x is not actively supported. Could you please update TensorFlow to the latest stable version v2.4.1 and check if you are facing the same issue. Thanks!

I just tried but the graph_rewrite option seems not to work on TF2, so I cannot test quantization-aware training on TF2

@FSet89,
We are checking to see if this is still an issue, Can you check if this problem still persists with latest stable version of TF i.e 2.6.0? Thanks!

@FSet89,
We are checking to see if this is still an issue, Can you check if this problem still persists with latest stable version of TF i.e 2.7.0? You can also take a look at this function from TF for graph_rewrite and let us know if that's what you're looking for.Thanks!

Please help check. It still persists in 2.7.0. (My Result is as blow)


Load Google Fonts Faster

Hi,
What would be the best way to implement the advice on this page to help load Google Fonts faster?
For the moment I've added '&display=swap' to the URL in my main.js file:
head.link.push({
        rel: 'stylesheet',
        href: 'https://fonts.googleapis.com/css2?family=Open+Sans:400,800|Open+Sans+Condensed:300,700|Slabo+27px&display=swap'
})

Is it possible to do this:
head.link.push({
        rel: 'preload',
        as: 'style',
        href: 'https://fonts.googleapis.com/css2?family=Open+Sans:400,800|Open+Sans+Condensed:300,700|Slabo+27px&display=swap'
})

Thanks in advance.

Yes, I am preloading fonts.

Yes, I am preloading fonts.

Thanks for the reply :)


TechManager compatibility file for 0.90

Nobody ever¹ has had any problems with TechManager 1.5 for 0.90, and
the author hasn't been seen in WEEKS. Since evrything good in the world²
uses TechManager and the Community Tech Tree, here's a compatibility
shim that will install v1.5 for 0.90.
"Why not change the existing metadata?", I hear you ask. Mainly it's
because it's generated by netkan, and if KerbalStuff ever gets
updated, or if the metadata ever gets regenerated, we don't want
anything to break.
Many thanks to Daz for the prompting.
Attentioning @NathanKell, because relevance.
Also, this means I might finally upgrade to KSP 0.90.
¹ Allegedly.
² RP-0

Let's merge this then, and hope that the author will continue with 1.6 so we won't run into version comparison problems :smiling_imp:


Remove vendor

See: https://gardener-cloud.slack.com/archives/CAPMD6DCG/p1702302776352179

By moving to vgopath?

done with #432


Update generating-a-json-web-token-jwt-for-a-github-app.md

Why:
Closes: #33324

What's being changed (if available, include any code snippets, screenshots, or gifs):
Updated formatting for payload JSON to return top-level JSON when decoded, as the previous version was throwing an error for some users. Header JSON moved to single line to match payload. Also removed "JWT: " from print line to avoid scripting conflicts.

Check off the following:

[X] I have reviewed my changes in staging, available via the View deployment link in this PR's timeline (this link will be available after opening the PR).

For content changes, you will also see an automatically generated comment with links directly to pages you've modified. The comment won't appear if your PR only edits files in the data directory.

[X] For content changes, I have completed the self-review checklist.

Thanks for fixing this! Great job!
There seem to be some shellcheck warnings left:
$ shellcheck bash.sh

In bash.sh line 5:
pem=$( cat $2 ) # file path of the private key as second argument
           ^-- SC2086 (info): Double quote to prevent globbing and word splitting.

Did you mean:
pem=$( cat "$2" ) # file path of the private key as second argument

In bash.sh line 8:
iat=$((${now} - 60)) # Issues 60 seconds in the past
       ^----^ SC2004 (style): $/${} is unnecessary on arithmetic variables.

In bash.sh line 9:
exp=$((${now} + 600)) # Expires 10 minutes in the future
       ^----^ SC2004 (style): $/${} is unnecessary on arithmetic variables.

In bash.sh line 30:
printf '%s\n' $JWT
              ^--^ SC2086 (info): Double quote to prevent globbing and word splitting.

Did you mean:
printf '%s\n' "$JWT"

For more information:
  https://www.shellcheck.net/wiki/SC2086 -- Double quote to prevent globbing ...
  https://www.shellcheck.net/wiki/SC2004 -- $/${} is unnecessary on arithmeti...

Maybe let's fix them also.

@mark-mxwl Thanks so much for opening a PR! I'll get this triaged for review ✨

Thx for the ShellCheck output @lindhe! While those are all valid warnings, we don't really have to worry about globbing (wildcards)/splitting (tab, space, newline) on our positional parameters, due to the type of data we're passing through. The curly braces on the expressions are optional--I kept them there for the sake of consistency and readability.

Hi, thanks for the update. I ran the updated script, removing the templating, and there still seems to be an issue with the iat claim being a string:
{
  "message": "'Issued at' claim ('iat') must be an Integer representing the time that the assertion was issued",
  "documentation_url": "https://docs.github.com/rest",
  "status": "401"
}

Removing the quotes in the script solves the issue for me.
Interestingly, the same validation is not applied to the exp claim and will work as either a string or int.

Thanks for catching that @brakel. Interesting re: the behavior with exp. I adjusted the script so that iat and exp values are both integers, which hopefully will resolve this.

Hi

Hi it ok

Im sorry if i dit something. Im a beginner at this. Sorry. But my
graphenoseOS pixel 6a is still hacked.
Os it any step that can remove graphenos on my pixel?
Regards
Den fre 23 aug. 2024 19:11github-actions[bot] @.***>
skrev:

Thanks for opening a pull request! We've triaged this issue for technical
review by a subject matter expert 👀
—
Reply to this email directly, view it on GitHub
https://github.com/github/docs/pull/34134#issuecomment-2307479849, or
unsubscribe
https://github.com/notifications/unsubscribe-auth/BHOKRBS55IVG5FA2H5663ATZS5UM3AVCNFSM6AAAAABLVOY2TWVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMZDGMBXGQ3TSOBUHE
.
You are receiving this because you are subscribed to this thread.Message
ID: @.***>

@mark-mxwl Apologies for the delay! We recently merged a PR that I believe resolves the issue this PR is attempting to fix. Many apologies for not being able to get to this sooner 💛
I'll go ahead and close out this PR, but please feel free to reopen / ping if needed!

Np @nguyenalex836! Glad it got sorted. Appreciate the heads-up! 🙏


Processes with spaces are no longer filtered out

Addresses issue #11

Thanks for the submission and sorry for the delay in response, just getting back online after hurricane Matthew. I'll merge and publish this later tonight after I add a test for the case mentioned in #11

No worries! Were you effected severely?

Nothing bad thankfully, power out for a day and internet down for a couple days.

Released in v1.3.2

I'm glad to hear


Strimzi upgrade 0.32.0

relates to #468

@lburgazzoli Test are finally green :sweat:

@lburgazzoli  I've updated to Quarkus Operator SDK 5.0.0 now which comes with Java Operator SDK 4.2.0 which I also updated in the PR. Mind having a look?

@rinaldodev mind having a look ?


Updates to Transceiver-12: zr_supply_voltage_test

Added the function configureInterface to configure the interface with required  targetOutputPower and frequency.
Added functions opticalChannelComponentFromPort and isSubCompOfHardwarePort to get optical_comp name from port.
Changed the path to opticalComp to verify frequency and targetOutputPower , as they come under OpticalChannel , optical comp name has to be passed
Added the code to flap the interface as it was missing and code was waiting for interface to go down without any changes.

Pull Request Functional Test Report for #2896 / f513fb10c269fd604ef6e1c66ed04ec17ca3a90c
Virtual Devices

Device
Test
Test Documentation
Job
Raw Log

Arista cEOS

TRANSCEIVER-12: Telemetry: 400ZR Transceiver Supply Voltage streaming.

Cisco 8000E

TRANSCEIVER-12: Telemetry: 400ZR Transceiver Supply Voltage streaming.

Cisco XRd

TRANSCEIVER-12: Telemetry: 400ZR Transceiver Supply Voltage streaming.

Juniper ncPTX

TRANSCEIVER-12: Telemetry: 400ZR Transceiver Supply Voltage streaming.

Nokia SR Linux

TRANSCEIVER-12: Telemetry: 400ZR Transceiver Supply Voltage streaming.

Openconfig Lemming

TRANSCEIVER-12: Telemetry: 400ZR Transceiver Supply Voltage streaming.

Hardware Devices

Device
Test
Test Documentation
Raw Log

Arista 7808

TRANSCEIVER-12: Telemetry: 400ZR Transceiver Supply Voltage streaming.

Cisco 8808

TRANSCEIVER-12: Telemetry: 400ZR Transceiver Supply Voltage streaming.

Juniper PTX10008

TRANSCEIVER-12: Telemetry: 400ZR Transceiver Supply Voltage streaming.

Nokia 7250 IXR-10e

TRANSCEIVER-12: Telemetry: 400ZR Transceiver Supply Voltage streaming.

Help

Pull Request Test Coverage Report for Build<PHONE_NUMBER>
Details

0 of 0   changed or added relevant lines in 0 files are covered.
No unchanged relevant lines lost coverage.
Overall coverage remained the same at 55.448%

Totals

Change from base Build<PHONE_NUMBER>:
0.0%

Covered Lines:
1949

Relevant Lines:
3515

💛  - Coveralls

opticalChannelComponentFromPort should be moved into /internal.   Please coordinate with @prinikasn and see https://github.com/openconfig/featureprofiles/pull/2890#discussion_r1561822628

@dplore and @prinikasn I have moved the common functions to cfgplugins as per comment given on #2890 . Please check.

Closing this as recent merge to the test had similar changes.


[docs] clarify description of prediction early stopping

https://github.com/microsoft/LightGBM/blob/f83180883a51729af9562ccac7b450c6da79a04a/src/application/predictor.hpp#L43-L58
https://github.com/microsoft/LightGBM/blob/d517ba12f2e7862ac533908304dddbd770655d2b/include/LightGBM/boosting.h#L282-L283
https://github.com/microsoft/LightGBM/blob/8116d880f79967d339783e5e9597351639232015/include/LightGBM/objective_function.h#L61-L62

Does prediction early stopping really work with ranking applications?

@cbecker @guolinke Could you please help with this question https://github.com/microsoft/LightGBM/pull/4411#issuecomment-869059869?

@StrikerRUS It depends on what the scores look for ranking.
For multi-class, each instance is given N scores [c1, c2, c3 c4, .. cn], and we compute the margin (see prediction_early_stop.cpp, CreateMulticlass()). The idea is that when a class is further than all other by a large margin (score difference), then we can stop.
I see that for ranking LightGBM implements regression. In this case, what is the prediction for each sample?
If it is a relative 'rank' to other values as a difference, as in multi-class, then one could apply the multi-class early stopping computation above (though I never tried that in practice)

@cbecker Thank you so much for quick response!
LightGBM's prediction values in ranking are pointwise (https://github.com/microsoft/LightGBM/issues/3326#issuecomment-677957226).


Chef and Card Game

Added New Folder

Yes its codechef long challenge problem problem
On Sun, 4 Oct 2020, 09:32 Vishruth Subramanian<EMAIL_ADDRESS>wrote:

@Vishruth-S requested changes on this pull request.
Is this from codechef? If yes, add it to Codechef folder.
Otherwise add it to misc folder.
Also please add comments in your code explaining the logic used.
—
You are receiving this because you authored the thread.
Reply to this email directly, view it on GitHub
https://github.com/Vishruth-S/CompetitiveCode/pull/51#pullrequestreview-501589047,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ALSRKVEXJGJP6UQOV33MVN3SI7XWTANCNFSM4SDF7A7Q
.

@Skub123  Then please add it in the CodeChef_problems folder.
Also add comments to your solution explaining the logic used.

This PR will be closed soon if there is no response.

Yes I add immediately
On Mon, 5 Oct 2020, 23:23 Vishruth Subramanian<EMAIL_ADDRESS>wrote:

This PR will be closed soon if there is no response.
—
You are receiving this because you were mentioned.
Reply to this email directly, view it on GitHub
https://github.com/Vishruth-S/CompetitiveCode/pull/51#issuecomment-703789832,
or unsubscribe
https://github.com/notifications/unsubscribe-auth/ALSRKVAAAQW2GYJH7QEGPTLSJIB3JANCNFSM4SDF7A7Q
.


[New image] Add an image with Chrome79

Hello :)
It is not an issue, but related to one I faced. I had a weird situation where cypress was hanging between two tests, I still don't know why, and I don't reproduce this behaviour using Chrome 79.
So, could you add chrome79 image please ?
PS: the problem happens with the image node10.16.0-chrome77 and node12.8.1-chrome78-ff70 but not when I update manually to the last google-chrome-stable version.
Thank you for your work.

I have published new Docker image cypress/browsers:node12.14.0-chrome79-ff71 with Chrome 79


[$500] mWeb - PDF - When typing password, revealing it and confirm, another attachment is displayed

If you haven’t already, check out our contributing guidelines for onboarding and email<EMAIL_ADDRESS>to request to join our Slack channel!

Version Number: 1.4.32-2
Reproducible in staging?: y
Reproducible in production?: y
If this was caught during regression testing, add the test name, ID and link from TestRail: https://expensify.testrail.io/index.php?/tests/view/4238270
Email or phone of affected tester (no customers):
Logs: https://stackoverflow.com/c/expensify/questions/4856
Expensify/Expensify Issue URL:
Issue reported by: Applause - Internal Team
Slack conversation:
Action Performed:
Pre-requisite: the user must be logged in.

Go to any chat.
Send a password protected PDF.
Send another attachment.
Tap on the password protected PDF preview.
Type the password.
Tap on the eye icon button to reveal it (Important step).
Tap on "Confirm".

Expected Result:
The password protected PDF should be displayed.
Actual Result:
Another file is displayed.
Workaround:
Unknown
Platforms:

Which of our officially supported platforms is this issue occurring on?

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

Screenshots/Videos
Add any screenshot/video evidence
https://github.com/Expensify/App/assets/93399543/b1fd3194-5749-4f76-9086-6b01bfdc418e
View all open jobs on GitHub
Upwork Automation - Do Not Edit

Upwork Job URL: https://www.upwork.com/jobs/~014ec322edab15924f
Upwork Job ID:<PHONE_NUMBER>223542272
Last Price Increase: 2024-01-25

We think that this bug might be related to #vip-vsb
CC @quinthar

Seems like a side effect of https://github.com/Expensify/App/issues/23546
I noticed it diddn't even open the correct image on initial load.

Proposal
Please re-state the problem that we are trying to solve in this issue
Another file is displayed after inputting the password for a password protected pdf file, tapping the reveal password "Eye" then pressing the Confirm.
What is the root cause of that problem?
I found the culprit, the line which for some weird unknown reason causes this issue, only after tapping the reveal password "Eye" then pressing the Confirm button. It was introduced by this PR https://github.com/Expensify/App/pull/26025 and this is the line:
https://github.com/Expensify/App/blob/1439ac08245bc7a49fc5b0384e53388155bdf407/src/components/PDFView/PDFPasswordForm.js#L145-L146
I know this is not enough to pass as an acceptable RCA since the reason why it's only happening when the reveal password "Eye" is tapped, is still unknown. But since I found a solution to the issue I thought I should mention it 🌞
What changes do you think we should make in order to solve the problem?
Removing the line mentioned above fixes the issue but that wound also mean removing the functionality added by the mentioned PR which is: keyboard should stay open (keeping input focused) when clicking the Confirm button.
If we really want this fixed even though the full root cause is unknown, and we're fine with not having the "keyboard should stay open" functionality on iOS: mWeb Safari - we can create a library that will target only iOS: mWeb Safari, keeping the PR's functionality for all other platforms while fixing the current issue in Safari.
Videos

iOS: mWeb Safari

Before
After

Thanks for digging.
That did work. Let's see if we can identify the root cause.

I also had identified the mouseEvent tergerring the wrong image. And after this not making sense identified that initially the correct image did not even op in the video. The mouse event I believe is just a side effect of the original safari bug and the FlatList component

Indeed, @kidroca already identified a similar issue and raised it here: https://github.com/necolas/react-native-web/issues/2544, more details: https://github.com/Expensify/App/issues/23546#issuecomment-1895677762
From the react-native-web issue:

When opening a Modal that includes a ScrollView or a VirtualList spanning multiple pages, the ScrollView automatically scrolls to the first element. This issue arises from the modal focus trap logic, even when the initialScrollIndex is set to a value other than the index of the first element.

For sure part of the root cause here is related to the FlatList edge case experienced on Safari - the modal's focus trap logic.
We just don't know exactly why does the reveal password together with the preventDefault on the onMouseDown of thr Confirm button produces the current issue.

Proposal
Please re-state the problem that we are trying to solve in this issue.
When typing password and clicking on the eye icon to reveal and then clicking confirm button, opens another attachment.
What is the root cause of that problem?
The safari desktop and mobile browser are affected where clicking on the eye icon to reveal the password and then clicking confirm button, displays another pdf rather than the pdf for which the password was entered.
PR (https://github.com/Expensify/App/pull/26025) added e.preventDefault() to keep the keyboard open when an incorrect password was entered.
https://github.com/Expensify/App/blob/2e6e552aa9027d743752fdee3b0a8f92a6988940/src/components/PDFView/PDFPasswordForm.js#L146
Also the BaseTextInput has similar handling for onMouseDown
https://github.com/Expensify/App/blob/2e6e552aa9027d743752fdee3b0a8f92a6988940/src/components/TextInput/BaseTextInput/index.tsx#L402
If e.preventDefault were to be removed from BaseTextInput, then the keyboard would not stay open when the user clicks on the reveal password icon. The expected is to keep the keyboard open when the user user clicks on the reveal password icon.
So reverting the PR would also require consideration for the BaseTextInput onMouseDown event to be cleared but then the issue would get worse than before i.e the keyboard would be hidden if the user clicks on the eye icon or enters incorrect password.
What changes do you think we should make in order to solve the problem?
I suggest not to revert the PR given that similar is used in BaseTextInput for onMouseDown event and reverting the PR would make the problem worse than before as the BaseTextInput behavior would also be affected.
Rather the simple approach would to patch the patch for Safari. The patch for safari involves checking the viewableItems array in the updatePage callback for onViewableItemsChanged.
https://github.com/Expensify/App/blob/6198343741240266a259676c84552488151a2418/src/components/Attachments/AttachmentCarousel/index.js#L75
Due to the onMouseDown () => e.preventDefault, the viewabltItems array has the wrong item after the user clicks the eye to reveal the password and clicks confirm.
The patch would involve to check the index of the viewable items array and if the index does not match with current page index, then call scrollToIndex passing current page index. Call to scrollToIndex loads the correct item in the viewable items array with the correct index.
            if(Browser.getBrowser() === CONST.BROWSER.SAFARI)
            {
                if(viewableItems.length === 1 && viewableItems[0].index !== pageRef.current)
                {
                    scrollRef.current.scrollToIndex({index: pageRef.current, animated: canUseTouchScreen});
                    return;
                }
            }

What alternative solutions did you explore? (Optional)

@c3024 bump on the proposals above? Thanks!

Thanks for the bump. I'll update in a few hours.

Asked here on Slack

@c3024 I wanted to mention the proposal also corrects the image not getting loaded correctly when more than one image is loaded, in desktop safari incorrect image is loaded. Also removing the onMouseDown event from PR(https://github.com/Expensify/App/pull/26025) would leave regression open as already mentioned and the BaseTextInput is also using onMouseDown. So to sum up, the issue affects mweb and desktop safari. the browser specific patch also leaves out any regression as already mentioned.

@c3024 I wanted to mention the proposal also corrects the image not getting loaded correctly when more than one image is loaded, in desktop safari incorrect image is loaded.
I think you mean this solution fixes another bug as well. Could you explain this preferably with a video? Thanks. @sourcecodedeveloper

Also removing the onMouseDown event from PR(https://github.com/Expensify/App/pull/26025) would leave regression open as already mentioned and the BaseTextInput is also using onMouseDown. So to sum up, the issue affects mweb and desktop safari.

@c3024 The quote from above does not make any sense, the only tradeoff from my solution would be the keyboard persist which the mentioned PR added, that's it - no other regressions or BaseTextInput related issues. Here are the before / after videos on both mWeb and Web Safari.
Videos

iOS: mWeb Safari

Before
After

MacOS: Safari

Before
After

@c3024 Yes the proposal resolves another bug. The safari bug happens without using passworded pdf, the incorrect image is loaded, when several pdfs are uploaded.
Safari bug
safari_bug.webm
Safari Poc. The proposal resolves the issue of loading correct attachment.
safari_poc.webm

The 'safari desktop issue of loading incorrect image' is already being handled here:
[$2000] Wrong Image opens on HT Report in Safari.

@c3024 does this need to be closed in favor of https://github.com/Expensify/App/issues/23546?

@c3024 bump on the question above ^^^ thanks!

I think we might want to fix this (though the fix does not completely address the root cause) independent of the other issue.

@c3024 I am pretty sure the password pdf bug is due to the AttachmentCarousel loading incorrect page index which is why the incorrect pdf is loaded after entering the password. The onMouseDown approach does not completely address the root cause. The solution I have proposed would also resolve loading correct image as mentioned. The best scenario going with the proposed safari solution would be the AttachmentCarousel would load the correct pdf after entering password and also the other safari bug would be resolved, and I do not have any worst scenario. If later the root cause for the onMouseDown event is discovered another PR can be raised, otherwise the issue would become blocked and come to stand still.

I think let’s just HOLD this till #23546 is fixed because it is the older and higher value issue and will likely address the root cause. Since #23546 appears to take a lot of time, it might be better to change this issue to Weekly or Monthly. @CortneyOfstad

Sounds good @c3024 — I'll also update the title that it is on hold 👍

No update on https://github.com/Expensify/App/issues/23546

In the linked GH, there is discussion around next steps, so going to keep this at weekly until the PR is resolved.

Bumped the other GH — will continue to keep an eye on things 👍

Back from Ooo! Bumped the other GH and requested an update by EOD today. Will follow up here when received 👍

Peter has found that the issue is affecting web browsers, so fix will be focused there 👍

Bumped on the on-hold GH here — will update as soon as I hear back 👍

Reached out for additional guidance/next steps here

PR is in review now — https://github.com/Expensify/App/pull/39930

PR is still in review 👍

Bumped a comment on the PR here

PR is continuing to be reviewed with comments as recent as <2 hours ago 👍

PR has been reviewed and should be marked for merging based on the comment here

We're on a merge freeze until Wednesday, so this will be delayed 👍

Merge freeze should end today 🤞

Went into product:ion 4 days ago! 😍

On hold issue has been resolved/completed, so this can be closed! 🎉


Continue on .flock files after glob to avoid a nasty error log.

there is a unit test failing. Other than that it looks good.

Test seems to have been a bit flacky. Unrelated I hope.


Switch between active sessions

When I have open multiple sessions at once I was missing a feature for seeing what sessions are open.
This uses the already existing input selector, but with only the currentlly active sessions, not all the entries provided in the config.

Okay this lgtm and I will merge but I have a major refactor locally which will make this obsolete but there will be another more intuitive way to do it then and I'll make it available by default

Thank you

Sounds good, did not know😅 looking forward to it!


Reworked interaction system to be component based

Hey everyone,
Wanted to give an update here that I'm currently reworking the interaction system to be component based.
This should improve the overall flexibility of COGITO quite a bit while hopefully still keeping it intuitive to use.
Just as a quick rundown:
Instead of an object having a single script that has to contain all info on its behaviour, with the new system you can
attach components to your object that will define its behaviour and interactions.
For example, currently there's a cogito_pickup script and a cogito_carryable script to create those type of objects.
With the new system you can create an object, then attach a carryable component and a pickup component, and it will support both behaviours.
As this is a bigger undertaking, it might take some time. This also means that the currently supplied Prefab Scenes will all be updated for the new system. If you've been using the previous one, you might have to update your own Scenes, which hopefully shouldn't be too complicated.

This is now implemented in version BETA 202402
As this changes quite a bit in how the interaction system works, please apply due diligence before updating your project!
I'm going to leave this issue open for a few more days in case any questions or suggestions come up.

Did some minor additional code cleanup in BETA 202402.01.
Hints are now also component based, making it all cleaner and more intuitive to use.
Closing this.


Panel when moved to right or left is still having views side by side

Panel when moved to right or left is still having views side by side

Hope you already know about it. If there is an issue already close this as a dup.

To Verify:

Start by creating a multipanel with timeline and outline
Move panel to the left or right
Verify that the panels reflow to vertical layout


Added HTML main, details, and summary elements

Fixes https://github.com/Microsoft/TypeScript/issues/17872
All 3 elements are living standards

@mhegazy if you could help me understand one thing, I started adding the constructors with this change because I saw the other elements had them, is this something I should be doing? Thanks!

if you add a new type that is supposed to be construct-able, then yes. it all depends on the spec.


User Sign-In/Sign-Out

Parsing user's Github OAuth Token from localstorage, if doesn't exist, message will pop up to alert users to read the instructions on home page to sign-in, if it does, user is now signed in with their github account and can access our features.
If the user is not signed in but tries to access our features, it will also move them to the instructions for signing in


Display option for "isRingToOpenEnabled" and "IsContinuousModeEnabled"

Hello Lukas, there is a possibility that you can install an option for the switches:
"isRingToOpenEnabled"
"isContinuousModeEnabled"
that these are displayed directly at the lock of the opener in homekit as switch and not as additional switches?
King Regards
Nastra

Just like the unlatch variant 😉

There has been a lengthly discussion about where to put settings switches in the Dyson plugin (see https://github.com/lukasroegner/homebridge-dyson-pure-cool/issues/6). I decided to put the switches in a separate accessory as they destroyed the layout of the main accessory.
That will also be the case with the lock accessory. If only one switch is enabled, it will flow below the two lock switches, which might look weird. What do you think?

Ah ok, I haven't noticed that the home app shows the buttons when there are more than two because I usually use third party apps.
But can you add an option that lets the user decide in the config whether to bundle the switches in one device or create a separate switch for each function?
This would solve the problem because everybody can decide how he wants to have it?
In the homebridge-fritz-plugin of @Seydex I have already seen such a function.

What do you think of the proposal?

Sounds legit, I'll implement it when I have the time to.


Adding missing properties to ConnectionOptions

This pull request adds all missing properties for the ConnectionOption interface.
They are mostly new properties that didn't exist in the old mysql package.
There are some exceptions where the properties did exist in the old mysql package, but where missing from types/mysql:
charsetNumber, nestTables, pool, connectionLimit, waitConnections
Also, I am uncertain on what these types should be defined as: pool, Promise and stream. These are all set as any right now.

Thanks!


Client randomly doesn't get a sole seed from the tracker

Tracker and sole seeder are hosted on the server, both using monotorrent.
The client receives a torrent file that uses this tracker and tries to start downloading it.
Seemingly randomly the tracker will report 0 peers. The seed seems to always get at least 1 peer from the tracker (itself). Using an external application to download the torrent instead of monotorrent seems to always receive the peer properly.
The download is forever stuck at 0 since there are no peers. Even waiting for a very long time doesn't seem to do anything.
These are the only events being fired after starting the torrent when it fails (hash is pre-checked).
[09:54:46] ScrapeComplete Successful=True Tracker=http://.../announce
[09:54:46] AnnounceComplete Successful=True Tracker=http://.../announce PeersCount=0
[09:54:46] PeersFound ExistingPeers=0 NewPeers=0

This is what happens when it works properly:
[11:05:06] ScrapeComplete Successful=True Tracker=http://.../announce
[11:05:07] AnnounceComplete Successful=True Tracker=http://.../announce PeersCount=1
[11:05:07] PeersFound ExistingPeers=-1 NewPeers=2
[11:05:08] PeerConnected Peer=ipv4://.../

Looks like there's a bunch of http/tracker exceptions being thrown when querying the tracker, but they seem to happen even if it succeedes.

Tested on latest master build on both client and server, but I believe it kept happening on latest beta build on nuget as well as the stable build.
This is pretty critical since I'm using private torrents so no DHT which would probably be able to sidestep the issue.
Edit: When there are multiple torrents running at the same time (all using that same tracker), it seems like some of them can succeed and some can fail to get the seed from the tracker.

Hrm... That specific exception is suspect. It implies the underlying data is incomplete, i.e. a partial Http response was received.
Could you add a line of logging to print out the content length of the response:
https://github.com/alanmcgovern/monotorrent/blob/a8c7a6c20195b9a1f3c31d8aca32c152f385bcc7/src/MonoTorrent.Trackers/MonoTorrent.Connections.Tracker/HTTPTrackerConnection.cs#L215
Also, if you dump the Memory stream to disk using System.Text.Encoding.ASCII to encode the bytes, it should be possible to eyeball the result and see what the content is. It might make it clearer whether the response is incomplete, or completely invalid.

Here's a dump of a failed response dump.zip
There is a lot of these being thrown:

It's all with family == AddressFamily.InterNetworkV6. I only enabled IPv4 on both the server and client with:
ListenEndPoints = new Dictionary<string, IPEndPoint> { { "ipv4", new IPEndPoint(IPAddress.Any, port) } },
Tracker has this as a sole listener, so I guess it's trying to only use IPv6?
var trackerEndpointHttp = $"*:{trackerPortHttp}";
var listenerHttp = TrackerListenerFactory.CreateHttp($"http://{trackerEndpointHttp}/announce/");

It's all with family == AddressFamily.InterNetworkV6. I only enabled IPv4 on both the server and client with:

There's some cleanup which could be done here to reduce the frequency at which exceptions are thrown here, but it shouldn't make a difference to the actual behaviour or success of the library. The ipv6 tracker extensions state that the client should make both an ipv4 and ipv6 connection when announcing/scraping. If the tracker you're hosting only listens on ipv4, then the ipv6 announce from the client will fail. At this point the overall announce to the tracker will be considered a success as at least 1 announce variant succeeded. This way you can get ipv4 peers, ipv6 peers, or both ipv4+ipv6 peers.

Edit: When the BEncodedValue.Decode fails the reply seems to be empty, writing the response to file results in 0 bytes.

That's surprising! I'll review the TrackerServer code and try to see how this could happen. Actualy i just noticed the wireshark cap so i'll check that out first! Thanks!

@ManlyMarco Is this capture from a time when the response appeared empty on the client side? If so, the bug has to be on the client side as the capture does show the response has the expected data, and contentlength.
Huh.

I wonder if this will shed some light on the problem: https://github.com/alanmcgovern/monotorrent/pull/620
If you don't have logging enabled/redirected, you can redirect logging to a file by replacing Console.Out with a regular filestream/something and registering a function here. Note: You should do this right at the start of your app so everything initialises correctly.
https://github.com/alanmcgovern/monotorrent/blob/master/src/Samples/SampleClient/StandardDownloader.cs#L35
I have moderate hope this will identify the issue you're hitting :)

I'm using .NET Framework 4.7.2. Running the code in .NET 6.0 does seem to make a difference but it still throws an exception in the same spot, this time System.NotSupportedException: 'This protocol version is not supported.'. Either way it seems to work the same in the end.
I'm trying to reproduce the issue with the more detailed logging enabled, but of course it doesn't happen when I'm trying to get it to happen. It seems to have fixed itself somehow, at least for now. I'll have to test it in the same environment as before tomorrorow. I'll keep the logging enabled and if the issue reappears I'll let you know.
For now I sidestepped the issue of unreliable tracker connection by manually adding the seed (I know it's IP since it's the same as the tracker given in the torrent file and the port never changes) and enabling peer exchange - this seems to always work.

Here's what I've got, it seems to randomly crash parsing the incoming tracker requests, but not all of them.
All of the torrents are created in the exact same way with only contained files and names being different. The same tracker is used for all of them. HTTP tracker is on port 15846 while the seed is on port 15847. Client uses port 15847 but is behind a VPN.
Client log:
[16:09:39] INFO: HttpTrackerConnection:Unknown scrape tag received: Key name  Value test torrent - c
[16:09:39] INFO: HttpTrackerConnection:Unknown scrape tag received: Key name  Value test torrent - d
[16:09:39] INFO: HttpTrackerConnection:Unknown scrape tag received: Key name  Value test torrent - e
[16:09:39] INFO: HttpTrackerConnection:Unknown scrape tag received: Key name  Value test torrent - f
[16:09:39] INFO: HttpTrackerConnection:Unknown scrape tag received: Key name  Value test torrent - i
[16:09:39] INFO: HttpTrackerConnection:Unknown scrape tag received: Key name  Value test torrent - j
[16:09:39] [test torrent - i] ScrapeComplete Successful=True Tracker=http://xx.xx.xxx.xxx:15846/announce
[16:09:39] [test torrent - j] ScrapeComplete Successful=True Tracker=http://xx.xx.xxx.xxx:15846/announce
[16:09:39] [test torrent - d] ScrapeComplete Successful=True Tracker=http://xx.xx.xxx.xxx:15846/announce
[16:09:39] [test torrent - c] ScrapeComplete Successful=True Tracker=http://xx.xx.xxx.xxx:15846/announce
[16:09:39] [test torrent - f] ScrapeComplete Successful=True Tracker=http://xx.xx.xxx.xxx:15846/announce
[16:09:39] [test torrent - e] ScrapeComplete Successful=True Tracker=http://xx.xx.xxx.xxx:15846/announce
[16:09:39] INFO: HttpTrackerConnection:Tracker http://xx.xx.xxx.xxx:15846/announce sent 2 peers for InfoHash MonoTorrent.InfoHash
[16:09:39] INFO: HttpTrackerConnection:Tracker http://xx.xx.xxx.xxx:15846/announce sent 2 peers for InfoHash MonoTorrent.InfoHash
[16:09:39] INFO: HttpTrackerConnection:Tracker http://xx.xx.xxx.xxx:15846/announce sent 2 peers for InfoHash MonoTorrent.InfoHash
[16:09:39] INFO: HttpTrackerConnection:Tracker http://xx.xx.xxx.xxx:15846/announce sent 2 peers for InfoHash MonoTorrent.InfoHash
[16:09:39] INFO: HttpTrackerConnection:Tracker http://xx.xx.xxx.xxx:15846/announce sent 2 peers for InfoHash MonoTorrent.InfoHash
[16:09:39] INFO: HttpTrackerConnection:Tracker http://xx.xx.xxx.xxx:15846/announce sent 2 peers for InfoHash MonoTorrent.InfoHash
[16:09:39] INFO: HttpTrackerConnection:Tracker http://xx.xx.xxx.xxx:15846/announce sent 2 peers for InfoHash MonoTorrent.InfoHash
[16:09:39] INFO: TrackerTier:Announced to http://xx.xx.xxx.xxx:15846/announce
[16:09:39] INFO: TrackerTier:Announced to http://xx.xx.xxx.xxx:15846/announce
[16:09:39] INFO: TrackerTier:Announced to http://xx.xx.xxx.xxx:15846/announce
[16:09:39] INFO: TrackerTier:Announced to http://xx.xx.xxx.xxx:15846/announce
[16:09:39] INFO: TrackerTier:Announced to http://xx.xx.xxx.xxx:15846/announce
[16:09:39] INFO: TrackerTier:Announced to http://xx.xx.xxx.xxx:15846/announce
[16:09:39] INFO: TrackerTier:Announced to http://xx.xx.xxx.xxx:15846/announce
[16:09:39] [test torrent - d] AnnounceComplete Successful=True Tracker=http://xx.xx.xxx.xxx:15846/announce PeersCount=1
[16:09:39] [test torrent - i] AnnounceComplete Successful=True Tracker=http://xx.xx.xxx.xxx:15846/announce PeersCount=1
[16:09:39] [test torrent - k] AnnounceComplete Successful=True Tracker=http://xx.xx.xxx.xxx:15846/announce PeersCount=1
[16:09:39] [test torrent - c] AnnounceComplete Successful=True Tracker=http://xx.xx.xxx.xxx:15846/announce PeersCount=1
[16:09:39] [test torrent - j] AnnounceComplete Successful=True Tracker=http://xx.xx.xxx.xxx:15846/announce PeersCount=1
[16:09:39] [test torrent - m] AnnounceComplete Successful=True Tracker=http://xx.xx.xxx.xxx:15846/announce PeersCount=1
[16:09:39] [test torrent - b] AnnounceComplete Successful=True Tracker=http://xx.xx.xxx.xxx:15846/announce PeersCount=1
[16:09:39] [test torrent - b] PeersFound ExistingPeers=0 NewPeers=1
[16:09:39] [test torrent - d] PeersFound ExistingPeers=0 NewPeers=1
[16:09:39] [test torrent - c] PeersFound ExistingPeers=0 NewPeers=1
[16:09:39] [test torrent - m] PeersFound ExistingPeers=0 NewPeers=1
[16:09:39] [test torrent - i] PeersFound ExistingPeers=0 NewPeers=1
[16:09:39] [test torrent - k] PeersFound ExistingPeers=0 NewPeers=1
[16:09:39] [test torrent - j] PeersFound ExistingPeers=0 NewPeers=1
[16:09:39] INFO: ConnectionManager:Trying to connect to ipv4://xx.xx.xxx.xxx:15847/
[16:09:39] INFO: ConnectionManager:Trying to connect to ipv4://xx.xx.xxx.xxx:15847/
[16:09:39] INFO: ConnectionManager:Trying to connect to ipv4://xx.xx.xxx.xxx:15847/
[16:09:39] INFO: ConnectionManager:ipv4://xx.xx.xxx.xxx:15847/: Connection opened
[16:09:39] INFO: ConnectionManager:ipv4://xx.xx.xxx.xxx:15847/: [outgoing] Sending handshake message with peer id '-MO3000-023404528852'
[16:09:39] INFO: ConnectionManager:ipv4://xx.xx.xxx.xxx:15847/: Connection opened
[16:09:39] INFO: ConnectionManager:ipv4://xx.xx.xxx.xxx:15847/: [outgoing] Sending handshake message with peer id '-MO3000-023404528852'
[16:09:39] INFO: ConnectionManager:Trying to connect to ipv4://xx.xx.xxx.xxx:15847/
[16:09:39] INFO: HttpTrackerConnection:Unknown scrape tag received: Key name  Value test torrent - a
[16:09:39] INFO: HttpTrackerConnection:Unknown scrape tag received: Key name  Value test torrent - b
[16:09:39] INFO: HttpTrackerConnection:Tracker http://xx.xx.xxx.xxx:15846/announce sent 2 peers for InfoHash MonoTorrent.InfoHash
[16:09:39] INFO: TrackerTier:Announced to http://xx.xx.xxx.xxx:15846/announce
[16:09:39] INFO: HttpTrackerConnection:Unknown scrape tag received: Key name  Value test torrent - m
[16:09:39] INFO: TrackerTier:Announced to http://xx.xx.xxx.xxx:15846/announce
[16:09:39] INFO: ConnectionManager:ipv4://xx.xx.xxx.xxx:15847/: Connection opened
[16:09:39] INFO: ConnectionManager:ipv4://xx.xx.xxx.xxx:15847/: [outgoing] Sending handshake message with peer id '-MO3000-023404528852'
[16:09:40] INFO: ConnectionManager:ipv4://xx.xx.xxx.xxx:15847/: Connection opened
[16:09:40] INFO: ConnectionManager:ipv4://xx.xx.xxx.xxx:15847/: [outgoing] Sending handshake message with peer id '-MO3000-023404528852'
[16:09:40] INFO: HttpTrackerConnection:Unknown scrape tag received: Key name  Value test torrent - k
[16:09:40] INFO: HttpTrackerConnection:Tracker http://xx.xx.xxx.xxx:15846/announce sent 2 peers for InfoHash MonoTorrent.InfoHash
[16:09:40] INFO: TrackerTier:Announced to http://xx.xx.xxx.xxx:15846/announce
[16:09:40] INFO: ConnectionManager:ipv4://xx.xx.xxx.xxx:15847/: [outgoing] Received handshake message with peer id '-MO3000-182563814012'
[16:09:40] INFO: ConnectionManager:ipv4://xx.xx.xxx.xxx:15847/: [outgoing] Received handshake message with peer id '-MO3000-182563814012'
[16:09:40] INFO: ConnectionManager:ipv4://xx.xx.xxx.xxx:15847/: [outgoing] Received handshake message with peer id '-MO3000-182563814012'
[16:09:40] INFO: ConnectionManager:ipv4://xx.xx.xxx.xxx:15847/: [outgoing] Received handshake message with peer id '-MO3000-182563814012'
[16:09:41] INFO: HttpTrackerConnection:Unknown scrape tag received: Key name  Value test torrent - k
[16:09:41] INFO: TrackerTier:Announced to http://xx.xx.xxx.xxx:15846/announce

Server log:
ERROR:HttpTrackerListener:Error processing announce from peer
System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. (Parameter 'port')
   at System.Net.IPEndPoint..ctor(IPAddress address, Int32 port)
   at MonoTorrent.TrackerServer.AnnounceRequest..ctor(NameValueCollection collection, IPAddress address)
   at MonoTorrent.Connections.TrackerServer.TrackerListener.Handle(NameValueCollection collection, IPAddress remoteAddress, Boolean isScrape)
   at MonoTorrent.Connections.TrackerServer.TrackerListener.Handle(String queryString, IPAddress remoteAddress, Boolean isScrape)
   at MonoTorrent.Connections.TrackerServer.HttpTrackerListener.ProcessContextAsync(HttpListenerContext context, CancellationToken token)
INFO: ListenManager:ipv4://yyy.yyy.yy.yyy:58411/: ConnectionReceived
INFO: ListenManager:ipv4://yyy.yyy.yy.yyy:50603/: ConnectionReceived
INFO: ListenManager:ipv4://yyy.yyy.yy.yyy:52429/: ConnectionReceived
INFO: ListenManager:ipv4://yyy.yyy.yy.yyy:41189/: ConnectionReceived
INFO: ListenManager:ipv4://yyy.yyy.yy.yyy:50603/: [incoming] Received handshake with peer_id '-MO3000-023404528852'
INFO: ListenManager:ipv4://yyy.yyy.yy.yyy:50603/: Handshake successful handled
INFO: ConnectionManager:ipv4://yyy.yyy.yy.yyy:50603/: Incoming connection fully accepted
INFO: ConnectionManager:Incoming connection fully accepted
INFO: ListenManager:ipv4://yyy.yyy.yy.yyy:58411/: [incoming] Received handshake with peer_id '-MO3000-023404528852'
INFO: ListenManager:ipv4://yyy.yyy.yy.yyy:58411/: Handshake successful handled
INFO: ConnectionManager:ipv4://yyy.yyy.yy.yyy:58411/: Incoming connection fully accepted
INFO: ListenManager:ipv4://yyy.yyy.yy.yyy:52429/: [incoming] Received handshake with peer_id '-MO3000-023404528852'
INFO: ListenManager:ipv4://yyy.yyy.yy.yyy:52429/: Handshake successful handled
INFO: ConnectionManager:ipv4://yyy.yyy.yy.yyy:52429/: Incoming connection fully accepted
INFO: ConnectionManager:Incoming connection fully accepted
INFO: ConnectionManager:Incoming connection fully accepted
INFO: ListenManager:ipv4://yyy.yyy.yy.yyy:41189/: [incoming] Received handshake with peer_id '-MO3000-023404528852'
INFO: ListenManager:ipv4://yyy.yyy.yy.yyy:41189/: Handshake successful handled
INFO: ConnectionManager:ipv4://yyy.yyy.yy.yyy:41189/: Incoming connection fully accepted
INFO: ConnectionManager:Incoming connection fully accepted
ERROR:HttpTrackerListener:Error processing announce from peer
System.ArgumentOutOfRangeException: Specified argument was out of the range of valid values. (Parameter 'port')
   at System.Net.IPEndPoint..ctor(IPAddress address, Int32 port)
   at MonoTorrent.TrackerServer.AnnounceRequest..ctor(NameValueCollection collection, IPAddress address)
   at MonoTorrent.Connections.TrackerServer.TrackerListener.Handle(NameValueCollection collection, IPAddress remoteAddress, Boolean isScrape)
   at MonoTorrent.Connections.TrackerServer.TrackerListener.Handle(String queryString, IPAddress remoteAddress, Boolean isScrape)
   at MonoTorrent.Connections.TrackerServer.HttpTrackerListener.ProcessContextAsync(HttpListenerContext context, CancellationToken token)

This should be fixed in master now!

Confirming the issue is fixed.


Allow disabling wrapping  tags in one liners.

Steps to reproduce the problem (provide example input)
Parser parser = Parser.builder().build()
HtmlRenderer renderer = HtmlRenderer.builder().build()
Node document = parser.parseReader('Here I have a test [link](http://www.google.com)')
String result = renderer.render(document)

Expected behavior:
result == "Here I have a test link"

Actual behavior:
result == "
Here I have a test link
"

I understand that this may be a breaking change, so an option on HtmlRenderer on this would be sufficient.

Hey. Can you go into a bit more detail why you want that? I'm not sure the option is the best way to solve it. E.g., for markdown like this:
* test

There's no
, but a
. Would you expect that to get stripped too? And if there's two paragraphs, you'd want to preserve the two
?

I guess the real question is why would I want the wrapping
 tag when my input did not have any leading/trailing whitespace?  Since I have no newlines in my input, I don't think you should assume that I want the default paragraph formatting on that text (block level, margins, etc).  If I had provided a newline, then sure...a
 tag makes sense.  I think the HTML equivalent on a single line would be a  since a span does not have default CSS, but why wrap it all all in this case?
However, in the example you've mentioned, the text should definitely be wrapped with a
 because the unordered list was explicitly requested via markdown.
For backwards compatability though, I think adding a multiline vs single line flag on HtmlRenderer would be a good option.

Note that you can already achieve this with the current API. What you have to do is after parsing, change the nodes from a structure like this:

document

paragraph

text
link

to this:

document

text
link

I've committed a test case that shows how to do that: https://github.com/atlassian/commonmark-java/commit/8b0fd7c73afaf1756edb6412c15a75cc423a6ba9
I'm pretty convinced that adding an option to HtmlRenderer is not the right way to solve this, because it would have to do a check when rendering a document for how many block-level nodes there are and then change how to render a paragraph later.
Maybe what we could add is support for parsing a single paragraph only (no block-level elements). But even that has a couple of edge cases depending on what you want to use it for.

Are you saying that libraries/apps that consume CommonMark should be aware of the HTML/DOM that is being generated and manipulate it accordingly?  I couldn't disagree with that assessment more.  That's extremely brittle and breaks every time HtmlRenderer changes.  Also, why use markdown in the first place if I have to manipulate the DOM after the fact?  I could also just use HTML to begin with.
The problem here is that CommonMark makes a bad assumption that a single line is a paragraph in the first place.  If this were a new library, I'd say it's a bad design decision that you change up front by default by not adding the
 tag for a single line.  Since it is not a new library, I'm proposing the option on HtmlRenderer solely for backwards compatability.

Are you saying that libraries/apps that consume CommonMark should be aware of the HTML/DOM that is being generated and manipulate it accordingly?

They have to be aware of the AST (abstract syntax tree, node structure), yeah.

That's extremely brittle and breaks every time HtmlRenderer changes.

No, it doesn't. To be clear, what I'm proposing is that you do this:

Parse the text
Manipulate the AST if needed
Render it using HtmlRenderer

The middle step is not dependent on how HtmlRenderer behaves. Not sure why you would think that?
We could add a utility method for this middle step, but I'm not sure about it yet. The method name would be something like unwrapParagraphIfDocumentContainsSingleParagraph(Node document)

The problem here is that CommonMark makes a bad assumption that a single line is a paragraph in the first place.

It's consistent with what the reference implementations commonmark.js and cmark do. I had a quick look and there's an open issue for the JS implementation here, but no replies yet: https://github.com/commonmark/commonmark.js/issues/152

Note that you can already achieve this with the current API. What you have to do is after parsing, change the nodes from a structure like this:

document

paragraph

text
link

to this:

document

text
link

I've committed a test case that shows how to do that: 8b0fd7c
I'm pretty convinced that adding an option to HtmlRenderer is not the right way to solve this, because it would have to do a check when rendering a document for how many block-level nodes there are and then change how to render a paragraph later.
Maybe what we could add is support for parsing a single paragraph only (no block-level elements). But even that has a couple of edge cases depending on what you want to use it for.

I had the same concerns as OP, but after thinking about DOM manipulation as well as the unit test code, this was easy enough to figure out.

Again, consumers should not be aware of or rely on any specific HTML or structure that is generated by this library.  I’m not arguing that it isn’t easy...it is incredibly easy.  However, it’s not future proof and it’s brittle.  It also completely defeats the purpose of using any rendering library (MD or otherwise) to have to post process and manipulate the results.  Think of it like a translator library.  If I call you to translate English to Spanish, should I manipulate the output or ask you for a specific dialect?  It’s no different for MD to HTML.
I’m not sure how else to explain that this is a bad design decision.  Coding around it is almost as painful as having to explain why.

If I call you to translate English to Spanish, should I manipulate the output or ask you for a specific dialect? It’s no different for MD to HTML

Reviving this thread. Taking your example @dustindclark , thinking about the translation context, I expect the translator does the translation without any extra step as you mean. So, bringing this example to MD to HTML, I also expect that the HTML translation been made fully wich means following some code conventions and good practices. That said, if we are asking to a lib translate for us a Markdown text to HTML, when we think in one single component in HTML is not a good practice to have not a tag defined, based on the HTML recommendations Use (always) meaningful tags
Let's assume that we implement this extension as you suggested. So, we would have something like:
  HtmlRenderer htmlRenderer = HtmlRenderer.builder().noParagraph().build();

  Document document = new Document();
  document.appendChild(parse("First Line [link](http://test.com)"));
  document.appendChild(parse("Second Line [link](http://foo.com)"));

  return htmlRenderer.render(document));

Generating an HTML such as
First Line link1Second Line link2

In the end, we do have some HTML content that is not following the good practices because of this extra new configuration. If this is your needs, it seems so specialized that you can't skip some HTML conventions. if this is the case that would be where the @robinst  example could be helpful.
I hope I added something to the discussion. :)

@samukce , first, there's absolutely nothing wrong with the generated HTML you've posted, and there's no HTML "good practice" that would indicate otherwise.  It's perfectly valid syntactically, and that's exactly how I would craft HTML if I didn't want a line break/or space between links.  Use (always) meaningful tags is nonsensical (all HTML tags mean something), so I don't know how to address that.  Do you mean semantic tags?  That's exactly my argument.  The author of this library made the assumption that each line in a MD document is a paragraph, even for a single line.  Semantically, if there's no newline, why would you assume that the content is a paragraph?
Second, while your example isn't really relevant because this feature request concerns one-liners, I don't think the example is a stretch of a use case.  However, the rendered HTML that you presented is not what I would expect the result to look like.  Your example has a newline in the document being processed, so I would expect that to be translated to HTML as a
 (since the noParagraph flag was set):
First Line link1

Second Line link2

Third, I would disagree that this is a specialized use case.  It's simply a use case, and again, none of the above HTML "skips HTML conventions".

Gotcha, thanks for share @dustindclark . So, assuming that you do have this valid html block, where would you inputs this html block? In a  container for instance?

@dustindclark How about you raise a PR to implement it? I'm curious what it would look like, and if we have code with tests it's much easier to talk about. I'm not opposed to adding something for this. My main question is, with the new option enabled, how would this be rendered?:
line 1

line 2

You have:
renderer.render(document);  // "
This is Sparta
\n"
expected
renderer.render(document);  // "This is Sparta"

I've raised a PR to add an omitSingleParagraphP option to HtmlRenderer.Builder for this, see: https://github.com/commonmark/commonmark-java/pull/340

This has been released in 0.23.0, see full changelog: https://github.com/commonmark/commonmark-java/blob/main/CHANGELOG.md#0230---2024-09-16


Analytics graphs

Proposed changes

Added schedule and runs stats graph(backend + frontend)
Added radial chart for workflow runs
Summarize your changes here to communicate with the maintainers and make sure to put the link of that issue

Types of changes
What types of changes does your code introduce to Litmus? Put an x in the boxes that apply

[ ] New feature (non-breaking change which adds functionality)
[ ] Bugfix (non-breaking change which fixes an issue)
[ ] Breaking change (fix or feature that would cause existing functionality to not work as expected)
[ ] Documentation Update (if none of the other choices applies)

Checklist
Put an x in the boxes that apply. You can also fill these out after creating the PR. If you're unsure about any of them, don't hesitate to ask. We're here to help! This is simply a reminder of what we are going to look for before merging your code.

[ ] I have read the CONTRIBUTING doc
[ ] I have signed the commit for DCO to be passed.
[ ] Lint and unit tests pass locally with my changes
[ ] I have added tests that prove my fix is effective or that my feature works (if appropriate)
[ ] I have added necessary documentation (if appropriate)

Dependency

Please add the links to the dependent PR need to be merged before this (if any).

Special notes for your reviewer:

@Saranya-jena backend checks are failing.


Mangadex java.security.cert.certpathvalidatorexception: Trust anchor certification path not found.

Device information

Neko version: <IP_ADDRESS>
Android phone & version: Huawei Media Lite 10 & Android 7.0

Steps to reproduce
Try to open Mangadex search or update library or read a chapter from library
Expected behavior
Everything works fine
Actual behavior
everything fails with trust anchor certificate issue
Other details
this is the same behaviour as this issue : https://github.com/tachiyomiorg/tachiyomi-extensions/issues/11895 , in my device Tachiyomi was failing too with same issue and applying solution provided in above link worked but same fix (add letsencrypt cert to device) didn't worked for Neko; also, this only happens with Neko and "open with webview", if I use "open with browser" Chrome can open succesfully Mangadex.

I am also having a similar problem.
Samsung Galaxy Note 5 running Android 7.0

I made a Neko backup and imported it in TachiyomiJ2K app with Mangadex source and it worked, I think I will stay with J2K app.

Tomorrow now. Some other things came up that I need to do before the release

Fixed in 2.9.0 you still will need to do the manual install of the cert.


Achievement keeps playing for no reason

Describe your bug here.
https://user-images.githubusercontent.com/101440491/168693820-acde69b7-bc0b-41e8-a483-a63105c7455a.mp4
This weird error keeps happening and it's annoying. I just beat week1 of my new engine, (with no misses), and this happened.
Command Prompt/Terminal logs (if existing)
No response
Are you modding a build from source or with Lua?
Source
What is your build target?
Windows
Did you edit anything in this build? If so, mention or summarize your changes.
I didn't touch anything with achievements.

weird bug try redownloading engine week 7 Achievement is coded in just wont play unless some bug happens

it's fresh, though.

it's fresh, though.

he didnt even say you were on another song

Your engine.


Use nftable rules for coreOS servers on masquerade

Use nftable rules for coreOS servers on masquerade
This PR check if iptables are enable and if not use nftables to configure rules for the masquerade interface binding.
related to:

https://github.com/kubevirt/libvirt/pull/26
https://github.com/kubevirt/kubevirt/pull/2428

Fixes #2400
Special notes for your reviewer:
Release note:

support nftable for coreOS

This change is

Hi @davidvossel thanks for the comments

Do we have any ci lanes that use nftables yet? or do we need to enable an okd lane before this is possible?

yes we need to wait for the okd-4.1 lane to test it here. I test it locally

I'd be in favor of removing the oc-3.11 lanes and introducing okd-4.1

I am not sure this is a good idea.
There are a lot of ocp 3.11 user that probably want to use kubevirt and as we already saw there is a big different between the two versions I think we should test on both for now.

There are a lot of ocp 3.11 user that probably want to use kubevirt and as we already saw there is a big different between the two versions I think we should test on both for now.

I'm only aware of the downstream CNV use case for ocp 3.11, and that is not tracking kubevirt master anymore.

I'm only aware of the downstream CNV use case for ocp 3.11, and that is not tracking kubevirt master anymore.

@davidvossel just curious. OpenShift is upstream too and may have users. Shoudn't we keep it (at least for a while)? Also, why do we still run Kubernetes 1.11.0?

@davidvossel @rmohr @fabiand @cynepco3hahue can you please take another look on this PR
I just add the related packages and install nftable using bazel instead of update the libvirt image.

/test pull-kubevirt-e2e-okd-4.1.0

/hold

/test pull-kubevirt-e2e-okd-4.1.0

/test pull-kubevirt-e2e-okd-4.1.0

@davidvossel just curious. OpenShift is upstream too and may have users. Shoudn't we keep it (at least for a while)? Also, why do we still run Kubernetes 1.11.0?

we'll likely be dropping k8s 1.11.0 from the test matrix soon as well. There are CRD features related to versioning we'd like to take advantage of soon that are not stable in k8s versions < 1.13.x. We'll see though :) There will be a discussion before anything happens.

Something wrong with the PR maybe?

Yes I know I am working to make it ready for another review.

/hold

/hold cancel

/test pull-kubevirt-e2e-okd-4.1.0

/test pull-kubevirt-e2e-okd-4.1.2

/test pull-kubevirt-e2e-okd-4.1.2

@SchSeba I rebuild the OKD image because of kubelet certificate valid only for one month.

/test pull-kubevirt-e2e-okd-4.1.2

/test pull-kubevirt-e2e-okd-4.1.0

/test pull-kubevirt-e2e-okd-4.1.0

/test pull-kubevirt-e2e-okd-4.1.0

/test pull-kubevirt-e2e-okd-4.1.0

/test pull-kubevirt-e2e-okd-4.1.0

/test pull-kubevirt-e2e-okd-4.1.0

I ran tests locally on okd-4.1.7 and it works fine, it still has failures(migration, configuration, and data volume), but it not connected to this PR.

/lgtm
/approve

/cherrypick release-0.17


Beginner's Guide Feedback from Lina Yeboah

Lina Yeboah, a Ghanaian student Edward is working with on the illegal mining use case has pointed out small errors/inconsistencies in the beginners guide:

[ ] The term elements, and objects are used several times but what is the difference between the two? Are datasets objects, if they are, then what are the elements?
[ ] Using xarrays is much easier with more functionality. But are there instances where xarrys may not be convenient and where numpy is necessary?
[ ]  In the products and measurements notebook, in the 'Visualizing available data' section, the dropdown menu is at the top left and not the top right as is written in the guide.
[ ] The explanation of the task graph in the 8 tutorial (Parallel Processing with Dask); point 2 should read Circles and not rectangles
[ ] In the Recommended Steps section, it mentions 6 tutorials but they are actually 8.
[ ] Are there some additional resources you could share with me to better my understanding of the Platform and how it works? I would appreciate it if you could share them with me.
[ ] I would also like to know the next steps from here.

I'm interested in following up with this. Will try and do so next week pending other commitments.

@andrewdhicks, I would appreciate a proofread for accuracy and hope these responses can be forwarded on to Lina.

[x] The term elements, and objects are used several times but what is the difference between the two? Are datasets objects, if they are, then what are the elements?
Elements and objects are not the same.
In Python, "objects" are a data type used to structure the programming language. In the Beginner's Guide 02_Products_and_measurements, we create an object called dc which refers to the datacube instance we create to connect to the Open Data Cube. The question was "are datasets objects?" Generally, yes. We load datasets as an object from the Open Data Cube.
"Elements" are part of coding terminology (not unique to Python) used to describe bits of code. Element refers to a value or item in a list. For instance, if we had a list:
list = [0, 1, 2, 3]
then this list has four elements. The first element is 0 (the first item in the list) and the second element is 1. See 06_Intro_to_numpy for more examples. (Note in that notebook we use numpy arrays, np.array(). `np.array is an object, but the items inside the square brackets are the elements.)

[x] Using xarrays is much easier with more functionality. But are there instances where xarrys may not be convenient and where numpy is necessary?
Not often, as xarray retains metadata and is much more useful when working with Earth observation data in the Sandbox.

[x] In the products and measurements notebook, in the 'Visualizing available data' section, the dropdown menu is at the top left and not the top right as is written in the guide.
Thank you, this has been fixed.

[x] The explanation of the task graph in the 8 tutorial (Parallel Processing with Dask); point 2 should read Circles and not rectangles
Point 1 and 2 are actually referring to the rectangles at the very bottom of the task graph (they are empty), not the circles. The circles hold the "load commands" referred to in Point 2.

[x] In the Recommended Steps section, it mentions 6 tutorials but they are actually 8.
Thank you, this has been fixed.

[x] Are there some additional resources you could share with me to better my understanding of the Platform and how it works? I would appreciate it if you could share them with me. I would also like to know the next steps from here.
Check out Real world examples to see how the Sandbox can be used to solve current issues. We recommend modifying the code to try your own area and time of interest.

This looks really good. Thanks @eefaye! Edward should be able to pass the feedback along to Lina.


About  mapper interface method parameter

I hope that mybatis can add functions like springmvc parameters to the mapper interface.
( like org.springframework.core.ParameterNameDiscoverer )
I think that each parameter is written @param a little too much.

@piumnl Thanks for your comment!
I am same as the suggestion of @piumnl .

ok


rclone ncdu - Invalid argument

What is the problem you are having with rclone?
running
rclone ncdu myremote:
causes:
2018/09/05 15:20:39 invalid argument

and fails.
all other rclone functions with that remote are working well, including the rclone serve.`
What is your rclone version (eg output from rclone -V)
rclone v1.43
- os/arch: linux/amd64
- go version: go1.11

Which OS you are using and how many bits (eg Windows 7, 64 bit)
Arch Linux 64-bit
Which cloud storage system are you using? (eg Google Drive)
Google Drive
(also replicated with OneDrive)
The command you were trying to run (eg rclone copy /tmp remote:tmp)
rclone ncdu myremote:
A log from the command with the -vv flag (eg output from rclone -vv copy /tmp remote:tmp)
2018/09/05 15:23:42 DEBUG : rclone: Version "v1.43" starting with parameters ["rclone" "-vv" "ncdu" "myremote:"]
2018/09/05 15:23:42 DEBUG : Using config file from "/home/user/.config/rclone/rclone.conf"
2018/09/05 15:23:42 invalid argument

I'm closing this issue as the problem seems be resolved. The fixed error message should should be much clearer and point to the source of the problem.
Feel free to reopen this or create a new issue if the problem persists.


Bump go version to 1.17.5

Description

Bump go version to 1.17.5.

Go 1.14 adds -d=checkptr as a compile-time option for adding instrumentation to check that Go code is following unsafe.Pointer safety rules dynamically. This option is enabled by default (except on Windows) with the -race or -msan flags, and can be disabled with -gcflags=all=-d=checkptr=0.

This lead to failed test cases related to some older dependencies. Disabling the check for now.
Go 1.17 changed how filenames were parsed in multipart forms https://github.com/golang/go/issues/45789. Filename no longer includes directory path in filename. dd03d1e adds a workaround to this change.
Type of change

Bug fix (non-breaking change which fixes an issue)
Internal change (not necessarily a bug fix or a new feature)

Linked tickets and other PRs

Refs https://github.com/gravitational/gravity/issues/2693
Requires https://github.com/gravitational/planet/pull/871

TODOs

[x] Self-review the change
[ ] Perform manual testing
[ ] Address review feedback
[ ] Update upstream references / tags / versions after upstream PR merges (linked above)

Is it worth writing any tests for ParseFilename?

Wouldn't hurt to add unit tests. Added a few test cases in 4e2afbb